背景
通过 debug 日志分析发现,每次发给 LLM 的请求中,系统消息约占 ~20KB(15KB system prompt + 5KB default skills),加上 70 个工具定义(6 内置 + 64 MCP),无论用户问的是"解释这段代码"还是"实现一个功能模块",LLM 都要处理同等量级的上下文。
问题 1:系统提示词缺乏按需裁剪
当前 getSystemPrompt() 返回的一整块 system message 包含 7 个工具的完整文档(每个约 1000-3000 字)。即使用户只需要一次简单的 read 查询,bash/write/edit/WebSearch/UpdatePlan 的详细用法也会全部塞进去。
此外,getDefaultSkillPrompt() 每次都注入 agent-drift-guard 和 plan-and-execute。对于"帮我解释这段代码"这种不可能漂移且无需执行计划的简单任务,约 5KB 的 skill 文档纯属浪费。
影响:
- 每次请求首轮默认吃掉 ~8K tokens 的系统开销
- 尤其是
agent-drift-guard 的自检循环指令("每步前确认目标、每步后自问偏离")本身就会消耗 token 和思考轮次
潜在方向:
- 按任务类型(读代码 / 写代码 / 纯问答)动态裁剪 system prompt 和 skills
- 或由 LLM 首轮快速判断后,在第二轮削减不必要的上下文
问题 2:工具列表过长
当前 getTools() 固定返回 6 个内置工具 + 所有已连接的 MCP 工具(如 playwright 的 23 个、fetch 的 6 个、memory 的 12 个、github 的 25 个)。每个工具带完整的 JSON Schema,所有工具的 Schema 加起来约 15KB。
对于一个简单问答("这个函数是干什么的"),LLM 仍需要遍历 70 个工具定义。agent-drift-guard 的指令会让 LLM 在每个步骤都思考"要不要调哪个工具"。
影响:
- 工具 Schema 在 system message 和 API
tools 参数中各出现一次(重复)
- 简单问答场景额外消耗约
8K+ tokens
潜在方向:
- 工具定义只放在 API
tools 参数中,system message 中移除重复的 Schema
- 根据任务复杂度动态裁减工具列表(如简单问答只保留 read/AskUserQuestion,复杂编码任务才挂全套)
讨论点
- 是否有必要让 system message 每次都带完整 tool docs,还是可以缩减为"看到 tools 参数即可"?
- 按任务类型动态裁剪 system prompt 是否可行?有没有风险评估(误判任务类型导致工具不可用)?
- 默认 skills 是否应该改为"按需注入"而非"每次都注入"?
- 有没有其他 CLI AI 工具(aider、codex 等)在这一块做得更好的参考?
背景
通过 debug 日志分析发现,每次发给 LLM 的请求中,系统消息约占
~20KB(15KB system prompt + 5KB default skills),加上 70 个工具定义(6 内置 + 64 MCP),无论用户问的是"解释这段代码"还是"实现一个功能模块",LLM 都要处理同等量级的上下文。问题 1:系统提示词缺乏按需裁剪
当前
getSystemPrompt()返回的一整块 system message 包含 7 个工具的完整文档(每个约 1000-3000 字)。即使用户只需要一次简单的 read 查询,bash/write/edit/WebSearch/UpdatePlan 的详细用法也会全部塞进去。此外,
getDefaultSkillPrompt()每次都注入agent-drift-guard和plan-and-execute。对于"帮我解释这段代码"这种不可能漂移且无需执行计划的简单任务,约5KB的 skill 文档纯属浪费。影响:
agent-drift-guard的自检循环指令("每步前确认目标、每步后自问偏离")本身就会消耗 token 和思考轮次潜在方向:
问题 2:工具列表过长
当前
getTools()固定返回 6 个内置工具 + 所有已连接的 MCP 工具(如 playwright 的 23 个、fetch 的 6 个、memory 的 12 个、github 的 25 个)。每个工具带完整的 JSON Schema,所有工具的 Schema 加起来约15KB。对于一个简单问答("这个函数是干什么的"),LLM 仍需要遍历 70 个工具定义。
agent-drift-guard的指令会让 LLM 在每个步骤都思考"要不要调哪个工具"。影响:
tools参数中各出现一次(重复)8K+tokens潜在方向:
tools参数中,system message 中移除重复的 Schema讨论点