Aklman · Library

05 / 第五章

推理与规划 · ReAct、分解与自我纠错.

好的 Agent 不只是执行指令 —— 它会拆解任务、制定计划、发现错误后回头修正。


研究助手现在能搜、能抓、有记忆,但它还是反应式的:搜一个读一个,撞了墙也不回头。好的 agent 先想再做 —— 先规划要查哪几个角度,发现来源矛盾时回头修正。这一章把「会调工具」变成「会研究」。

I

让它先想再做.

反应式的 agent 看一步走一步;好的 agent 先推理再行动。把「想」显式化,是质量的第一个杠杆。 ReAct 把这件事写成范式:每一步先输出一段推理(为什么调这个工具),再行动。1注 1Yao et al. · 「ReAct: Synergizing Reasoning and Acting in Language Models」(2022,arXiv:2210.03629)—— 把推理与行动交替:每步先推理再行动,把环境反馈带回下一步。现在模型把这步内建成 extended thinking —— 开 thinking: {type: "enabled", budget_tokens: N},模型会在 thinking 块里推理,再给出 tool_use 或答案(Opus 4.8 / 4.7 改用 {type: "adaptive"})。2注 2Anthropic 文档 · Extended thinking —— thinking: {type: enabled, budget_tokens: N} 让模型在 thinking 块里先推理再行动;Opus 4.8 / 4.7 改用 {type: adaptive};带工具时 thinking 块必须原样回传。截至 2026-05。
resp = client.messages.create(
    model="claude-sonnet-4-6", max_tokens=16000,
    thinking={"type": "enabled", "budget_tokens": 8000},
    tools=TOOLS, messages=messages,
)
# 关键约束:回传工具结果时,assistant 轮次要带上原样的 thinking 块
messages.append({"role": "assistant", "content": resp.content})  # 含 thinking + tool_use

带推理的工具调用(thinking 块要原样回传)

但想得多不等于想得对,也不是免费的 —— thinking token 要计费,延迟也涨。2注 2Anthropic 文档 · Extended thinking —— thinking: {type: enabled, budget_tokens: N} 让模型在 thinking 块里先推理再行动;Opus 4.8 / 4.7 改用 {type: adaptive};带工具时 thinking 块必须原样回传。截至 2026-05。简单任务别开;把它留给多步、要规划、要权衡的活。

II

把大任务拆成小步.

一个 agent 解决不了的难题,常常不是它不够聪明,是你让它一口吞下了整个任务。 分解的做法:让模型先产出一个计划(子任务列表),再逐个执行 —— plan-then-execute 在长任务上比一步到位更稳,因为计划可检查、可中断、可恢复。Anthropic 的 orchestrator-workers 模式就是分解的工程化:一个协调者把任务拆开,分给各个 worker。3注 3Anthropic · 「Building Effective Agents」(2024-12-19)—— orchestrator-workers 等模式:把复杂任务分解、由一个协调者拆给子任务。 别过度分解。把一个两步的活拆成七个子任务、每个子任务一次模型调用,是在用规划的名义烧钱加延迟。分解的价值,只在「步骤多到记不住、或需要中途检查」时才兑现。

III

发现错了能回头.

区分玩具和能用的 agent 的,往往不是它第一次做对的概率,是它做错后能不能自己发现并修正。 自我纠错有两个来源。一是环境反馈 —— 第三章那个带 is_error 的工具结果就是最好的纠错信号,喂回去,模型能改参数重试。二是自我反思 ——Reflexion 的做法是让模型在失败后写一段反思,带进下一轮上下文,下次就少踩同一个坑。4注 4Shinn et al. · 「Reflexion: Language Agents with Verbal Reinforcement Learning」(2023,arXiv:2303.11366)—— 让 agent 把失败的反思写进下一轮上下文,从反馈中自我纠错。 但自我纠错要有上限 —— 给纠错轮数设顶(呼应第二章的 max_steps)。一个会反思却停不下来的 agent,会在「我再试一次」里无限循环。反思要有,但要带刹车。 动手 · 给一个要两步以上的任务装上推理:
01

开推理,比计划质量

对同一个任务,开和不开 thinking 各跑一次,看它的下一步选择有没有变靠谱。
02

加一步「先列计划」

让模型在动手前先输出子任务列表,再逐个执行,感受 plan-then-execute 在长任务上稳在哪。
03

故意让一个工具失败

把工具错误喂回去、加一轮反思,看它能不能从这次失败里恢复 —— 别忘了给纠错轮数设上限。

会做对的 agent 很多, 会发现自己做错的才少。.

Many agents get it right; few notice when they got it wrong..

Aklman Library

讨论

讨论.

评论区初始化中…