常见错误

1. 把 Agent 写成一次模型调用

症状:模型输出了 toolCall,程序却直接把它显示给用户。

修正:扫描 assistant content,发现 tool call 后执行工具,把结果写成 toolResult,再继续请求模型。

2. 工具结果没有进入上下文

症状:工具明明执行成功,但模型下一轮还说“不知道文件内容”。

修正:工具结果必须追加到 messages,并且带上原始 toolCallId。

3. 会话只存最终答案

症状:重启后无法继续,压缩也没有材料。

修正:保存用户消息、助手消息、工具结果、模型切换、压缩摘要等结构化 entry。

4. 让模型直接决定危险副作用

症状:模型生成了删除文件、覆盖配置、执行危险命令的调用。

修正:为工具加路径限制、参数校验、before hook 和必要的人类确认。

5. 上下文压缩只做删除

症状:长会话能继续,但模型忘了之前的关键决策。

修正:用摘要替换旧消息,并保留最近消息原文。摘要最好包含已完成、关键文件、约束、待办、错误。

6. 扩展点侵入核心循环

症状:每加一个功能都要改 loop,最后核心越来越乱。

修正:核心 loop 保持小,把策略放到 hook、资源加载、工具定义和运行层。

7. UI 不展示中间事件

症状:用户只看到“卡住了”,不知道是在等模型还是工具。

修正:暴露 message_update、tool_execution_start/update/end,让 UI 能解释当前状态。