Skip to content

feat(tools): 工具结果折叠为一行摘要,ctrl+o 展开全文 - #19

Merged
zavier merged 1 commit into
mainfrom
feat/tool-summary-render
Aug 3, 2026
Merged

feat(tools): 工具结果折叠为一行摘要,ctrl+o 展开全文#19
zavier merged 1 commit into
mainfrom
feat/tool-summary-render

Conversation

@zavier

@zavier zavier commented Aug 3, 2026

Copy link
Copy Markdown
Owner

变更内容

LLM 工具(db_query / db_tables / db_discover / db_tools)此前未定义 renderResult,pi 的默认渲染把 content 全文展示在页面上——表数量多或 schema 大时刷屏。本 PR 给这 4 个常驻工具接入自定义渲染:

  • 默认(折叠):一行中文摘要 + ctrl+o 展开 按键提示(如 db_query:42 行 · 8ms(local/test_db)
  • 展开(ctrl+o,app.tools.expand:完整 content 全文
  • 错误/部分结果:错误红色展示、处理中… 提示

实现方式

  • tools/tool-result-summary.ts:纯函数(无 pi 导入),按各工具 details 形状生成摘要,未知形状返回 undefined——遵循仓库「逻辑不需要 pi API 时抽成纯函数」约定
  • tools/tool-result-render.ts:薄层 renderResult 工厂,只在 pi/TUI 边界做颜色与组件封装
  • db_tablesdetails 补充 columnCount / indexCountdb_discover 补充 databaseCount(供摘要使用,字段微小不影响模型上下文)
  • 渲染器抛错时 pi 的 tool-execution 自动回退默认渲染,无需兜底

注意renderResult 只影响页面展示,LLM 上下文仍收到完整 content(截断策略不变)——如需省 token 是另一个层面的调整。

验证

  • npx tsc --noEmit 通过
  • npx vitest run 256 个测试全通过(新增 tool-result-summary.test.ts 15 个用例)
  • npm run lint 0 errors(12 个存量 warning,无新增)
  • npm run fmt / fmt:check 通过

db_query/db_tables/db_discover/db_tools 此前未定义 renderResult,
pi 默认把 content 全文展示在页面上,表数量多或 schema 大时刷屏。

新增 tools/tool-result-summary.ts(纯函数,按 details 形状生成中文
摘要,未知形状返回 undefined)+ tools/tool-result-render.ts(薄层
渲染器工厂:isPartial 显示处理中、错误红色展示、展开态全文、折叠态
摘要 + keyHint 提示)。db_tables 的 details 补充 columnCount/
indexCount,db_discover 补充 databaseCount 供摘要使用。渲染器抛错
时 pi 自动回退默认渲染,无兜底负担。
@zavier
zavier merged commit 6516fe2 into main Aug 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant