狄云的所思所想

产品、技术想到哪写到哪

手搓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 思考 → 完成了
        ↓
你 ← 最终结果