姚顺雨:
给语言模型 装上手脚 与 思考
姚顺雨(Shunyu Yao),1997 年生于浙江,清华姚班本科毕业,普林斯顿大学博士(2024 年),导师 Karthik Narasimhan(GPT-1 论文合作者之一)。博士毕业后加入 OpenAI,参与 Deep Research、Computer-Using Agent(Operator)等明星项目。
他在 2022–2024 这关键三年里,几乎是独立勾勒出"语言智能体(Language Agent)"这一研究范式的基础骨架:让 LLM 不只生成文字,而是思考 → 行动 → 观察 → 反思,成为能与真实世界交互的智能体。今天几乎所有 Agent 框架(LangChain、AutoGPT、Claude Code…)都建立在他这套抽象之上。
四年,从一个 Benchmark 走到 通用 Agent
每一篇论文都解决前一篇暴露的瓶颈。ReAct 让 LLM 能行动;ToT 让它能搜索;Reflexion 让它能自我修正;CoALA 把这些拼成统一架构;SWE-bench/agent 把它推向真实软件工程;τ-bench 检验它能否真的可靠。
ReAct: Synergizing Reasoning and Acting in Language Models
它在解决什么问题
2022 年的 LLM 有两条互不相通的路:一边是 Chain-of-Thought(CoT),让模型"在脑子里"一步步推理,但完全脱离外部世界——它会瞎编事实,错了也不知道;另一边是 Act-only(如 WebGPT、SayCan),让模型直接输出动作(搜索、点击),但没有思考,遇到复杂问题就抓瞎。
ReAct 的洞察极其朴素:人类解决问题时,思考与行动是交织的。"我要查一下苹果公司创始人 → 搜索'Apple founder' → 噢结果说是 Wozniak 和 Jobs → 但题目问的是现任 CEO → 我得改搜'Apple CEO 2022'"。
它怎么做的
把 prompt 设计成一个三元组循环:Thought → Action → Observation。模型先输出一段自然语言"思考",再生成一个具体的"动作"(如 Search[Apple CEO]),环境返回"观察"(搜索结果),然后又回到下一轮思考。
就这么简单。没有改任何模型权重,只是改了 prompt 的结构。但效果惊人:在 HotpotQA、ALFWorld、WebShop 上全面超越 CoT 和 Act-only。
思考给行动方向,行动给思考事实锚点(grounding)。LLM 不再是"闭卷考试",而是"开卷+思考"。
为什么是里程碑
ReAct 是"LLM 即 Agent"这条范式的事实起点。今天你看到的 LangChain、AutoGPT、Claude/GPT 的 function calling,背后的循环结构几乎全是 ReAct。Google 在官方博客把它列为推理类突破之一。
Tree of Thoughts: Deliberate Problem Solving with Large Language Models
它在解决什么问题
ReAct 让 LLM 能"边想边做",但每一步思考还是只有一条路。错了就错到底——CoT 在数独、24 点这类需要规划和回溯的问题上表现极差(GPT-4 在 24 点上只有 4% 准确率)。
人类怎么解 24 点?我们会先猜"4×6=24,所以需要凑出 4 和 6",评估这条路有戏没戏,没戏就回头试另一条。这是经典的搜索。
它怎么做的
把"一个思考"作为树的一个节点,让 LLM 在每一步生成多个候选思考(分支),再让 LLM 自己给每个分支打分(评估),然后用 BFS 或 DFS 在这棵树上搜索。
四个关键设计:① 思考拆分粒度(一步一节点);② 思考生成(采样/枚举);③ 状态评估(LLM 自己 vote 或评分);④ 搜索算法(BFS/DFS)。
把经典 AI 的搜索(Newell & Simon, 1976)重新带回 LLM 时代——只不过节点不再是状态,而是自然语言中的一步思考。
为什么是里程碑
ToT 第一次明确把 LLM 推理变成"系统 2 慢思考"——可控、可回溯、可评估。今天的 o1、DeepSeek-R1 等"推理模型"的 inference-time search 思路,都能追溯到这里。
Reflexion: Language Agents with Verbal Reinforcement Learning
它在解决什么问题
ReAct 失败了怎么办?传统强化学习的答案是:用奖励信号去更新模型参数。但 LLM 太大、太贵、太黑箱,没人愿意每失败一次就梯度下降一次。
更要命的是:失败的信号往往非常稀疏(success/fail 一个比特),LLM 不知道具体哪里错了、下次该怎么改。
它怎么做的
把强化学习的"奖励 → 梯度 → 权重"这一套,换成"奖励 → 自然语言反思 → 记忆 → 下一次的 prompt"。三个角色:
· Actor(执行者):用 ReAct 风格做任务,产生轨迹。
· Evaluator(评估者):给轨迹打个粗略分(通过/不通过)。
· Self-Reflection(反思者):读完整条失败轨迹,用自然语言写出"我刚才为什么错了,下次应该怎么做"。
这段反思被存进 episodic memory,作为下一次尝试的 prompt 一部分。权重一点没动,只是 in-context 多了一段"经验之谈"。
梯度下降的本质是"积累经验"。如果模型本身已经够强(GPT-4 级别),那么用语言写下经验,比改权重便宜得多,也更可解释。
为什么是里程碑
Reflexion 是"Agent 自我改进"这个分支的奠基作。在 HumanEval 上把 GPT-4 从 80% 提升到 91%(超过当时所有训练过的模型)。今天 Claude/o1 的反思推理、AutoGPT 的循环改进,思路都来自这里。
CoALA: Cognitive Architectures for Language Agents
它在解决什么问题
到 2023 年中,Agent 论文已经爆炸:ReAct、ToT、Reflexion、Voyager、AutoGPT、Generative Agents…每篇都用自己的术语。这个领域急需一张"周期表",一套共同语言。
CoALA 借鉴了 1980 年代认知科学的 SOAR / ACT-R 经典框架(它们也是用来描述人类心智的),把当代语言智能体的所有组件归位。
它怎么做的
提出三个互相正交的维度:
① 记忆结构。 Working Memory(当前 context)+ 三种长期记忆:Episodic(过往经历)、Semantic(事实知识)、Procedural(技能与代码)。
② 动作空间。 分内部动作(Reasoning, Retrieval, Learning,都在脑子里)与外部动作(Dialogue 对话, Physical 物理 / 工具调用)。
③ 决策流程。 一个 Plan → Execute → Observe 的循环,规划阶段可以选择思考、检索、调工具…
ReAct 是"只有 Reasoning + Tool 动作"的 CoALA;ToT 是"在 Plan 阶段做内部搜索"的 CoALA;Reflexion 是"用 Learning 内部动作改写 Episodic Memory"的 CoALA。它们是同一棵树的不同分支。
为什么是里程碑
这是第一篇真正把"语言智能体"作为一个独立研究领域去定义和总结的论文。读完它,你就拥有了看任何新 Agent 论文都能"分类归位"的本领。
SWE-bench & SWE-agent: 真实软件工程的试金石
它在解决什么问题
之前的代码 benchmark(HumanEval, MBPP)都是玩具题:单文件、几十行、写个函数就完事。但真实软件工程长什么样?多文件、几万行依赖、要先看懂 issue、定位 bug、写补丁、跑测试。
SWE-bench 直接拉来 12 个流行 Python 仓库(Django, scikit-learn, sympy…)的 2,294 个真实 GitHub issue + 真实人类写的修复 commit + 真实测试套件。Agent 必须自己看代码、改代码,让测试通过。
它怎么做的
SWE-bench(评测集):自动化数据流水线,从 PR 历史抽取"issue + 修复前代码 + 修复后测试"。Agent 拿到 issue 文字和整个仓库,输出 patch;用真实测试评判。最初 GPT-4 + ReAct 只能解决 1.74%——震惊了整个领域。
SWE-agent(解决方案):核心贡献是 Agent-Computer Interface(ACI)——别让 Agent 直接用 bash,给它一组为 LLM 量身定制的命令:open file(带行号窗口)、edit lines(语法检查+回滚)、search(结构化结果)、submit。
不是模型不够强,是工具界面太人类化。LLM 看 bash 输出就像我们看十六进制——能看,但累。把界面改造成 LLM 友好的格式,性能立刻翻倍。
为什么是里程碑
SWE-bench 现在是所有 Coding Agent 的事实标准——Devin、Claude Code、Cursor、Cognition 都报这个分数。"ACI 设计"也成了 Agent 工程的核心抽象,启发了后来无数工作(包括 Anthropic 的 Computer Use)。
τ-bench: A Benchmark for Tool-Agent-User Interaction
它在解决什么问题
SWE-bench 把 Agent 推到了真实软件,但客服、金融、医疗这些每天用 Agent 的真实场景,没有合适的评测。它们的难点不在代码:
① 用户的需求是模糊和动态的("我想退个款" → Agent 必须追问哪笔订单);② 必须遵守领域政策("全额退款只在 7 天内");③ 调用真实数据库工具(不能瞎编订单号);④ 必须每次都对,而不是偶尔对。
它怎么做的
τ-bench 模拟两个真实场景(航空客服、零售客服):
· 真实数据库 + 真实工具 API;
· 用 LLM 模拟用户(带隐藏需求和性格);
· 写死的领域规则文档(数百页政策);
· 全新指标 pass^k:同一个任务独立跑 k 次都通过的概率,逼出真实可靠性。
过去的 benchmark 看 pass@1 或 pass@k(k 次中有 1 次对就算)。但商业部署里,不可靠的 Agent 是负资产。pass^k 把可靠性变成可量化的目标。
为什么是里程碑
结果触目惊心:GPT-4o 在零售场景 pass@1 是 61%,但 pass^4 只有 25%——连跑四次都对的概率只有四分之一。τ-bench 把行业的注意力从"能不能做"拉到了"能不能稳定地做",这是 Agent 走向工业级的关键拐点。
WebShop: Real-World Web Interaction with Grounded Language Agents
它的位置
WebShop 比 ReAct 还早几个月,是姚顺雨故事的起点——也正是因为他先做了 WebShop,发现 LLM 在网页环境里需要"思考",才有了 ReAct。
它怎么做的
从 Amazon 爬了 118 万真实商品,搭了一个仿真网店:有搜索框、商品列表、详情页、加购、下单。然后给 Agent 一段自然语言指令——比如"我要一件红色的、不超过 50 美元的、女士休闲长袖 T 恤"——让它自己搜索、浏览、对比、点击、下单。
当时主流方法是 imitation learning + RL,性能距离人类(59% 成功率)很远(10% 左右)。这个 gap 直接催生了 ReAct。
Benchmark 不只是评测,是研究的指南针。WebShop 揭示了"LLM 缺乏行动能力"这个具体问题,然后 ReAct、Reflexion、CoALA 都是在它指出的方向上展开的。
为什么值得读
读完前面六篇再回头读 WebShop,你会发现这是一个研究者怎样通过造一个好问题来开创一个领域的范本。方法论意义大于具体技术贡献。
把七篇论文串起来,
就是一部 Agent 范式诞生史
每篇论文都不是孤立的——它们彼此回应、互为基础。读完后你会发现,整条线讲的是同一个问题:如何让一个被训练来"预测下一个 token"的模型,变成一个能在真实世界里行动、思考、改进、可靠工作的智能体?
① 问题被定义
WebShop 提出"LLM 缺乏在真实环境中行动的能力"这一具体问题,造了第一个高保真测试场。
② 范式被建立
ReAct 给出第一个解:思考与行动交织。今天所有 Agent 框架的母型。
③ 推理被深化
ToT 把单步思考升级为多分支搜索,是 inference-time scaling、慢思考路线的鼻祖。
④ 自我改进被加入
Reflexion 引入语言版强化学习,让 Agent 不靠梯度也能进步——奠定 Self-improving Agent 的基础。
⑤ 理论被统一
CoALA 提供统一架构——记忆 × 动作 × 决策的三维坐标,从此 Agent 论文有了"周期表"。
⑥ 落地被推动
SWE-bench/agent 把 Agent 推向真实软件工程,并发明了 ACI 这一关键抽象。
⑦ 可靠性被定义
τ-bench 用 pass^k 指标把行业目标从"能做"提升到"稳定地做",为大规模商业部署立标。
⑧ 走进产品
姚加入 OpenAI,把这套理论变成了 Deep Research 和 Operator (CUA)——你今天能用到的 Agent 产品。