Lecture 11 · 长程智能体——在环境里规划与行动 · Long-Horizon Agents

Advanced Large Language Models Research Seminar · Lecture 11。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应 Maps to:CS486 课程描述的 “enhance LLM planning”——规划部分(第 8–11 讲)的最后一讲:从”先排好计划再执行”走向”在环境里一步步行动”的智能体;以及课程描述的 “toward AGI capabilities” 里最常被引用的一把尺子——智能体能可靠完成的任务有多长。 依据说明:CS486 没有公开的日程或讲义。本讲依据智能体的主要文献(ReAct、Reflexion、ADaPT、SWE-agent)、智能体基准(SWE-bench、WebArena、OSWorld、τ-bench)、时间跨度的研究(METR 的 Kwa et al. 2025、Ord 2025 及其后续讨论、Sinha et al. 2025)和智能体评测的方法论(Kapoor et al. 2024)。§2、§4、§6 的实验是本讲义自己设计的,数字全部来自配套代码的实际输出。 配套代码 Code:code/lecture11/(代码 01 只用标准库;代码 02、03 用 PyTorch,复用第 8 讲的提议者;每个脚本几秒钟) 预计阅读时间:3.5 小时(含运行代码)


0. 本讲导航 · How to read this lecture

0.1 学习目标 Learning goals

学完这一讲,你应该能够:

  1. 说出智能体和”一次生成”的区别(观察–思考–行动的循环、环境反馈、状态在环境里而不在模型里),以及 ReAct 等基本框架。
  2. 用恒定风险率模型推导时间跨度:每步出错率 e 时,50% 跨度 ≈ 0.69 / e;解释”收益递减的错觉”;说明恢复(发现错误并重做)在数学上等于降低风险率。
  3. 读懂 METR 的时间跨度:它测的是什么、怎样拟合、80% 跨度和 50% 跨度之比说明了什么,以及异质性怎样让风险率”看起来”下降。
  4. 在实验中区分各种”脚手架”(环境拒绝非法动作、执行前检查、记忆、检查点重试)对长任务成功率的作用,并知道它们会互相影响。
  5. 区分 pass@k 和 pass^k,估计智能体评测的方差,知道为什么要报告多次运行、成本和同成本的简单基线。
  6. 说出不可逆动作为什么特殊,以及”执行前验证”在不可逆环境里的作用。

0.2 先修与本讲范围 Prerequisites & scope

默认你已经会 Assumed本讲不展开 Not covered
第 2 讲:种子方差、置信区间、交互效应具体的智能体框架和工具协议的用法
第 4 讲:pass@k 的无偏估计多模态(截图)感知的细节
第 7 讲:外部反馈;定位反馈多智能体(第 12–16 讲)
第 9 讲:闭环(MPC)、记忆与兜圈子;第 10 讲:指数鸿沟、运行时重规划智能体安全的完整讨论(第 19 讲)

0.3 本讲地图 Map

§1  什么是智能体:观察–思考–行动;ReAct;工具与环境
§2  时间跨度的数学:恒定风险率、恢复、风险率的形状、METR 式拟合、pass^k        ← 代码 01
§3  基准与现状:SWE-bench、WebArena、OSWorld、τ-bench、METR 时间跨度
§4  实验:一个在环境里行动的小智能体——脚手架、任务长度、风险率               ← 代码 02
§5  让长任务可靠:恢复、检查点、记忆、分层分解、不可逆动作
§6  评测智能体:pass^k、方差、脚手架的交互、成本                              ← 代码 03
§7  现状与开放问题
§8–12  小结、常见误区、练习、延伸阅读、下一讲预告

1. 什么是智能体 · What is an agent?

1.1 观察–思考–行动

到目前为止,模型要么一次写出答案(第 3–7 讲),要么一次写出计划(第 8 讲)、由别人执行。智能体(agent)不一样:它在一个环境里循环——

观察(网页、终端输出、文件、用户的回复) → 思考 → 行动(点击、运行命令、调用工具、回复用户) → 新的观察 → ……

一个任务可能要几十到几百步。和”一次生成”相比,有三个根本的区别:

  1. 状态在环境里,不在模型里。第 8 讲的提议者失败,主要是因为它要在”脑子里”追踪积木的位置;智能体每一步都能看到真实的状态(第 9 讲 §4.2 的闭环)。
  2. 环境会反馈:命令报错、测试失败、网页没有那个按钮。这是第 7 讲说的”外部反馈”,是智能体能自我纠正的主要来源。
  3. 行动有后果:发出的邮件、删除的文件、下的订单不能撤回。一个错误的思考可以重来,一个错误的行动不一定能。

1.2 ReAct 与它的后继

ReAct(Yao et al. 2023,ICLR)让 LLM 交替写”思考”(Thought)和”行动”(Action),环境返回”观察”(Observation)。在 ALFWorld(文本家务环境)上,ReAct(PaLM-540B,两个示例)成功 71%,只行动不思考的版本 45%,用约 10 万条示范训练的模仿学习基线 37%;在 WebShop 上 40% vs 30.1% vs 29.1%。思考帮助智能体追踪子目标、处理意外;行动让思考建立在真实的观察之上。

此后的发展大致沿三个方向:

  • 从失败中学习:Reflexion(Shinn et al. 2023)在任务失败后让模型写一段”反思”,放进下一次尝试的上下文,不更新权重。HumanEval 上 pass@1 91%(当时 GPT-4 基线 80%);ALFWorld 上比强基线绝对提高 22 个点。
  • 分解:ADaPT(Prasad et al. 2024)只在执行失败时才把任务分解成子任务(“按需分解”),比”先完整规划再执行”和”一步一步执行”都好——在 ALFWorld、WebShop、TextCraft 上最多分别提高 28.3、27、33 个点。
  • 为智能体设计环境接口:SWE-agent(Yang et al. 2024)发现,给 LLM 设计专门的”智能体–计算机接口”(ACI:简洁的文件查看、编辑、搜索命令,带有清晰的错误信息)比让它直接用 Linux shell 好得多;在 SWE-bench 上解决 12.5% 的问题。这一点和本讲 §4 的实验一致:同一个模型,环境的设计决定了它能做多长的任务。

1.3 和规划的关系

第 8–10 讲的规划是”先想好再做”;智能体常常是”边做边想”。两者的结合是第 9 讲的 MPC:每一步重新规划、只执行第一步。智能体的难点不在于单步的决策有多难,而在于很多步连在一起——这就是下一节的数学。


2. 时间跨度的数学 · The mathematics of horizons

代码:01_horizon_math.py(只用标准库,约 4 秒)。

2.1 恒定风险率

最简单的模型:每一步独立地以概率 e 犯下致命错误(之后无法恢复)。走完 L 步的概率是 (1−e)L(1-e)^L,成功率为 s 的任务长度(“s 跨度”)是

Ls=ln⁡sln⁡(1−e)≈−ln⁡se,L50%≈0.69e.L_s = \frac{\ln s}{\ln(1-e)} \approx \frac{-\ln s}{e}, \qquad L_{50\%} \approx \frac{0.69}{e}.

单步准确率50% 跨度(步)80% 跨度(步)100 步的成功率
95%1440.6%
98%341113.3%
99%692236.6%
99.5%1384560.6%
99.9%69322390.5%

这和第 10 讲的 pmp^m(m 条约束全部满足)、第 9 讲世界模型的误差累积是同一个算术。两个推论:

  • 收益递减的错觉(Sinha et al. 2025,“The Illusion of Diminishing Returns”):单步准确率从 99% 提到 99.5%,看起来只提高了 0.5 个百分点(在短任务基准上几乎看不出来),50% 跨度却从 69 步翻倍到 138 步。短任务上的”进步放缓”可能对应长任务上的指数增长。
  • 反过来:单步 98% 的智能体做 100 步的任务,成功率只有 13%。一个”在每一步上都很强”的模型,在长任务上可能完全不可靠。

2.2 恢复等于降低风险率

如果错误发生时能以概率 d 被发现并重做(多花一步),等效风险率就变成 e(1−d)e(1-d)。e = 2% 时(演示 2):

发现率 d等效风险率100 步的成功率50% 跨度成功时平均执行步数
02.00%13.3%34100.0
0.51.00%36.6%69101.0
0.90.20%81.9%346101.8
0.990.02%98.0%3,465102.0

发现 90% 的错误,跨度扩大 10 倍,代价只是多走不到 2 步。“更不容易出错”和”出错了能发现、能恢复”在数学上是一回事——而后者往往便宜得多。发现错误需要外部信号:命令的报错、测试、验证器(第 7、8 讲)。智能体的可靠性很大程度上是环境的性质,不只是模型的性质。

LeCun 等人有一个流行的论证:自回归模型每个 token 都有出错的概率,长输出的出错概率指数增长,所以自回归模型”注定”不可靠。这个论证正是恒定风险率模型——它的漏洞也正在这里:如果错误可以被发现和纠正(推理模型写”等一下,这不对”,智能体看到报错后重试),风险率就不是常数。

2.3 METR 的时间跨度

METR(Kwa et al. 2025,“Measuring AI Ability to Complete Long Tasks”)把这个想法变成了一把尺子:

  • 170 个软件和研究工程任务(HCAST 97 个、RE-Bench 7 个、SWAA 66 个),每个任务有人类专家的完成时间(几秒到 8 小时以上)。
  • 对每个模型,拟合 P(成功)=σ(β⋅(log⁡h−log⁡ttask))P(\text{成功}) = \sigma\big(\beta \cdot (\log h - \log t_{\text{task}})\big)——成功率对人类用时的对数做 logistic 回归。h 就是 50% 时间跨度:模型能以 50% 概率完成的任务,人类要花多久。
  • 结果:前沿模型的 50% 跨度大约每 7 个月翻一番(207 天,95% 区间 166–240 天);2025 年初 Claude 3.7 Sonnet 约 50 分钟。80% 跨度比 50% 跨度短 4–6 倍(约 5 倍),翻倍时间相近(204 天)。
  • 作者自己强调的局限:任务比现实工作更”整洁”(有自动评分、边界清楚),在更”混乱”的任务上表现差得多;外推到真实工作要谨慎。

Ord(2025,“Is there a half-life for the success rates of AI agents?”)指出,如果风险率恒定,成功率随任务长度指数衰减,50% 跨度就是”半衰期”。后来的再分析(Hamilton 用 Weibull 分布拟合 METR 的数据,Ord 在后续文章中采纳了这个修正)发现风险率随任务进行而下降。

2.4 80% / 50% 之比诊断风险率的形状

Weibull 生存函数 S(t)=exp⁡(−(t/λ)κ)S(t) = \exp(-(t/\lambda)^\kappa) 下,t80%/t50%=(ln⁡0.8/ln⁡0.5)1/κt_{80\%} / t_{50\%} = (\ln 0.8 / \ln 0.5)^{1/\kappa},只取决于形状参数 κ(演示 3):

κ1.0(恒定风险率)0.80.70.6
80% 跨度 / 50% 跨度0.3220.2420.1980.151
50% 跨度是 80% 的3.1 倍4.1 倍5.0 倍6.6 倍

METR 的”短 4–6 倍”对应 κ ≈ 0.63–0.82:风险率随任务进行而下降。实际意义:比 50% 跨度长得多的任务,成功率比指数模型预测的高;短任务上则更不可靠。

但风险率”下降”不一定说明智能体”越做越顺”。演示 4:让每个任务各自是恒定风险率、只是难度不同(风险率服从对数正态分布,平均每步 1%),混在一起看——

难度的离散程度00.51.01.5
80% / 50%0.3220.3030.2500.188
等效 κ1.000.950.820.68

难的任务早早失败,留下来的都是容易的,总体的风险率就”下降”了。这是生存分析里的脆弱性(frailty)效应:总体曲线的形状不能直接解释成个体的行为。§4.4 会在真实的智能体上看到它。

2.5 拟合的不确定性

演示 5 模拟 METR 式的拟合:真实 50% 跨度 60 分钟,任务的人类用时在 1 分钟到 16 小时之间(对数均匀),每个任务跑一次,重复 200 次:

任务数50% 跨度估计的 90% 范围(真值 60 分钟)
5029–84 分钟
17035–67 分钟
100045–55 分钟

两个教训。第一,170 个任务时估计的范围约 ±30%:倍数级别的趋势(每 7 个月翻一番)经得起这样的噪声,相邻两个模型之间的比较经不起。第二,1000 个任务时范围不包含真值:对数时间上的 logistic 不是指数衰减的正确形状,任务越多,函数形式的偏差越显眼。同样的原因,真实风险率恒定时,logistic 拟合出的 80% / 50% 之比是 0.377 而不是 0.322;METR 的 0.17–0.25 比这个基准小得多,所以”风险率下降”的结论只会更强。

2.6 pass@k 与 pass^k

智能体是随机的。对同一个任务跑 k 次:

  • pass@k:至少一次成功的概率(第 4 讲)。适合有验证器挑选的场合——多试几次,总有一次对。
  • pass^k(τ-bench,Yao et al. 2024):k 次全部成功的概率,无偏估计为 (ck)/(nk)\binom{c}{k} / \binom{n}{k}(n 次里成功 c 次)。适合直接面对用户的场合——客服智能体不能 8 次里错 3 次。

平均成功率相同,pass^k 可以完全不同(演示 6,三组任务的 pass@1 都是 60%):

任务的成功率分布pass@8pass^2pass^8
每个任务都是 60%100%36%2%
40% 的任务 100%、60% 的任务 33%98%47%40%
Beta 分布(很分散)87%48%28%

τ-bench 发现,即使是 gpt-4o 这样的函数调用智能体,也只能完成不到一半的任务,而且很不一致:零售领域 pass^8 不到 25%。如果每个任务的成功率都一样(约 60%),pass^8 只有 2%;实际的 25% 说明一部分任务是稳定能做对的,其余的”有时成功、有时失败”。只报告 pass@1 掩盖了这些。


3. 基准与现状 · Benchmarks

基准环境规模发布时的结果
SWE-bench(Jimenez et al. 2024)真实 GitHub 仓库的 issue,用单元测试判定2,294 个任务,12 个 Python 仓库Claude 2 + BM25 检索 1.96%;SWE-agent 12.5%
WebArena(Zhou et al. 2024)自建的真实网站(购物、论坛、代码托管、地图)数百个任务最好的 GPT-4 智能体 14.41%,人类 78.24%
OSWorld(Xie et al. 2024)真实的操作系统桌面(Ubuntu、Windows、macOS)369 个任务最好的模型 12.24%,人类 72.36%
τ-bench(Yao et al. 2024)与模拟用户对话 + 调用领域 API(零售、航空)零售领域 115 个任务gpt-4o 不到 50%,零售 pass^8 < 25%
METR 时间跨度(Kwa et al. 2025)软件与研究工程任务,按人类用时分档170 个任务50% 跨度每约 7 个月翻一番

几点要注意:

  • 这些数字是发布时的。之后的模型和智能体框架在这些基准上进步很快(SWE-bench 后来有了人工筛选过的 500 题子集 SWE-bench Verified,前沿系统在上面的成绩已经很高)。具体的最新数字以官方排行榜为准。
  • 分数衡量的是模型 + 脚手架 + 环境这个整体。同一个模型,换一个智能体框架、换一个工具接口(SWE-agent 的 ACI),成绩可以差很多(§4 的实验)。
  • 很多基准的任务数只有几百个,每次运行很贵,环境本身也有随机性(网页、用户模拟器)——§6 的方差问题在这里更严重。Kapoor et al.(2024,“AI Agents That Matter”)还指出:很多智能体基准没有合适的留出集,智能体可能针对基准走捷径。

4. 实验:一个在环境里行动的小智能体 · A small agent in an environment

代码:02_agent_in_environment.py(约 2 秒)。

4.1 设置

  • 智能体:第 8 讲的提议者。每一步它看到(当前状态, 当前子目标),对所有候选动作(“把场上任何一块积木搬到另一块积木或桌子上”,不管合不合法)给出概率,选一个(agent_lab.RawPolicy)。
  • 环境:积木世界。不合法的动作(例如搬一块上面还压着东西的积木)由环境处理。
  • 长任务:依次达到 K 个随机的目标状态(“工单”),每个子目标 3 块积木。每个子目标都在提议者的训练分布里,所以”任务越长越难”只来自步数的累积——和 Sinha et al. 把”执行”从”规划”中分离出来研究是同一个思路。每个子目标的步数预算是”最短步数 × 3 + 2”。
  • 五种设置(agent_lab.AgentConfig):
设置不合法的动作记忆检查点
A 不可逆、贪心执行了就失败无无
B 不可逆 + 执行前检查执行前用规则检查,不合法的不执行无无
C 环境拒绝非法动作环境返回错误,智能体换一个无无
D C + 经验记忆同 C不再做”会回到走过的状态”的动作无
E D + 检查点重试同 C同 D子目标失败时退回子目标开始时的状态,最多重试 3 次(温度 1.0)

4.2 单个子任务

设置成功致命超时无路可走和环境交互
A 不可逆、贪心58%38402.4
B 不可逆 + 执行前检查75%02504.0
C 环境拒绝非法动作75%02505.8
D C + 经验记忆85%01055.5
E D + 检查点重试97%0038.8

(3 块积木,100 个子任务。4 块积木时同样的五种设置是 37% / 40% / 40% / 50% / 81%。)

每一层保护都有用。值得注意的是 B 和 C:成功率完全一样(同样的决策序列),区别只是 B 不碰环境——在不可逆的环境里,动作之前的验证替代了环境的宽容(§5.4)。

4.3 任务越长,差别越大

完成全部 K 个子目标的比例:

设置K = 1K = 2K = 4K = 8K = 16K = 32
A58%35%16%0%1%0%
C75%61%40%14%9%2%
D85%71%57%26%17%3%
E97%95%91%82%63%54%
E 的预测:0.97^K97%94%89%78%61%38%

(K 个子目标平均最少需要 2、4、9、18、35、70 步。)

单个子任务上 D 和 E 只差 12 个点;K = 16 时差 46 个点。这就是”收益递减的错觉”:单步的小改进,在长任务上被指数地放大。

按 METR 的方式拟合(把所有长度的任务合在一起,成功率对 log(最少步数) 做 logistic 回归):

设置50% 跨度(步)80% 跨度(步)80% / 50%
A2.81.50.52
C5.62.20.39
D8.93.50.39
E71.218.90.27

同一个模型,“时间跨度”可以差 25 倍——取决于环境会不会拒绝非法动作、有没有记忆、能不能退回检查点。METR 测的是”模型 + 脚手架 + 环境”的整体;比较不同模型的跨度时,脚手架和环境必须相同。

4.4 风险率在下降——为什么?

0.97^K 系统性地低估了长任务的成功率(K = 32:预测 38%、实际 54%)。把”已经完成 j − 1 个子目标的任务里,在第 j 个子目标失败的比例”按 j 分组(K = 32):

设置第 1 个第 2–4 个第 5–8 个第 9–16 个第 17–32 个
C20.0%19.4%20.8%14.1%6.2%
D17.0%14.0%14.5%9.1%8.9%

风险率随任务进行而下降。可是设置 C 的智能体每一步只看当前状态,没有任何”经验”——它不可能越做越好。原因是任务之间的异质性(演示 5):每个任务的积木名是固定的一组字母,不同组合的难度不同。40 组随机的字母、每组 40 个子任务,成功率平均 77.9%,组间标准差 10.6%(如果所有组一样难,只靠抽样误差应为 6.6%);最难的一组 52%,最容易的 100%。难的组合早早失败,活到后面的都是容易的——正是 §2.4 的脆弱性效应。

这提醒我们:METR 数据里风险率的下降,同样可能部分来自任务(或运行)之间的异质性,而不只是”智能体越做越顺”。

另一个方向的效应:我们的智能体看不到自己之前的错误,所以不会”被自己的错误带偏”。Sinha et al. 发现 LLM 会——他们在对话历史里人为注入不同比例的错误答案,后面回合的准确率随注入的错误率下降(自我条件化,self-conditioning),而且这不只是长上下文本身的问题;扩大模型不能消除它,带思考的 Qwen3 模型则不受影响。对于把整段历史放进上下文的 LLM 智能体,风险率可能随任务进行而上升;两种效应同时存在时,总体曲线的形状取决于哪个更强。


5. 让长任务可靠 · Making long tasks reliable

§2 的数学告诉我们,长任务的成功率由有效风险率决定。降低它有几类办法:

5.1 让错误能被发现

环境的报错、测试、验证器把”致命错误”变成”可恢复的错误”(§2.2:发现率 90% → 跨度扩大 10 倍)。SWE-agent 的 ACI 设计的核心之一,就是让每个命令都给出清晰的、能指导下一步的错误信息。写代码的智能体先写测试、每次修改后运行测试,是同一个思路。

5.2 检查点与回溯

在可以回退的环境里(代码仓库有 git、网页可以后退、文档有版本历史),失败时退回检查点重试,是最便宜的恢复方式(§4 的设置 E:单个子任务 85% → 97%,32 个子目标 3% → 54%)。第 9 讲的树搜索(LATS、Koh et al.)把这一点推到极致:在环境里展开多个分支、回退、比较。前提是环境可以回退。

5.3 记忆与分解

  • 记忆防止兜圈子(第 9 讲 §4.2)。但记忆的设计很重要:§6.3 会看到,“禁止做会回到走过的状态的动作”这种硬性的记忆,在智能体本来就有随机性时反而有害;练习 3 把它改成”降低而不是禁止”后,两种情况都大幅提高。
  • 分解:把长任务分成子任务,每个子任务有自己的检查点和验证(ADaPT 的按需分解;第 10 讲 MACI 的依赖图)。分解本身不降低总步数,但它让”发现错误”和”回退”有了自然的边界。注意第 10 讲 §6.2 的教训:拆分会改变每一部分看到的输入。

5.4 不可逆的动作

在不可逆的环境里,“出错—发现—重做”行不通:发出的邮件、删除的数据、成交的订单无法撤回。§4.2 的 A 和 B 说明了另一条路:在执行之前验证。B 的环境和 A 一样不可逆,但智能体在执行前检查动作是否合法,成功率从 58% 提到 75%,和”环境宽容”的 C 一样。

对真实的智能体,这意味着:

  • 区分可逆和不可逆的动作;对不可逆的动作,执行前做额外的检查(模拟执行、dry run、规则检查、向用户确认);
  • 把不可逆的动作推迟到最后、集中起来确认(先准备好所有的修改,确认无误后一次提交);
  • 记录已经执行的不可逆动作(第 10 讲练习 6:重规划时它们属于”不能改”的集合)。

第 9 讲 §6.4 说过,闭环 MPC 需要环境”容得下”一步走错;这一节是它的另一面:容不下的时候,验证必须前移。


6. 评测智能体 · Evaluating agents

代码:03_evaluating_agents.py(约 2 秒)。让 §4 的智能体变成随机的(采样温度 0.7),在 100 个任务(3 块积木、4 个子目标)上各跑 16 次。

6.1 pass^k

智能体pass@1pass@8pass^2pass^8pass^16
采样61%88%51%40%36%
采样 + 检查点重试 3 次88%98%82%67%63%

100 个任务里,“采样”智能体 16 次全成功的 36 个、全失败的 5 个,其余 59 个都是”有时成功”。pass@8 是 88%,pass^8 只有 40%——同一个智能体,两种指标差 48 个点。用哪一个取决于使用方式:有验证器挑选(例如代码有测试)时 pass@k 有意义;直接面对用户时,pass^k 才是用户的体验。

6.2 种子方差

同样的 100 个任务,只换随机种子、每题跑一次:“采样”智能体的成功率在 55% 到 65% 之间,“采样 + 重试”在 85% 到 92% 之间。一篇论文只报告一次运行的结果,这个范围就是它没告诉你的误差(第 2 讲)。

6.3 脚手架和成本

决策记忆最多重试成功率因”无路可走”失败和环境交互的次数
贪心无040.0%0.0%15.6
贪心有057.0%18.0%17.9
采样无061.5%0.0%16.5
采样有052.1%18.1%17.6
采样无387.0%0.0%28.5
采样有392.1%7.5%30.7
采样无795.8%0.0%33.1
采样有796.4%3.4%34.6

两个发现:

  1. 脚手架之间会互相影响。贪心决策时,记忆有帮助(40.0% → 57.0%:它打破了确定性的来回横跳);采样、不重试时,记忆反而有害(61.5% → 52.1%)——随机性本身已经能打破循环,而硬性的记忆把通向走过的状态的动作全部禁止,堵死了需要绕回去的路(“无路可走”从 0% 升到 18.1%);加上重试之后,记忆又变得有帮助(重试 3 次:87.0% → 92.1%),因为退回检查点时记忆被清空。“加一个模块总不会更差”是错的;每个组件的价值要在完整的系统里、和其他组件一起测——第 2 讲的交互效应和析因设计。
  2. 简单的”失败就重试”很强。没有记忆、最多重试 7 次:95.8%,平均交互 33.1 次;加上记忆:96.4%、34.6 次。Kapoor et al.(2024)在 HumanEval 上发现了同样的事:失败就重试、逐步提高温度的简单基线,达到了复杂智能体(如 LATS)的准确率,成本低得多。比较”更复杂的智能体”时,要和同样成本的简单基线比,最好画出成功率–成本曲线。

6.4 小基准上的比较

两个差距不大的智能体(上表重试 3 次的”无记忆”87.0% 和”有记忆”92.1%,差 5.1 个点),随机抽 n 道题、各跑一次,排名反了或打平的概率:

题目数102050100
排名反了或打平50%38%22%12%

100 道题时,差别的 95% 自助法区间:每题只跑 1 次 [+0.0, +15.0] 个百分点,每题跑 8 次 [+1.4, +9.1]。真实的智能体基准任务更少、每次运行更贵、环境本身也有随机性;一个 5 个点的”提高”,在几十道题、一次运行的评测里几乎没有信息量。

可靠的智能体评测报告至少应该包括:多次运行的均值和置信区间;pass^k(或至少每个任务成功率的分布);成本(调用次数、token、时间);和同成本的简单基线的比较;脚手架和环境的完整描述。


7. 现状与开放问题 · State of the field

  • 时间跨度在快速增长(METR:约 7 个月翻一番),但测量依赖”整洁”的任务;在更混乱、没有自动评分的真实任务上,智能体的表现差得多。时间跨度是”模型 + 脚手架 + 环境”的性质。
  • 可靠性(pass^k)落后于能力(pass@k):智能体常常”能做到”但”不能每次都做到”。对面向用户的部署,一致性比峰值能力更重要。
  • 恢复机制(报错、测试、检查点、回退)是延长时间跨度最便宜的方式,它们很大程度上是环境设计的问题。
  • 评测方法还不成熟:任务少、方差大、成本不透明、缺少留出集;Kapoor et al. 的批评在 2024 年之后仍然适用于很多论文。

研究问题:

  1. 风险率随任务进行而下降,有多少来自任务之间的异质性、多少来自智能体真的”越做越顺”?怎样设计实验区分(例如对同一个任务的不同阶段单独测量)?
  2. 自我条件化(Sinha et al.)在长程智能体里有多严重?哪些上下文管理方式(摘要、只保留当前状态、清除失败的尝试)能缓解它?
  3. 怎样给智能体设计”恰到好处”的记忆——防止兜圈子,又不堵死需要回头的路?
  4. 在不可逆的环境里,执行前的验证能做到多可靠?哪些动作应该交给人确认?

8. 小结 · Summary

  1. 智能体在环境里循环:观察 → 思考 → 行动。状态在环境里、环境会反馈、行动有后果——这三点让它和”一次生成”根本不同。
  2. 恒定风险率:50% 跨度 ≈ 0.69 / e;单步 99% → 99.5%,跨度翻倍(收益递减的错觉);发现并重做 90% 的错误,跨度扩大 10 倍。
  3. METR:50% 跨度约每 7 个月翻一番;80% 跨度短 4–6 倍,对应风险率随任务进行而下降(κ ≈ 0.63–0.82)。但异质性本身就会让总体的风险率”下降”;170 个任务时 50% 跨度的估计约 ±30%。
  4. pass^k 衡量一致性:平均成功率相同,pass^8 可以是 2% 也可以是 40%。
  5. 实验:同一个小智能体,环境拒绝非法动作、记忆、检查点让 50% 跨度从 2.8 步到 71.2 步;K = 32 时成功率从 0% 到 54%。风险率随任务进行而下降,原因是任务之间的异质性,不是智能体越做越好。
  6. 不可逆的环境里,执行前的验证替代了环境的宽容(58% → 75%)。
  7. 评测:pass@8 88% 的智能体 pass^8 只有 40%;换随机种子成功率差 10 个点;脚手架之间会互相影响(记忆对贪心有益、对采样有害);简单的重试基线很强;5 个点的差距在 20 道题上 38% 的概率排名反了。

9. 常见误区 · Common pitfalls

  1. “模型在单步上 99% 准确,所以它是可靠的智能体。” 100 步之后只剩 37%。
  2. “短任务上进步放缓了,说明能力到顶了。” 单步准确率的小提高对应长任务上的大提高(收益递减的错觉)。
  3. “METR 的时间跨度是模型的属性。” 它是模型 + 脚手架 + 环境的属性;同一个模型的跨度可以差一个数量级。
  4. “风险率随任务进行而下降,说明智能体会在任务中学习。” 异质性(难的任务早早失败)本身就会产生这个现象。
  5. “pass@1 是 60%,用户大多数时候会满意。” 看 pass^k:如果每个任务都是 60%,连续 8 次成功只有 2%。
  6. “加了记忆 / 反思 / 规划模块,智能体一定更好。” 组件之间会互相影响;要在完整的系统里做消融,并和同成本的简单基线比较。
  7. “跑一次、几十道题,A 比 B 高 5 个点,A 更好。” 这样的评测里,排名反了的概率可能接近一半。
  8. “出错了重试就好。” 只在可逆的环境里成立;不可逆的动作要在执行前验证。

10. 练习 · Exercises

练习 1(时间跨度的算术)。(a) METR 的 50% 跨度每 7 个月翻一番。如果现在是 1 小时,多久之后达到 1 周(40 个工作小时)?(b) 如果 80% 跨度始终是 50% 跨度的 1/5,那时 80% 跨度是多少?(c) 这个外推依赖哪些假设?

参考答案:(a) log⁡240≈5.3\log_2 40 \approx 5.3 次翻倍,约 37 个月(3 年左右)。(b) 8 小时,约一个工作日。(c) 翻倍速度保持不变(历史趋势的外推;METR 自己指出 2024 年可能加速了);任务的”整洁程度”和真实工作相同(METR 承认真实任务更混乱);人类用时是任务难度的好度量;脚手架和环境的进步与模型的进步一样被计入。任何一条不成立,外推都会偏。

练习 2(τ-bench 的反推)。gpt-4o 在 τ-bench 零售领域 pass^1 约 60%、pass^8 不到 25%。(a) 如果每个任务的成功率都是 60%,pass^8 应该是多少?(b) 用”一部分任务总能做对(比例 q)、其余任务成功率为 r”的两类模型,找一组和这两个数一致的 (q, r)。

参考答案:(a) 0.68≈1.7%0.6^8 \approx 1.7\%——远低于 25%,说明任务之间很不一样。(b) 需要 q+(1−q)r=0.6q + (1-q) r = 0.6、q+(1−q)r8≈0.25q + (1-q) r^8 \approx 0.25。r 不大时 r8r^8 很小,所以 q≈0.25q \approx 0.25,r≈(0.6−0.25)/0.75≈0.47r \approx (0.6 - 0.25)/0.75 \approx 0.47(r8≈0.002r^8 \approx 0.002,不影响)。即:约四分之一的任务稳定能做对,其余任务的成功率不到一半。这只是一种分解;连续分布(如 Beta)也能拟合。要真正知道,需要每个任务的成功次数。

练习 3(软记忆)。§6.3 的硬性记忆在采样智能体上有害。把它改成”软”的:会回到走过的状态的动作,概率乘以 0.1,而不是禁止。预测并检验结果。

参考答案(草稿目录里实际运行,和 §6.3 相同的 100 个任务、不重试;采样跑 8 次):贪心时,无记忆 40.0%、硬记忆 57.0%(§6.3)、软记忆 88.0%;采样时,无记忆 61.5%、硬记忆 52.1%(§6.3)、软记忆 87.9%。软记忆在两种情况下都远好于硬记忆:它让智能体倾向于新的状态,但在别无选择时仍然可以回头。设计脚手架时,“禁止”往往比”不鼓励”脆弱——这和第 9 讲 §5.6 的”不知道比自信地错好”是同一类教训。

练习 4(异质性还是学习)。§4.4 的风险率下降来自积木名的难度差异。设计一个实验,判断一个真实的 LLM 智能体在长任务里风险率下降,是来自任务之间的异质性,还是来自智能体在任务过程中”越做越顺”。

参考答案要点:(1) 同一个任务内比较:把每个任务切成前后两半,分别作为独立的短任务(从中间状态开始)测试;如果后半段单独测试时的失败率也低,说明后半段本身容易(异质性在任务内部);如果单独测试时失败率和前半段一样高、只有连续执行时才低,说明智能体在前半段获得了有用的上下文(“越做越顺”)。(2) 控制任务的选择:用同样难度的子任务拼成长任务(像我们的实验,但让每个子任务的难度都先单独测过、相近),看风险率是否仍然下降。(3) 打乱上下文:在长任务进行到一半时,清空或替换智能体的历史,看后面的失败率是否上升——如果上升,历史是有用的;如果下降,可能是自我条件化在起反作用。

练习 5(不可逆动作)。一个帮用户整理邮箱的智能体可以:读邮件、加标签、归档、永久删除、回复、转发。(a) 哪些是不可逆的?(b) 对每个不可逆的动作,设计一种”执行前验证”。(c) 用 §2.1 的模型估计:一个 100 步的任务里有 10 步是不可逆的,不可逆的动作出错率 1%、可逆的出错后 90% 能被发现,任务的成功率大约是多少?

参考答案要点:(a) 永久删除、回复、转发(发出去就收不回);加标签、归档可以撤销。(b) 永久删除:先移到回收站,任务结束时汇总确认;回复 / 转发:先存草稿,列出收件人和内容让用户确认,或者用规则检查(不转发给外部域名、不包含敏感词)。(c) 可逆的 90 步:等效风险率取决于它们的出错率 e,设 e = 1%,则 0.01×0.1=0.0010.01 \times 0.1 = 0.001,(0.999)90≈91.4%(0.999)^{90} \approx 91.4\%;不可逆的 10 步:(0.99)10≈90.4%(0.99)^{10} \approx 90.4\%;合计约 82.6%。10 步不可逆的动作贡献了和 90 步可逆的动作差不多的失败——执行前验证(把不可逆动作的出错率降到 0.1%)能把它提到约 90%。

练习 6(公平的比较)。你提出了一个新的智能体框架,在 30 个任务上各跑一次,比基线高 6 个点。审稿人要求补充什么?

参考答案要点:(1) 多次运行(例如每个任务 5–8 次)的均值和置信区间,以及配对的差别的区间(同一个任务上两个智能体的差);(2) 成本:调用次数、token、墙钟时间;(3) 同成本的简单基线(重试、提高温度、多数投票);(4) pass^k 或每个任务成功率的分布;(5) 消融:每个新组件单独去掉的效果,最好是析因设计(组件之间可能有交互,§6.3);(6) 在留出的任务上的结果(没有被用来调提示词和框架的任务)。§6.4 的数字说明,30 个任务、一次运行、6 个点的差距,排名反了的概率不小。


11. 延伸阅读 · Further reading

智能体

  • S. Yao et al. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023.
  • N. Shinn et al. Reflexion: Language Agents with Verbal Reinforcement Learning. NeurIPS 2023.
  • A. Prasad et al. ADaPT: As-Needed Decomposition and Planning with Language Models. NAACL Findings 2024.
  • J. Yang et al. SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering. NeurIPS 2024.

基准

  • C. Jimenez et al. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? ICLR 2024.
  • S. Zhou et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. ICLR 2024.
  • T. Xie et al. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. NeurIPS 2024.
  • S. Yao et al. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains. 2024.

时间跨度与可靠性

  • T. Kwa et al.(METR). Measuring AI Ability to Complete Long Tasks. 2025.
  • T. Ord. Is There a Half-Life for the Success Rates of AI Agents? 2025;以及他的后续文章 Hazard Rates for AI Agents Decline as a Task Goes On.
  • A. Sinha et al. The Illusion of Diminishing Returns: Measuring Long Horizon Execution in LLMs. 2025.

评测方法

  • S. Kapoor et al. AI Agents That Matter. 2024(TMLR 2025).

12. 下一讲预告 · Next lecture

第 12 讲:为什么要多个智能体——群体智慧、多样性、相关错误与集成。 规划部分到此结束。从下一讲开始是课程描述的第三个关键词:多智能体协作。我们已经多次看到”多试几次”的力量(自洽性投票、best-of-N、重试);多个智能体在什么意义上比”同一个智能体多试几次”更强?Condorcet 陪审团定理说,独立的、比随机好一点的投票者越多,多数票越可能正确——前提是独立。第 4 讲已经看到相关的错误投不掉;第 9 讲看到系统性的误差让搜索失败。下一讲会量化:模型多样性和提示多样性能带来多少独立性,“More Agents Is All You Need”式的采样投票和 Mixture-of-Agents 各自在什么条件下有效,以及多智能体系统和计算量匹配的单智能体比,到底赢在哪里。

← 返回课程目录