手搓Claude Code(2):遇到难回答的问题怎么办
2026-04-13
前面文章,我们给 AI 装上了手(Bash)和专属工具箱。现在的 Agent,看起来已经是个手脚麻利的精干小伙了。
但如果你真的丢给它一个极其复杂的问题:
帮我调研过去五年美国 AI 公司的融资趋势,对比国内情况,最后生成一份包含图表的万字分析报告。
面对这种量级的任务,大概率还是一场灾难。
灾难现场
没有规划能力的 Agent,处理问题靠的是直觉反应——拿到任务,立刻开干。
它会马上调用搜索工具,开始查美国 AI 公司的数据。查着查着,数据越来越多,它拼命往上下文窗口里塞。等终于查完美国,准备转头查国内的时候,问题来了:上下文窗口快满了,注意力开始涣散。它可能已经不记得任务还要求画图表,也可能在最后写报告时,把两国的融资数字悄悄搞混。
它其实并不蠢,只是还没想清楚怎么做,就已经开干了。
就像你让一个不带纸笔的人去操办一场百人年会。他跑去订场地,回来忘了通知餐饮;通知完餐饮,又忘了采购抽奖礼品。干一件事,忘一件事,最后彻底死机。
面对步骤繁杂的任务,光有执行力不够,还得有规划能力。而且要把计划写下来,不能只装在脑子里。
给 Agent 一个 todo
人类遇到复杂问题怎么办?找张纸,列个待办清单,做完一项划掉一项。
Agent 也需要这个习惯。我们可以给它植入一套硬性规则,或者直接提供一个专用todo工具:在真正动手之前,必须先调用任务规划工具,把大问题拆解成若干步骤,写在todo里。
加了这个机制之后,Agent Loop 就变成了这样:
你 → 丢出任务(写调研报告)
第一圈:AI 思考 → 任务太大,先拆解
↓ 调用 [todo 工具]
写下计划:
[ ] 步骤1:搜索美国过去五年 AI 融资数据
[ ] 步骤2:搜索国内过去五年 AI 融资数据
[ ] 步骤3:清洗数据,生成对比图表
[ ] 步骤4:撰写分析报告
第二圈:AI 更新 todo → 步骤1标为进行中
↓ 调用 [搜索工具],查询美国 AI 融资数据
返回大量原始数据
↓ 调用 [write_file 工具],将数据写入 us_data.txt(释放上下文)
写入完成 ✓
↓ 调用 [todo 工具],步骤1完成,步骤2进行中
[x] 步骤1:美国数据搜索完成
[>] 步骤2:搜索国内过去五年 AI 融资数据 ← 正在做
[ ] 步骤3:清洗数据,生成对比图表
[ ] 步骤4:撰写分析报告
第三圈:AI 更新 todo → 步骤2标为进行中
↓ 调用 [搜索工具],查询国内 AI 融资数据
返回大量原始数据
↓ 调用 [write_file 工具],将数据写入 cn_data.txt(释放上下文)
写入完成 ✓
↓ 调用 [todo 工具],更新进度
[x] 步骤1:美国数据搜索完成
[x] 步骤2:国内数据搜索完成
[>] 步骤3:清洗数据,生成对比图表 ← 正在做
[ ] 步骤4:撰写分析报告
...(后续圈次依此类推)
最后一圈:AI 思考 → 报告写完,所有步骤已完成
↓
你 ← 最终结果
todo 里有三种状态,各自有明确含义:
[ ]还没开始[>]当前正在做[x]已经完成
[>] 这个状态有一条强制约束:同一时间只允许一个步骤处于进行中。
Agent 天然喜欢同时推进很多事。这条约束强迫它收窄焦点:先把这件事做完,再动下一件。
有了写在外部的清单,AI 不需要把整个目标和所有细节都死记在脑子里。每到一个新的循环,只需要看一眼:现在该干哪步。上下文省出来了,注意力也跟着收拢。
还有一点没那么直观,但也很重要:计划可以改。如果步骤2的搜索一无所获,Agent 不会直接报错罢工,它会翻出 todo,把步骤2拆得更细,换个搜索词再试。
光有 todo 还不够
实际跑起来,还有个常见问题:AI 开头认认真真写了计划,做着做着就忘了回来更新。几轮过后,todo 还停在初始状态,跟没有一样。
解法不复杂。主循环可以记一个计数器,例如连续三轮没有更新 todo,就往上下文里塞一条提醒:
<reminder>你已经好几轮没有更新计划了,继续之前先刷新一下 todo。</reminder>
这条提醒的意思很简单:主循环不只负责执行动作,也要维护计划状态。 计划写了不更新,和没写没什么区别。
现在我们的 Agent 已经升级到了以下水平,你终于拥有了一个有待办清单的 Agent:
你 → AI 思考
↓ 任务太大,先拆解
调用 todo 工具,写下计划
[ ] 步骤1
[ ] 步骤2
[ ] 步骤3
↓
标记步骤1为进行中 [>]
↓ 调用工具执行
结果反馈
↓
步骤1完成 [x],步骤2进行中 [>]
↓ 调用工具执行
结果反馈
↓
(连续三轮未更新 todo)
<reminder>先刷新一下计划</reminder>
↓
更新 todo,继续执行
...
AI 思考 → 完成了
↓
你 ← 最终结果