Agent 不是“更强的提示词”,也不是把模型接上终端。它是一组逐层补齐的能力:推理、行动、工具使用、反馈、可复用经验,以及适配真实环境的接口。
这条线从 CoT 延伸到 SWE-agent。把六篇论文按“上一步已经解决了什么,人们接下来还想要什么”来读,名词表就会变成一张工程问题地图。
先给结论:六篇论文,六个能力缺口
| 论文 | 它回答的问题 | 留给工程的能力 |
|---|---|---|
| CoT | 复杂问题如何不只猜最终答案? | 显式中间推理 |
| ReAct | 推理如何接触外部环境? | Thought → Action → Observation 循环 |
| Toolformer | 模型如何知道何时、怎样用 API? | 工具使用的学习问题 |
| Reflexion | 一次失败如何影响下一次尝试? | 语言化反馈进入后续上下文 |
| Voyager | 成功行为如何不必每次重学? | 可执行 Skill 的积累与复用 |
| SWE-agent | 代码任务环境怎样才适合 Agent 使用? | 面向 Agent 的软件接口(ACI) |
它们不是六个互相替代的框架。更准确地说,后面的研究把 Agent 放进了更长、更真实的任务链条。
CoT:先把“答案”拆成过程
对于多步计算或符号推理,直接要求最终答案,系统无法暴露中间哪一步出了问题。Chain-of-Thought Prompting 的做法是提供“问题—中间推理—答案”的示例,让模型生成中间步骤再到达结论。
论文报告,在 GSM8K 等任务上,540B 参数的 PaLM 配合 8 个 CoT 示例取得了当时的领先表现。这是论文在特定模型与 few-shot 设置下的结果,不是所有模型都会自动获得的保证。Chain-of-Thought Prompting
CoT 解决的是“如何展开思考”。它没有让模型查询数据库、读取网页或运行程序;一条流畅的推理链仍可能建立在错误前提上。
关键洞察:CoT 让答案过程可见,但还没有让推理接受环境校验。
ReAct:把环境反馈送回下一轮推理
当问题依赖外部事实或真实操作时,人们自然会想:模型能不能先判断缺什么,再行动,再根据结果决定下一步?
ReAct 将 reasoning traces 和 actions 交织:模型输出 Thought 与 Action,运行时执行 Action 并返回 Observation,Observation 再成为下一轮 Thought 的输入。ReAct
论文在问答、事实验证及交互任务上评估该范式;在只给 1~2 个 in-context 示例的设置中,论文报告 ReAct 在 ALFWorld 与 WebShop 上相对相关基线分别有 34 与 10 个百分点的绝对提升。该数字只描述论文的对应实验,不能外推为任意 Agent 的成功率。ReAct
这也是工程里常见的 Agent loop:LLM → Action → Tool → Observation → LLM。重点不是把输出格式命名为 Thought,而是 Observation 必须来自可执行的外部环境。
关键洞察:CoT 让模型解释自己的思路;ReAct 让思路能够被现实结果修正。
Toolformer:把“能调工具”与“会用工具”分开
ReAct 描述了推理与行动如何交替,但仍有一层问题:模型如何判断要不要调用工具、选择哪一个 API、填哪些参数,以及如何使用返回值?
Toolformer 研究的正是这种自监督的工具使用学习:模型学习 API 的调用时机、参数与结果整合。Toolformer
这与今天工程里常说的 Function Calling 或 MCP 不能混为一谈:
| 层次 | 关注点 |
|---|---|
| ReAct | 推理、行动、观察如何组成一个运行循环 |
| Toolformer | 模型如何学习 API 使用行为 |
| Function Calling API | 应用怎样接收结构化调用请求 |
| MCP | Agent 客户端怎样与工具提供方建立标准连接 |
所以,tool_calls JSON 解决的是接口表达;它不等同于模型已经具备可靠的工具选择能力。一个工程系统仍要负责执行、校验参数、限制权限,并把结果回填到上下文。
关键洞察:协议让工具“可被调用”,学习与运行时设计才决定工具“会不会被正确调用”。
Reflexion 与 Voyager:经验要么成为反馈,要么成为资产
一个 ReAct 轨迹结束后,下一次类似任务能否少走弯路?Reflexion 的答案是把外部反馈转写为语言反思,保存为 episodic memory,在后续尝试时作为上下文使用;它并不要求更新模型权重。Reflexion
论文在 HumanEval 的特定设置中报告 91% pass@1,并以其中的 GPT-4 对照结果 80% 作比较。这个数字属于论文实验条件,不能当作当今模型或任意实现的通用结论。Reflexion
Voyager 再往前走一步:在 Minecraft 中结合自动课程、不断增长的可执行 Skill Library,以及环境反馈、执行错误与自我验证的迭代提示,让完成过的行为可被再次调用。Voyager
Reflexion 主要留下“下次应该注意什么”的语言反馈;Voyager 的 Skill Library 试图留下“已经会做什么”的可执行资产。两者都不是企业平台的现成蓝图:前者需要控制反思的质量与检索,后者的 Minecraft 结果也不能直接等同于业务系统。但它们明确了经验积累的两种工程形态。
关键洞察:反馈能减少重复犯错;被验证、可调用的行为才可能成为 Skill。
SWE-agent:能力还取决于 Agent 看见怎样的界面
把 Agent 放进代码仓库,任务不再只是回答:它要逐步浏览文件、搜索符号、局部修改、运行测试、读取报错,再决定是否继续。此时“给一个万能 shell”并不必然带来稳定的任务推进。
SWE-agent 提出 Agent-Computer Interface(ACI),讨论为仓库浏览、编辑与测试等活动设计更适合 Agent 的交互界面。论文在其评测设置中报告 SWE-bench 12.5% 和 HumanEvalFix 87.7% 的 pass@1;这些数值同样受模型、提示、接口和评测版本约束。SWE-agent
| 关注点 | 不利于 Agent 的接口 | 面向 Agent 的接口目标 |
|---|---|---|
| 浏览代码 | 一次返回大量无关内容 | 支持逐步定位与搜索 |
| 修改文件 | 整文件覆盖、难以审查 | 局部且可验证的编辑 |
| 执行测试 | 只有成功或失败 | 返回可定位、可继续推理的反馈 |
| 权限边界 | 任意命令直接执行 | 明确能力范围与审计点 |
这把讨论从“模型是否够聪明”推进到“环境是否给了恰当的可观察性与可操作性”。对于 Coding Agent,工具颗粒度、输出格式、沙箱和测试反馈都是能力的一部分。
关键洞察:Agent 的性能不只来自模型,也来自它能够安全、清楚地感知和操作的环境。
动手:跑一遍可验证的 ReAct 控制流
配套 demo 位于 GYA/c10-agent-theory-timeline。默认是离线 replay,Python 3.9+、无第三方依赖、无 API Key;它验证控制流,不模拟论文 benchmark,也不声称调用真实模型。
git clone https://github.com/renxin2024/GYA.git
cd GYA/c10-agent-theory-timeline
python3 main.py
本次以 python3 --version && python3 main.py 实际运行,输出如下:
Python 3.9.6
[Thought] I need an external fact before answering.
[Action] lookup({"query": "capital of France"})
[Observation] Paris is the capital and most populous city of France.
[Final Answer] The answer is Paris is the capital and most populous city of France.
[check] actions=1 observations=1 terminated=final_answer
跑通标准不是记住“巴黎”,而是看到一次 Action → Observation → Final Answer 的闭环。若执行时出现语法错误,请确认 python3 --version 不低于 3.9;若使用 --live 报 DEEPSEEK_API_KEY is required,这是正常的运行时保护,需配置密钥以及兼容的 LLM_API_URL、LLM_MODEL。本文未运行 --live,因此不报告其输出或效果。
下一步:按能力缺口设计,而不是按论文堆组件
读这条脉络时,最有用的问题不是“下一篇 Agent 论文叫什么”,而是:当前任务到底缺少推理展开、外部观察、工具选择、失败反馈、可复用 Skill,还是环境接口?
这个判断决定你该改 prompt、工具契约、记忆策略、Skill 流程还是执行环境。知识检索与 RAG 是另一条专题路线,本文不展开。
下一篇将从 Agent 运行轨迹出发,讨论怎样把反复出现、且已经验证过的做法沉淀为新 Skill。
理解检验
- 为什么 CoT 的中间步骤不能替代 ReAct 的 Observation?
- 为什么 Function Calling 的 JSON 契约不等于 Toolformer 的研究问题?
- Reflexion 的语言反馈与 Voyager 的可执行 Skill 分别留下了什么?
- 面对一个不稳定的 Coding Agent,为什么先审视 ACI 可能比先换模型更有效?
参考资料
- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- ReAct: Synergizing Reasoning and Acting in Language Models
- Toolformer: Language Models Can Teach Themselves to Use Tools
- Reflexion: Language Agents with Verbal Reinforcement Learning
- Voyager: An Open-Ended Embodied Agent with Large Language Models
- SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering

留言
欢迎分享你的想法。评论提交后会在审核通过后显示。