播客内容主线概览
ReAct:推理和行动要交替发生 。
ReAct 的核心思想是:LLM 不应该只是一次性生成答案,也不应该只是盲目调用工具,而是应该形成一个循环:先思考当前状态,再采取一个动作,比如搜索、调用 API、编辑代码、运行测试,然后观察结果,再继续思考。ReAct 论文里的表述是让 LLM 交错生成 reasoning traces 和 task-specific actions:推理帮助模型维护计划、处理异常,行动让模型接触外部知识库或环境。(arXiv)
这期里面 Shunyu 对 ReAct 的解释很有意思:ReAct 并没有改变外部世界,它真正改变的是 模型内部的上下文状态 。也就是说,“思考”本身也是一种 action,是一种 internal action。它不是通过梯度更新模型权重,而是通过上下文里的中间推理、观察结果、工具反馈,让模型在一次任务内变得更有方向感。
Harrison 也提到,今天很多 agent 框架虽然不再显式叫“ReAct agent”,但本质上仍然继承了 ReAct 的两点:一是用一个通用方法与不同环境交互,二是把“内心独白/推理”与工具使用结合起来。字幕里他们还提到,纯 function calling 往往缺少这种 inner monologue,所以实际工程中有时会在工具参数里加入 thought 字段,帮助模型先组织意图再填参数。(Latent Space)
Reflexion:用语言反馈替代传统 RL 的数值奖励 。
Reflexion的思想是:传统强化学习依赖 scalar reward,比如得分 0.7、奖励 +1,然后通过梯度更新模型;但人类很多时候不是这样学习的。人类会收到语言反馈,比如“你这一步做得不错,但那里漏掉了边界条件”,然后把这种反馈转化为下次行动的经验。
Reflexion 论文把这种方法称为 verbal reinforcement learning:agent 根据任务反馈写下反思,把这些反思放进 episodic memory buffer,后续试验时用这些文字记忆改善决策,而不是更新模型权重。(arXiv)
他们也强调了 Reflexion 的限制:它不是所有任务都适用。关键在于有没有好的 evaluator。如果是写代码,测试失败、编译错误、异常栈可以作为很强的反馈;如果是非常难的数学推理,而评价一个思路是否正确本身就和解题一样难,那么 reflection 的价值就会下降。另一个限制是延迟:用户面对客服 agent 时,不可能等它反思两小时。所以 reflection 更适合离线训练、数据生成、复杂任务搜索,或者有明确反馈信号的任务。
Tree of Thoughts:适合搜索型任务,不适合所有实时任务 。
Tree of Thoughts 的思路是把“思考”本身当成可以搜索的动作。普通 Chain-of-Thought 是一条路往下走,而 Tree of Thoughts 会生成多个中间思路,评估它们,必要时回溯。论文中说 ToT 让模型考虑多个 reasoning paths、自我评估选择,并在需要时 lookahead/backtracking;在 Game of 24 任务上,GPT-4 + CoT 只有 4% 成功率,而 ToT 达到 74%。(arXiv)
但他们在节目里没有把 ToT 神化。Harrison 的判断是:ReAct 最流行,因为简单、便宜、容易实现;Tree of Thoughts 计算成本高、实现更复杂,所以实际使用少得多。Shunyu 也把任务分成两类:一类是“搜索型任务”,比如数学证明、复杂代码题、可以尝试 100 次只要找到一个正确解;另一类是“反应型任务”,比如客服、订票、网页操作,要求快速、稳定、低延迟。ToT 更适合前者,ReAct 更适合后者。
memory:agent 的记忆不是“加个向量库”这么简单 。
他们讨论了 semantic memory、episodic memory、procedural memory。简单说:
semantic memory 是关于世界或用户偏好的知识,比如“用户喜欢意大利菜”;episodic memory 是经历过的轨迹和事件,比如“上次这个任务失败是因为 API 参数错了”;procedural memory 是“如何做某事”的技能,比如 Voyager 里存下来的代码片段或技能。Shunyu 说,这些分类来自认知科学,有助于思考问题,但不要把分类和具体实现绑定死:semantic memory 不一定必须是向量检索,procedural memory 也不一定必须 fine-tune。关键是先问清楚:这段信息是什么类型?存多久?何时取出?取出后怎么用?(Latent Space)
Harrison 提到,memory 在工程上仍然非常未解。它可能是知识图谱,也可能只是一个 instruction list;实际产品中“什么才是相关记忆”高度依赖应用场景。Shunyu 的类比也很有启发:人类也没有统一记忆系统,有人用 Google Docs,有人用 Notion,有人用纸笔;agent 未来也可能不是一个统一 memory store,而是一组可选择、可学习使用的记忆工具。(Latent Space)
benchmark 和 environment 比方法本身更重要 。
Shunyu 反复强调,AI agent 领域不是缺方法,而是缺好任务、好环境、好 benchmark。学术界经常在一个很简单的任务上堆复杂方法,提升 2%,但这不一定推动领域前进。他认为 benchmark 的设计很像产品经理工作:要平衡真实性、可扩展性、可自动评估、难度、实用性。
这也解释了为什么他们谈到了 WebShop、InterCode、SWE-bench、τ-bench。WebShop 是一个模拟电商环境,包含 118 万真实商品和 12,087 条众包指令,用来评估 agent 是否能根据自然语言需求浏览网页、搜索、选择并购买商品。(arXiv) InterCode 则把编程变成交互式环境:代码是 action,执行反馈是 observation,因为人类写代码本来就不是一次性吐出完整程序,而是不断运行、报错、修改、再运行。(arXiv) SWE-bench 更进一步,用真实 GitHub issue 和对应 PR 构造软件工程任务,要求模型理解代码库并修改多个文件解决问题。(arXiv)
SWE-agent 和 ACI:要像给人设计软件一样,给 agent 设计工具 。
这是整期最有工程启发的部分。SWE-agent 的论文标题就是 Agent-Computer Interfaces Enable Automated Software Engineering 。论文提出,LM agent 是一种新的 end user,它们有自己的能力和限制,因此也需要专门设计的 interface;SWE-agent 的自定义 ACI 提高了 agent 创建/编辑代码、浏览仓库、运行测试的能力。(arXiv)
节目里 Shunyu 说得更直接:在讨论 agent 本身之前,先讨论它使用的环境和工具。如果工具不好,比如编辑文件后没有反馈,模型不知道自己有没有引入语法错误,那么即使后面再加 planning、search、prompt engineering 都很难救。相反,工具好用之后,agent 设计可以简单很多。他甚至说“让工具好且可靠可能是整个 agent 的 90%”。(Latent Space)
这就是 ACI,也就是 Agent-Computer Interface。过去 HCI 是为人类设计界面;现在 ACI 是为模型设计界面。它包含工具输入 schema、返回结果格式、错误消息、上下文大小、是否给模型足够反馈、是否让模型容易自我修正。节目里举了一个很好的例子:错误信息对人类来说太长会烦,但对 LLM 来说,详细错误信息可能就是下一步修复的 prompt。
prompt engineering 正在从“玄学技巧”变成“清晰沟通” 。
Shunyu 的态度很明确:实际做任务时应该 minimalist。先用最简单的方法,如果不行,再加工具;如果还有明确理由,再加 reflection、tree search 等复杂机制。他不喜欢“你奶奶快死了所以你必须回答”这类奇怪 prompt hack。他认为随着模型越来越针对 CoT、tool use、agent 行为优化,好的 prompt 会越来越像和同事沟通:清晰、具体、合理。(Latent Space)
这点对工程师尤其重要。未来的能力不是“背 prompt 咒语”,而是能写清楚 spec、约束、例子、失败条件、评估标准。换句话说,prompt engineering 会退化为一种更基础但更重要的能力: 表达意图和设计接口 。
CoALA:agent 可以被拆成记忆、动作空间、决策过程 。
CoALA 论文试图给 language agent 一个更系统的认知架构框架:它把 agent 描述为具有模块化 memory、结构化 action space,以及 generalized decision-making process 的系统。(arXiv)
节目里他们把这套框架落到工程上:一个 agent 不是一个 LLM,而是“神经网络 + 调用神经网络的代码 + 工具 + 记忆 + 决策逻辑”。LangGraph 在这里就对应“用代码定义 agent 的部分决策结构”。Harrison 说,LLM 还不擅长复杂 planning,所以可以用代码帮它规划:一些必须执行的检查、循环、分支、状态转移,不一定都塞进 prompt,而是写成明确的 workflow。官方 LangGraph 文档也把它定义为用于构建、管理、部署 long-running、stateful agents 的低层 orchestration framework,并强调 durable execution、human-in-the-loop、memory 和 debugging。(LangChain Docs)
τ-bench:真实应用里最难的是稳定性和规则遵守 。
τ-bench 针对的是客服类 agent:一个 LLM 模拟用户,另一个 agent 扮演客服,并能调用领域 API、遵守政策规则。它关注的不是“模型能不能偶尔做出惊艳结果”,而是“面对 100 个用户,它能不能 99 次稳定做对”。论文摘要指出,现有 benchmark 没有充分测试 agent 与人类用户交互、遵守领域规则的能力;τ-bench 用 simulated user、API tools 和 policy guidelines 来模拟真实场景,并提出 pass^k 衡量多次试验中的可靠性。实验里,即使 GPT-4o 这类 function-calling agent 也低于 50% 成功率,retail 场景 pass^8 低于 25%。(arXiv)
这对产品落地很关键。研究型 demo 看平均分,商业系统看尾部风险、稳定性、可恢复性、合规性和用户体验。
真正有机会的应用和 UX 还远没定型 。
最后他们聊到应用。Harrison 认为已经比较明显有效的方向是 customer support;coding 方向很热,但他当时不愿直接说已经成功;research-style agents 也有机会,比如 SDR 数据补全、公司调研、法律研究等。他还特别强调“非聊天式 UX”:例如 spreadsheet-style agent,每个单元格是一个小 agent,可以批量跑公司研究;还有 background/ambient agent,比如邮件助理在后台处理,遇到需要你确认的事情再打断你。(Latent Space)
LangGraph Studio 的讨论也属于这个方向。Harrison 说 Studio 像 agent 的 IDE:代码里定义 graph,Studio 展示 graph,让你交互、测试,并通过 persistence layer 做 time travel/debug。更重要的是,agent 的构建会变成团队协作:工程师定义 cognitive architecture,产品或业务人员可能调整 prompt、配置、RAG 设置。(Latent Space)
我们能从中学到什么
最核心的是: agent 不是“LLM + prompt”,而是“LLM + 工具 + 记忆 + 环境 + 决策流程 + 评估系统 + 人机交互界面” 。
如果只盯着模型,会错过很多真正决定成败的东西。模型当然重要,但在 agent 系统里,工具设计、反馈设计、错误恢复、状态管理、评估数据、权限边界、上下文压缩、日志和可观测性,往往同样重要,甚至更重要。
第二: 先从简单架构开始,不要一上来堆复杂 agent pattern 。
ReAct 之所以影响大,不是因为它复杂,而是因为它简单、通用、低成本。Tree of Thoughts、Reflexion、MCTS、multi-agent 都有价值,但它们不是默认答案。判断是否要加复杂机制,可以问四个问题:这个任务是否真的需要搜索?是否有可靠 evaluator?是否允许高延迟?收益是否超过额外复杂度?如果答案不明确,先用简单 ReAct loop + 好工具 + 好评估。
第三: 工具返回值、错误消息、schema,本质上都是 prompt 。
传统后端工程师设计 API 时会关注类型、字段、幂等性、错误码、兼容性;做 agent 工程时还要多关注一层:这个 API 对 LLM 是否“可理解、可修正、可恢复”?例如,错误消息不要只写 failed,而要告诉模型失败原因、可修复方向、相关上下文。工具输出不要是一大坨难读 JSON,而应该结构清晰、字段命名有语义、结果量适中。
第四: memory 是产品设计问题,不只是技术组件 。
不要一想到 memory 就上 vector DB。先区分:要记的是用户偏好、历史对话、成功轨迹、失败经验、操作技能,还是业务事实?不同信息有不同生命周期、隐私等级、读取方式、更新方式。对于后端工程师,可以把 memory 理解成“事件日志的物化视图”:原始日志保留,抽取出的偏好/规则/经验作为可编辑、可审计、可压缩的状态。
第五: benchmark 是 AI 产品的地基 。
没有评估,就不知道 agent 是否真的变好。好评估不只是 accuracy,而是覆盖真实任务、边界条件、失败恢复、多轮交互、规则遵守和稳定性。做一个客服 agent,不应该只测“能不能回答一个问题”,还要测多轮对话中是否遵守退款政策、是否正确调用 API、是否在信息不足时追问、是否在重复运行中稳定成功。
第六: 未来 AI engineer 的价值越来越像“系统设计师 + 产品工程师 + 评估工程师” 。
过去在后端系统里做的很多能力,比如分层、状态管理、接口设计、错误处理、权限控制、日志观测、测试覆盖,在 agent 时代不仅没有过时,反而更重要。区别只是系统里多了一个不确定的 LLM 组件,你需要决定什么交给模型,什么写成确定性代码,什么放进工具,什么放进 memory,什么交给人确认。
实践出真知
如果想把这期内容变成自己的能力,实践步骤参考:
先做一个最小 ReAct agent。不要一开始追求 multi-agent。做一个循环:用户任务 → 模型思考下一步 → 调用一个工具 → 获得 observation → 继续。工具可以从简单的搜索、计算器、读文件、运行 Python、运行测试开始。重点不是功能多,而是你要亲自感受 observation 如何改变下一步决策。
然后专门优化工具界面。比如做一个代码编辑工具时,不要只返回“编辑成功”,而要返回 diff、语法检查结果、测试结果、可能的错误位置。把工具当成产品,把 LLM 当成用户。会发现很多 agent “变聪明”不是因为模型变强,而是因为环境终于给了它可用反馈。
接着做一个小型 eval harness。选 30 到 100 个真实任务,不要只用 toy case。每个任务定义输入、期望结果、允许的工具、判分方式、失败原因分类。每次改 prompt、改工具、改模型,都跑一次。从“感觉 agent 好像更强了”进入“我知道它在哪些场景更强/更弱”。
再引入 memory。先不要上复杂架构。可以从三张表开始:用户偏好、任务经验、失败案例。每次任务结束后,让模型或规则抽取一条可审计 memory;下一次任务开始前,根据用户、任务类型、工具类型取出相关 memory。把 memory 做成用户可查看、可删除、可修改的状态,而不是黑盒向量库。
最后尝试 LangGraph 这类显式工作流。它的价值不是“让 LLM 调用更简单”,而是让 agent 的状态、分支、循环、人工确认、失败恢复更可控。LangChain 当前文档也强调,agents 不只是简单 tool binding,而是支持连续工具调用、并行工具调用、基于结果动态选择工具、重试和跨工具调用的状态持久化。(LangChain Docs)
keypoints
第一, 不要把 agent 的智能只放在模型里;很多智能应该放在工具、环境、反馈和评估里 。
第二, 先简单,再复杂。ReAct 是默认起点;Reflection、ToT、MCTS 是在明确需要时才加的增强件 。
第三, 为 agent 设计 API,就像为人设计 UI。错误消息、字段名、schema、返回格式,都会影响模型表现 。
第四, memory 不是一个数据库选择题,而是信息生命周期设计题 。
第五, AI agent 产品的核心难点不是 demo 成功一次,而是稳定、可控、可解释、可评估地成功很多次 。
结语
LLM agent 的进步不只是模型能力的进步,而是“模型 + 工具 + 记忆 + 环境 + 评估 + UX”这一整套工程系统的进步 。对于软件工程师,最直接的启发是:未来做 AI 工程,传统后端架构能力会变得更有价值,只是需要把“API 给人用”升级成“API 同时给人和模型用”。