<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>论文精读 on Renxin's Blog</title><link>https://zh.renxinblog.cn/tags/%E8%AE%BA%E6%96%87%E7%B2%BE%E8%AF%BB/</link><description>Recent content in 论文精读 on Renxin's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Mon, 29 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zh.renxinblog.cn/tags/%E8%AE%BA%E6%96%87%E7%B2%BE%E8%AF%BB/index.xml" rel="self" type="application/rss+xml"/><item><title>第十话｜Agent 理论发展脉络：从 CoT 到 SWE-Agent</title><link>https://zh.renxinblog.cn/post/c10-agent-theory/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://zh.renxinblog.cn/post/c10-agent-theory/</guid><description>&lt;img src="https://zh.renxinblog.cn/images/c10-agent-theory-cover.png" alt="Featured image of post 第十话｜Agent 理论发展脉络：从 CoT 到 SWE-Agent" /&gt;&lt;!--
第十话演示代码: https://github.com/renxin2024/GYA/tree/main/c10-agent-theory-timeline（main.py + README）
演进主线: 阶段4 Agent 理论发展脉络 —— 从“会推理”到“会在环境中完成任务”
上一篇: 第九话｜Skill 系统：把做法变成资产
下一篇: 第十一话｜从 AgentLoop 看经验自进化
--&gt;
&lt;p&gt;Agent 不是“更强的提示词”，也不是把模型接上终端。它是一组逐层补齐的能力：推理、行动、工具使用、反馈、可复用经验，以及适配真实环境的接口。&lt;/p&gt;
&lt;p&gt;这条线从 CoT 延伸到 SWE-agent。把六篇论文按“上一步已经解决了什么，人们接下来还想要什么”来读，名词表就会变成一张工程问题地图。&lt;/p&gt;
&lt;h2 id="先给结论六篇论文六个能力缺口"&gt;先给结论：六篇论文，六个能力缺口
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;论文&lt;/th&gt;
					&lt;th&gt;它回答的问题&lt;/th&gt;
					&lt;th&gt;留给工程的能力&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;CoT&lt;/td&gt;
					&lt;td&gt;复杂问题如何不只猜最终答案？&lt;/td&gt;
					&lt;td&gt;显式中间推理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ReAct&lt;/td&gt;
					&lt;td&gt;推理如何接触外部环境？&lt;/td&gt;
					&lt;td&gt;Thought → Action → Observation 循环&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Toolformer&lt;/td&gt;
					&lt;td&gt;模型如何知道何时、怎样用 API？&lt;/td&gt;
					&lt;td&gt;工具使用的学习问题&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Reflexion&lt;/td&gt;
					&lt;td&gt;一次失败如何影响下一次尝试？&lt;/td&gt;
					&lt;td&gt;语言化反馈进入后续上下文&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Voyager&lt;/td&gt;
					&lt;td&gt;成功行为如何不必每次重学？&lt;/td&gt;
					&lt;td&gt;可执行 Skill 的积累与复用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SWE-agent&lt;/td&gt;
					&lt;td&gt;代码任务环境怎样才适合 Agent 使用？&lt;/td&gt;
					&lt;td&gt;面向 Agent 的软件接口（ACI）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;它们不是六个互相替代的框架。更准确地说，后面的研究把 Agent 放进了更长、更真实的任务链条。&lt;/p&gt;
&lt;h2 id="cot先把答案拆成过程"&gt;CoT：先把“答案”拆成过程
&lt;/h2&gt;&lt;p&gt;对于多步计算或符号推理，直接要求最终答案，系统无法暴露中间哪一步出了问题。Chain-of-Thought Prompting 的做法是提供“问题—中间推理—答案”的示例，让模型生成中间步骤再到达结论。&lt;/p&gt;
&lt;p&gt;论文报告，在 GSM8K 等任务上，540B 参数的 PaLM 配合 8 个 CoT 示例取得了当时的领先表现。这是论文在特定模型与 few-shot 设置下的结果，不是所有模型都会自动获得的保证。&lt;a class="link" href="https://arxiv.org/abs/2201.11903" target="_blank" rel="noopener"
 &gt;Chain-of-Thought Prompting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CoT 解决的是“如何展开思考”。它没有让模型查询数据库、读取网页或运行程序；一条流畅的推理链仍可能建立在错误前提上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：CoT 让答案过程可见，但还没有让推理接受环境校验。&lt;/p&gt;
&lt;h2 id="react把环境反馈送回下一轮推理"&gt;ReAct：把环境反馈送回下一轮推理
&lt;/h2&gt;&lt;p&gt;当问题依赖外部事实或真实操作时，人们自然会想：模型能不能先判断缺什么，再行动，再根据结果决定下一步？&lt;/p&gt;
&lt;p&gt;ReAct 将 reasoning traces 和 actions 交织：模型输出 Thought 与 Action，运行时执行 Action 并返回 Observation，Observation 再成为下一轮 Thought 的输入。&lt;a class="link" href="https://arxiv.org/abs/2210.03629" target="_blank" rel="noopener"
 &gt;ReAct&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="ReAct 的关键不是字段数量，而是环境反馈回到下一轮决策" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://zh.renxinblog.cn/images/c10-agent-theory-react-loop.svg"&gt;&lt;/p&gt;
&lt;p&gt;论文在问答、事实验证及交互任务上评估该范式；在只给 1～2 个 in-context 示例的设置中，论文报告 ReAct 在 ALFWorld 与 WebShop 上相对相关基线分别有 34 与 10 个百分点的绝对提升。该数字只描述论文的对应实验，不能外推为任意 Agent 的成功率。&lt;a class="link" href="https://arxiv.org/abs/2210.03629" target="_blank" rel="noopener"
 &gt;ReAct&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这也是工程里常见的 Agent loop：&lt;code&gt;LLM → Action → Tool → Observation → LLM&lt;/code&gt;。重点不是把输出格式命名为 Thought，而是 Observation 必须来自可执行的外部环境。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：CoT 让模型解释自己的思路；ReAct 让思路能够被现实结果修正。&lt;/p&gt;
&lt;h2 id="toolformer把能调工具与会用工具分开"&gt;Toolformer：把“能调工具”与“会用工具”分开
&lt;/h2&gt;&lt;p&gt;ReAct 描述了推理与行动如何交替，但仍有一层问题：模型如何判断要不要调用工具、选择哪一个 API、填哪些参数，以及如何使用返回值？&lt;/p&gt;
&lt;p&gt;Toolformer 研究的正是这种自监督的工具使用学习：模型学习 API 的调用时机、参数与结果整合。&lt;a class="link" href="https://arxiv.org/abs/2302.04761" target="_blank" rel="noopener"
 &gt;Toolformer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这与今天工程里常说的 Function Calling 或 MCP 不能混为一谈：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;层次&lt;/th&gt;
					&lt;th&gt;关注点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;ReAct&lt;/td&gt;
					&lt;td&gt;推理、行动、观察如何组成一个运行循环&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Toolformer&lt;/td&gt;
					&lt;td&gt;模型如何学习 API 使用行为&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Function Calling API&lt;/td&gt;
					&lt;td&gt;应用怎样接收结构化调用请求&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;MCP&lt;/td&gt;
					&lt;td&gt;Agent 客户端怎样与工具提供方建立标准连接&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以，&lt;code&gt;tool_calls&lt;/code&gt; JSON 解决的是接口表达；它不等同于模型已经具备可靠的工具选择能力。一个工程系统仍要负责执行、校验参数、限制权限，并把结果回填到上下文。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：协议让工具“可被调用”，学习与运行时设计才决定工具“会不会被正确调用”。&lt;/p&gt;
&lt;h2 id="reflexion-与-voyager经验要么成为反馈要么成为资产"&gt;Reflexion 与 Voyager：经验要么成为反馈，要么成为资产
&lt;/h2&gt;&lt;p&gt;一个 ReAct 轨迹结束后，下一次类似任务能否少走弯路？Reflexion 的答案是把外部反馈转写为语言反思，保存为 episodic memory，在后续尝试时作为上下文使用；它并不要求更新模型权重。&lt;a class="link" href="https://arxiv.org/abs/2303.11366" target="_blank" rel="noopener"
 &gt;Reflexion&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;论文在 HumanEval 的特定设置中报告 91% pass@1，并以其中的 GPT-4 对照结果 80% 作比较。这个数字属于论文实验条件，不能当作当今模型或任意实现的通用结论。&lt;a class="link" href="https://arxiv.org/abs/2303.11366" target="_blank" rel="noopener"
 &gt;Reflexion&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voyager 再往前走一步：在 Minecraft 中结合自动课程、不断增长的可执行 Skill Library，以及环境反馈、执行错误与自我验证的迭代提示，让完成过的行为可被再次调用。&lt;a class="link" href="https://arxiv.org/abs/2305.16291" target="_blank" rel="noopener"
 &gt;Voyager&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Agent 能力演进：从推理到行动、反馈资产与软件环境" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://zh.renxinblog.cn/images/c10-agent-theory-capability-map.svg"&gt;&lt;/p&gt;
&lt;p&gt;Reflexion 主要留下“下次应该注意什么”的语言反馈；Voyager 的 Skill Library 试图留下“已经会做什么”的可执行资产。两者都不是企业平台的现成蓝图：前者需要控制反思的质量与检索，后者的 Minecraft 结果也不能直接等同于业务系统。但它们明确了经验积累的两种工程形态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：反馈能减少重复犯错；被验证、可调用的行为才可能成为 Skill。&lt;/p&gt;
&lt;h2 id="swe-agent能力还取决于-agent-看见怎样的界面"&gt;SWE-agent：能力还取决于 Agent 看见怎样的界面
&lt;/h2&gt;&lt;p&gt;把 Agent 放进代码仓库，任务不再只是回答：它要逐步浏览文件、搜索符号、局部修改、运行测试、读取报错，再决定是否继续。此时“给一个万能 shell”并不必然带来稳定的任务推进。&lt;/p&gt;
&lt;p&gt;SWE-agent 提出 Agent-Computer Interface（ACI），讨论为仓库浏览、编辑与测试等活动设计更适合 Agent 的交互界面。论文在其评测设置中报告 SWE-bench 12.5% 和 HumanEvalFix 87.7% 的 pass@1；这些数值同样受模型、提示、接口和评测版本约束。&lt;a class="link" href="https://arxiv.org/abs/2405.15793" target="_blank" rel="noopener"
 &gt;SWE-agent&lt;/a&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;关注点&lt;/th&gt;
					&lt;th&gt;不利于 Agent 的接口&lt;/th&gt;
					&lt;th&gt;面向 Agent 的接口目标&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;浏览代码&lt;/td&gt;
					&lt;td&gt;一次返回大量无关内容&lt;/td&gt;
					&lt;td&gt;支持逐步定位与搜索&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;修改文件&lt;/td&gt;
					&lt;td&gt;整文件覆盖、难以审查&lt;/td&gt;
					&lt;td&gt;局部且可验证的编辑&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;执行测试&lt;/td&gt;
					&lt;td&gt;只有成功或失败&lt;/td&gt;
					&lt;td&gt;返回可定位、可继续推理的反馈&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;权限边界&lt;/td&gt;
					&lt;td&gt;任意命令直接执行&lt;/td&gt;
					&lt;td&gt;明确能力范围与审计点&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这把讨论从“模型是否够聪明”推进到“环境是否给了恰当的可观察性与可操作性”。对于 Coding Agent，工具颗粒度、输出格式、沙箱和测试反馈都是能力的一部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：Agent 的性能不只来自模型，也来自它能够安全、清楚地感知和操作的环境。&lt;/p&gt;
&lt;h2 id="动手跑一遍可验证的-react-控制流"&gt;动手：跑一遍可验证的 ReAct 控制流
&lt;/h2&gt;&lt;p&gt;配套 demo 位于 &lt;a class="link" href="https://github.com/renxin2024/GYA/tree/main/c10-agent-theory-timeline" target="_blank" rel="noopener"
 &gt;GYA/c10-agent-theory-timeline&lt;/a&gt;。默认是离线 replay，Python 3.9+、无第三方依赖、无 API Key；它验证控制流，不模拟论文 benchmark，也不声称调用真实模型。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/renxin2024/GYA.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; GYA/c10-agent-theory-timeline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 main.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;本次以 &lt;code&gt;python3 --version &amp;amp;&amp;amp; python3 main.py&lt;/code&gt; 实际运行，输出如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Python 3.9.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Thought] I need an external fact before answering.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Action] lookup({&amp;#34;query&amp;#34;: &amp;#34;capital of France&amp;#34;})
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Observation] Paris is the capital and most populous city of France.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Final Answer] The answer is Paris is the capital and most populous city of France.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[check] actions=1 observations=1 terminated=final_answer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;跑通标准不是记住“巴黎”，而是看到一次 &lt;code&gt;Action → Observation → Final Answer&lt;/code&gt; 的闭环。若执行时出现语法错误，请确认 &lt;code&gt;python3 --version&lt;/code&gt; 不低于 3.9；若使用 &lt;code&gt;--live&lt;/code&gt; 报 &lt;code&gt;DEEPSEEK_API_KEY is required&lt;/code&gt;，这是正常的运行时保护，需配置密钥以及兼容的 &lt;code&gt;LLM_API_URL&lt;/code&gt;、&lt;code&gt;LLM_MODEL&lt;/code&gt;。本文未运行 &lt;code&gt;--live&lt;/code&gt;，因此不报告其输出或效果。&lt;/p&gt;
&lt;h2 id="下一步按能力缺口设计而不是按论文堆组件"&gt;下一步：按能力缺口设计，而不是按论文堆组件
&lt;/h2&gt;&lt;p&gt;读这条脉络时，最有用的问题不是“下一篇 Agent 论文叫什么”，而是：当前任务到底缺少推理展开、外部观察、工具选择、失败反馈、可复用 Skill，还是环境接口？&lt;/p&gt;
&lt;p&gt;这个判断决定你该改 prompt、工具契约、记忆策略、Skill 流程还是执行环境。知识检索与 RAG 是另一条专题路线，本文不展开。&lt;/p&gt;
&lt;p&gt;下一篇将从 Agent 运行轨迹出发，讨论怎样把反复出现、且已经验证过的做法沉淀为新 Skill。&lt;/p&gt;
&lt;h2 id="理解检验"&gt;理解检验
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;为什么 CoT 的中间步骤不能替代 ReAct 的 Observation？&lt;/li&gt;
&lt;li&gt;为什么 Function Calling 的 JSON 契约不等于 Toolformer 的研究问题？&lt;/li&gt;
&lt;li&gt;Reflexion 的语言反馈与 Voyager 的可执行 Skill 分别留下了什么？&lt;/li&gt;
&lt;li&gt;面对一个不稳定的 Coding Agent，为什么先审视 ACI 可能比先换模型更有效？&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2201.11903" target="_blank" rel="noopener"
 &gt;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2210.03629" target="_blank" rel="noopener"
 &gt;ReAct: Synergizing Reasoning and Acting in Language Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2302.04761" target="_blank" rel="noopener"
 &gt;Toolformer: Language Models Can Teach Themselves to Use Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2303.11366" target="_blank" rel="noopener"
 &gt;Reflexion: Language Agents with Verbal Reinforcement Learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2305.16291" target="_blank" rel="noopener"
 &gt;Voyager: An Open-Ended Embodied Agent with Large Language Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2405.15793" target="_blank" rel="noopener"
 &gt;SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>