对应 Maps to:Stanford CS329Z Engineering AI Agents(Fall 2026),Lecture 17 · Wed Dec 2 · Frontiers & Open Problems,并入期末的项目展示日(Final Project Demo Day,12/7–11)。阅读材料:Xie et al., OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments(NeurIPS 2024 Datasets & Benchmarks);Yao et al., WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents(NeurIPS 2022)。 依据说明:写作时(2026-10-16)这一讲的 slides 还没有公布。本讲依据课表上的主题描述来写:多模态智能体、网页与电脑操作智能体、科学智能体、长时间运行的智能体架构、生产与可观测性(追踪、监控、成本管理)、可靠性 / 可扩展性 / 可解释性的开放问题。WebShop、OSWorld、MLE-bench、PaperBench 的数字核对过原文。课程项目的部分是本讲义自己整理的建议,依据课程的项目要求(提案、中期、最终提交与展示)和前 16 讲的方法。全部实验是本讲义自己设计的,不代表课堂上讲了什么。 配套代码 Code:
code/lecture17/(只用 Python 标准库;4 个脚本 + 1 个模块 + 1 个可选脚本;不需要 API key;每个脚本几秒以内) 预计阅读时间:2.5 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
学完这一讲你应该能够:
- 说出网页和电脑操作智能体难在哪里(读懂页面、GUI 定位、长链条、操作知识),以及 WebShop 和 OSWorld 怎样评估它们。
- 说出科学 / 研究智能体的评估面临的特殊问题。
- 为一个上线的智能体设计可观测性:追踪、看板、报警规则、抽样复查、成本归因。
- 列举智能体工程里尚未解决的问题,并把它们和本课程讲过的方法联系起来。
- 按”评估先行”的方式规划一个智能体项目:选题、评估、基线、错误分析、消融、成本、报告。
0.2 本讲地图 Map
§0.6 开场:从"它能做什么"到"它能一直做好吗"
§1 网页与电脑操作智能体:WebShop、OSWorld ← 代码 01、02
§2 科学与研究智能体
§3 生产环境:追踪、监控、成本 ← 代码 03
§4 长时间运行的智能体架构:把前几讲拼起来
§5 开放问题
§6 怎样做一个智能体项目 ← 代码 04
§7 用真实模型试一试 ← 代码 05(可选)
§8 全课回顾
§9 小结 §10 常见误区 §11 练习 §12 延伸阅读 §13 结语
0.3 术语 Terms
| 术语 | 本讲里的意思 |
|---|---|
| GUI 定位(grounding) | 把”点’保存’按钮”变成屏幕上一个具体的位置 / 元素 |
| 无障碍树(accessibility tree) | 操作系统给辅助技术提供的界面元素树(按钮、文本框、标签),可以当作智能体的结构化观察 |
| 按执行结果判分 | 检查任务结束时环境的真实状态(文件、设置、数据库),而不是智能体的话或截屏 |
| 追踪(trace)/ span | 一次运行的完整记录 / 其中的一个步骤(一次模型调用、一次工具调用),带耗时、token、错误 |
| 控制线(control limit) | 统计过程控制里的报警界:基线的均值 ± 3 个标准差 |
| 基线阶梯 | 从”什么都不做”到完整系统,一级一级加部件,每一级都和上一级比 |
0.4 本讲的代码
frontier_lab.py:一个迷你 WebShop(1,800 件商品、12 类、BM25 搜索、论文的奖励公式;商品页上约四成的属性换了说法)和一个迷你 OSWorld(一台”电脑”的状态,28 个任务,其中 3 个做不到,按最终状态判分)。03_observability.py:一个客服智能体 14 天的线上追踪,中间埋了三个事故。04_project_playbook.py:一个虚构项目的”评估先行”全过程,最后生成一份报告。
提醒:WebShop-lite 里的五个智能体都是确定的规则式策略,商品、搜索、奖励全是真的;Desktop-lite 里每一步点错的概率、会不会用某个软件是参数;03、04 的流量、事故、系统成败是模拟的,所有统计和汇总是真的计算。
0.5 开场:从”它能做什么”到”它能一直做好吗”
这门课的前半段问的是”怎样让智能体做到一件事”:调用工具、检索、规划、记忆、协作、优化。后半段问的是”怎样知道它做到了、做得安全、做得稳”:数据、评估、评审、安全、编程智能体、主动式智能体。最后一讲往外看一步:智能体正在走向哪些更难的环境,上线以后要怎样看着它,还有哪些问题没人知道答案;最后是你自己的项目。
1. 网页与电脑操作智能体 · Web and computer-use agents
1.1 WebShop:在网上买东西(代码 01)
Yao et al.(NeurIPS 2022)搭了一个模拟的购物网站:118 万件真实的商品、12,087 条众包写的购物指令(“我要一双防水、防滑的跑鞋,9 码黑色,60 美元以下”)。智能体的动作只有两种:search[查询](只在搜索页)和 choose[按钮](商品、选项、Buy、Back to Search、翻页……)。买下一件商品时,按论文的公式 1 给奖励:
r = r_type · (|U_att ∩ Y_att| + |U_opt ∩ Y_opt| + 1[y_price ≤ u_price]) / (|U_att| + |U_opt| + 1)
U 是指令要求的属性、选项、价格,Y 是买下的商品的;r_type 由文本匹配给 0 / 0.1 / 0.5 / 1。成功 = 奖励等于 1。
论文的结果(测试集):
| 智能体 | 分数 | 成功率 | 平均步数 |
|---|---|---|---|
| 规则基线 | 45.6 | 9.6% | 3.0 |
| 模仿学习(IL) | 59.9 | 29.1% | 9.4 |
| IL + 强化学习 | 62.4 | 28.7% | 4.5 |
| 人类专家 | 82.1 | 59.6% | 11.3 |
| 人类平均 | 75.5 | 50.0% |
几个观察:差距最大的是选选项(选项得分 IL 45.2、专家 73.9,RL 后反而降到 38.9);直接用指令原话去搜,一半以上的时候目标商品排在 50 名以外;如果有一个”会挑商品的神谕”,规则基线的成功率能从 9.6% 升到 85.4%——挑选是瓶颈;RL 让智能体更”贪心”、轨迹更短,缺少人那种回退、比较的探索。在 WebShop 上训练的智能体迁移到 amazon.com 和 ebay.com 上也有一定的效果。
迷你版(1,800 件商品、200 条指令;页面上约四成的属性换了说法,例如卖家写 “water resistant”、买家要 “waterproof”):
| 智能体 | 分数 | 成功率 | 平均步数 |
|---|---|---|---|
| 规则基线:搜原话,买第一个 | 62.1 | 16.0% | 3.0 |
| + 在商品页上选指令里的选项 | 83.6 | 44.5% | 4.1 |
| + 改写查询(只留类型和属性) | 84.0 | 46.5% | 4.1 |
| + 打开前 5 个结果比较,挑最合适的 | 95.2 | 78.0% | 14.5 |
| + 都不满意就换个查询再搜 | 95.2 | 78.0% | 14.9 |
| 神谕:从前 10 个结果里挑奖励最高的 | 97.7 | 88.0% | 4.5 |
- 选选项是最便宜的提升:只是点一下指令里提到的选项,成功率就从 16.0% 到 44.5%。
- 比较要花步数:打开几件商品比较,成功率到 78.0%,但平均要 14.5 步;“不满意就重搜”没有再提高,因为 15 步的上限已经被比较用光了。
- 读懂页面是难点:按原词匹配属性的智能体会读漏换了说法的属性,于是有时放过对的商品。
- 搜索决定上限,挑选决定能不能到达上限:前 10 个结果里有能拿满分的商品的比例是 88%,神谕正好拿到 88.0%,而且只要 4.5 步。
- 部分得分和成功率要一起报:智能体 C 的分数 84.0、成功率只有 46.5%;没拿满分的 107 条里,71 条差在选项、53 条超过了价格。
1.2 OSWorld:在真实的电脑上做事(代码 02)
Xie et al.(NeurIPS 2024 Datasets & Benchmarks)在真实的操作系统(Ubuntu、Windows、macOS)里评估智能体:369 个任务,覆盖真实的网页和桌面应用、文件读写、跨多个应用的工作流。每个任务带一份初始状态的配置(从什么样的电脑开始)和一个按执行结果判分的检查脚本(看最终的文件、设置、应用状态),所以结果可复现。人类能完成 72.36% 以上的任务,论文发布时最好的模型只有 12.24%;它们主要卡在 GUI 定位和操作知识。
迷你版(28 个任务,每个跑 20 次;每一步点错的概率、会不会用某个软件是参数):
| 观察方式 | 能做到的任务:成功率 | 设置 | 文件 | 浏览器 | 表格 | 跨应用 |
|---|---|---|---|---|---|---|
| 只有截屏 | 40.2% | 65% | 60% | 54% | 24% | 5% |
| 只有无障碍树 | 44.0% | 78% | 69% | 72% | 14% | 0% |
| 截屏 + 无障碍树(标号) | 54.4% | 72% | 81% | 82% | 36% | 8% |
| 截屏 + 无障碍树 + 每步检查 | 48.2% | 84% | 91% | 81% | 0% | 0% |
- 观察方式:无障碍树让”点哪里”精确得多,但在表格这类自己画界面的应用里看不到单元格;两者结合最好。
- 链条越长越难:4–6 步的任务 79%,11–15 步 21%,16 步以上 0%。每步 2.5% 的出错率,连做 20 步只剩 60% 的运气,再乘上操作知识,再被步数上限截断(第 12 讲 §1)。
- 每步检查和步数上限冲突:点完看一眼、错了改回来,在短任务上明显有用(设置 72% → 84%、文件 81% → 91%);但每一步多花一步,长任务全部撞上了 15 步的上限,总成功率反而下降。可靠性和效率在这里直接冲突,步数上限要配合任务的长度来定。
- 按执行结果判分:
| 判分方式 | 算出来的成功率 | 其中其实没做成 |
|---|---|---|
| 按执行结果(检查最终状态) | 50.9% | - |
| 智能体自己说”做完了” | 91.8% | 49.1% |
| 只看最后一张截屏 | 55.5% | 4.6%(改了表格却没保存,截屏上看起来完全是对的) |
- 做不到的任务:OSWorld 也放了一些做不到的任务,智能体应该说”做不到”。迷你版里默认只有 23% 的时候会说;提示”做不到就回答 FAIL”后升到 82%,但在能做到的任务上也更常放弃(52.2% → 49.0%)。评估集里放一些做不到的任务,才测得出智能体知不知道自己的边界。
1.3 多模态智能体:难在哪里
网页和电脑操作智能体把前面所有的难点叠在了一起:
| 难点 | 在哪里讲过 |
|---|---|
| 读懂观察(截屏、DOM、无障碍树,又长又吵) | 第 2 讲(上下文的成本)、第 15 讲(ACI:观察要简洁) |
| 定位(点哪里、填哪个框) | 第 4 讲(工具调用的参数),这里是像素和元素 |
| 长链条、错误累积 | 第 12 讲(pass^k)、第 15 讲(连锁失败) |
| 操作知识(这个软件怎样用) | 第 3 讲(检索文档)、第 7 讲(程序性记忆) |
| 不可信的内容(网页里的注入) | 第 14 讲 |
| 评估(按执行结果判分、做不到的任务) | 第 12、13 讲 |
2. 科学与研究智能体 · Scientific and research agents
另一条前沿是让智能体做研究工作:读文献、写代码跑实验、分析结果、写报告。它们的评估有几个特殊的困难:任务很长(几小时到几天);“做对了”很难自动判断;很容易被数据污染(第 10 讲 §5)。两个代表性的评估:
- MLE-bench(Chan et al., 2024):75 个 Kaggle 上的机器学习工程比赛,用各比赛公开的排行榜作为人类基线。最好的配置(o1-preview + AIDE 脚手架)在 16.9% 的比赛里达到了至少铜牌的水平。
- PaperBench(Starace et al., ICML 2025):让智能体从零复现 20 篇 ICML 2024 的 Spotlight / Oral 论文,一共 8,316 个可以单独打分的子任务;评分细则和每篇论文的作者一起制定,用 LLM 评审按细则打分(第 13 讲)。最好的智能体(Claude 3.5 Sonnet New + 开源脚手架)平均复现得分 21.0%;在一个子集上,模型还没有超过人类基线。
两者都体现了这门课的方法:把一个开放的目标拆成可以检查的部分(排行榜的分数线、细则里的子任务),用和人校准过的评审给不能自动判的部分打分,给出人类基线。研究智能体在多大程度上能独立产生可靠的新发现,仍然是开放的问题(§5)。
3. 生产环境:追踪、监控、成本 · Production and observability
3.1 一次运行 = 一条追踪(代码 03 演示 1)
智能体上线以后,问题从”它在评估集上得多少分”变成了”它现在好不好、哪里变了、花了多少钱”。基本的记录单位是追踪:一次运行的 span 树。每次模型调用、每次工具调用是一个 span,记下耗时、token、成本、错误。第 9 天一次失败的运行:
run:改套餐 10,008 ms
llm:plan 763 ms 2,600 → 133 token
tool:lookup_account 2,448 ms timeout
llm:retry 658 ms 3,183 → 60
tool:lookup_account 1,677 ms timeout
llm:retry 554 ms 3,483 → 60
tool:lookup_account 2,820 ms timeout
llm:answer 1,088 ms 3,783 → 158
结果:failed;成本 0.0755 美元
汇总的指标告诉你”哪天、哪个指标变了”,追踪告诉你”为什么”。这和第 13 讲的评估记录是同一种东西,只是来自真实用户。
3.2 三个事故,三种报警规则(代码 03 演示 2–3)
14 天、每天约 150 次运行,埋了三个事故:
| 事故 | 看板上看到什么 |
|---|---|
| 第 6 天:提示词改版,系统提示变长 | 每次成本 7.28 → 9.17 美分;解决率不变 |
| 第 9 天:账户查询工具的依赖变慢、报错 | 工具错误率 2% → 14%,延迟 p95 7.0 → 13.9 秒;解决率靠重试撑住(94% → 91%),代价是更多的模型调用 |
| 第 12 天:模型版本更新,补偿算错的比例上升 | 运维指标上什么都看不到 |
三种报警规则:固定阈值(成本超过 10 美分)一直没响,它只抓得住”贵得离谱”;和基线比变化 20%、3σ 控制线都在第 6 天抓住了”悄悄变贵”。工具变慢在三种规则下都抓住了,但如果只盯解决率,会以为什么都没发生。
3.3 安静的质量回退:只能靠抽样复查(代码 03 演示 4)
第 12 天的模型更新不报错、不变慢,解决率也没变,只是补偿金额算错的比例从 5% 升到 20% 左右。只有持续的抽样评估(第 10 讲的数据飞轮、第 13 讲的校准过的评审)能发现它:
| 每天抽几条 | 回退后第一次报警 | 回退之前的误报 | 14 天一共复查 |
|---|---|---|---|
| 10 | 第 12 天 | 1 次(第 6 天) | 140 |
| 30 | 第 12 天 | 0 | 420 |
| 60 | 第 12 天 | 0 | 840 |
样本量同时决定了你多快能发现问题、多常被误报叫醒(第 12 讲 §5)。每天 10 条时,2 条错误就足以让区间的下限越过 5%。
3.4 成本归因(代码 03 演示 5)
按功能、按调用类型把钱分摊下去(前置讲 P3 的账本):14 天里”补偿查询”花了 49%,“规划”类的模型调用占了 66%,重试占 3%。知道钱花在哪里,才知道先优化什么:缩短系统提示、缓存(第 2 讲的前缀缓存)、减少重试、把简单的请求交给便宜的模型。
3.5 一份上线清单
- 每次运行一条完整的追踪(模型调用、工具调用、输入输出、耗时、token、成本、错误),带上配置指纹(第 13 讲 §5)。
- 看板:成功率、延迟(p50 / p95)、每次成本、每个工具的错误率,按功能、按用户群切开。
- 报警:和基线比(变化比例或控制线),不只是固定阈值;成本和质量一样要报警。
- 质量:每天抽样复查(评审 + 人工),失败的全部进入错误分析;用户的反馈信号要和抽样结合(第 10 讲 §2)。
- 发布:提示词、模型、工具的每一次变更都要先过回归评估(第 13 讲:能力评估 vs 回归评估),上线时灰度、可回滚。
4. 长时间运行的智能体架构 · Long-running agent architectures
把前几讲的部件拼起来,一个能连续工作几小时、几天的智能体大致长这样:
| 部件 | 作用 | 在哪里讲过 |
|---|---|---|
| 外部状态(文件、数据库、git) | 跨上下文窗口的记忆;随时可以回到干净的状态 | 第 7 讲;第 15 讲 §5 |
| 任务清单 / 进度文件 | 知道还有什么没做、上一次做到哪里 | 第 15 讲 §5 |
| 压缩与上下文管理 | 一个窗口里能做更久 | 第 7 讲;第 15 讲 §2 |
| 子智能体 / 分工 | 把调查、测试、审查放进独立的上下文 | 第 8 讲;第 15 讲 §3.3 |
| 验证关卡 | 测试、评审、端到端检查,没过就不能标”完成” | 第 13 讲;第 15 讲 |
| 心跳 / 调度 | 定时醒来、检查、决定要不要做事 | 第 16 讲 §5 |
| 权限与人在回路 | 高风险动作要确认;按会话配置权限 | 第 14 讲 |
| 预算与可观测性 | 成本上限、追踪、报警 | 本讲 §3;前置讲 P3 |
共同的设计原则:状态放在模型之外(文件、git、数据库),每一步都可以验证,出错时可以回滚,花多少钱看得见。
5. 开放问题 · Open problems
这些问题还没有公认的答案。每一个都附上这门课里和它最相关的方法。
可靠性
- 长链条上的错误累积:每一步 97% 可靠,50 步之后只剩 22%。怎样让智能体在长任务上既不过度检查(拖慢、撞上步数上限),又能及时发现错误?(第 12 讲 pass^k;第 15 讲的护栏;本讲 §1.2)
- 自我验证:智能体评判自己的产出时,会和产出时犯同样的错(第 13 讲 §3.4 的”评审和模型错误相关”)。怎样得到独立、可靠的验证信号?
- 知道自己不知道:说”做不到”、说”不确定”、在该问的时候问(第 13 讲的”Unknown”出口;第 16 讲的”先问一句”;本讲的做不到的任务)。
可扩展性
- 成本与延迟:智能体的成本随步数和上下文长度增长(第 2、13、15 讲)。怎样在不损失质量的前提下把它降下来:缓存、路由、蒸馏(第 9 讲)、更好的脚手架?
- 很多工具、很长的上下文:几千个工具怎样选(第 4 讲 §5)?几百万 token 的上下文里,模型还看得清吗(第 15 讲 §2)?
可解释性与可控性
- 它为什么这样做:追踪告诉你它做了什么,但不一定告诉你为什么。模型写出的推理是否忠实地反映了它的决策,是一个开放的研究问题。
- 对齐用户的意图:从被动到主动(第 16 讲),智能体越来越多地替用户做决定。怎样确保它理解了用户真正想要的、也尊重用户没说出口的边界?
评估
- 饱和与污染:好的评估很快被刷满(第 13 讲 §7、第 15 讲 §4.5),训练数据可能包含评估集(第 10 讲 §5)。
- 对着会适应的对手评估:安全评估尤其如此(第 14 讲 §2–§3)。
- 评估真实世界的价值:benchmark 上的分数和用户实际得到的帮助之间,隔着脚手架、分布差异和人的因素(第 12 讲)。
安全
- 提示词注入仍然没有解决(第 14 讲):结构型防御有效但限制能力,检测型防御会被自适应攻击绕过。
- 越来越自主的智能体需要越来越强的保障:权限、监控、人在回路、负责任的部署(第 14 讲 §6)。
6. 怎样做一个智能体项目 · Doing an agent project
原课的项目占 40%:提案、中期报告、中期 demo、最终提交、最终系统 demo(SYLLABUS)。下面是一份按这门课的方法整理的建议。
6.1 选题
好的题目通常满足:
- 有一个真实的用户和一个具体的任务(“帮实验室同学整理每周的会议纪要并分派任务”比”做一个通用助手”好)。
- 能在一学期内评估:能造出 30–50 个有参考答案的任务,判分大部分能自动化。
- 有一个明确的基线可以比:现有的工具、一个简单的提示词、一个写死的流程。
- 风险可控:不需要接触真实的敏感数据、不需要真的花钱或对外发送;需要的话就在沙箱和模拟环境里做(第 14 讲)。
6.2 评估先行
在写第一行智能体代码之前(第 13 讲 §7 的路线图):
- 用 4 元组写清楚任务(第 12 讲):请求、环境(每个任务一份干净的副本)、停止条件、判分器。
- 从真实的失败和你自己会手工测的东西开始,先攒 20–50 个任务;给每个任务写参考解,证明它可解。
- 平衡:既有”该做”的,也有”不该做”(应该拒绝、应该转人工、做不到)的。
- 判分器先用代码;必须用评审的部分,先拿 30–50 条人工标签校准(第 13 讲 §4)。
6.3 基线阶梯、错误分析、部件的价值(代码 04)
迷你版的项目”Orrin Grid 的停电补偿助手”,40 个任务、每个系统每个任务跑 3 次:
| 系统 | 成功率 [95% 区间] | 和上一级比:多对 / 多错(单次运行,McNemar) | 每个任务(美分) |
|---|---|---|---|
| 0. 什么都不做:一律转人工 | 25.0% [14%, 40%] | - | 0.0 |
| 1. 一次模型调用 | 43.3% [29%, 58%] | +12 / −6,p = 0.238 | 0.8 |
| 2. + 检索政策文档 | 59.2% [45%, 74%] | +12 / −5,p = 0.143 | 1.4 |
| 3. + 工具:智能体 | 74.2% [60%, 86%] | +11 / −4,p = 0.118 | 4.5 |
| 4. + 提交前自检 | 86.7% [74%, 95%] | +9 / −3,p = 0.146 | 6.0 |
- “什么都不做”的基线不是 0:一律转人工就能拿到 25%,因为超出范围的请求本来就该转人工。先知道地板在哪里(第 12 讲的参照智能体)。
- 配对比较要有足够的信号:只用每个任务的第一次运行做 McNemar,四步提升没有一步显著;把每个任务的 3 次运行取平均再做配对 bootstrap,四步提升的 95% 区间都不含 0(例如自检 +12.5 个点 [+4.2, +20.8])。项目报告里每个数字都要带区间,比较要配对(第 12 讲 §5)。
- 错误分析决定下一步:最好的系统失败的原因里,最多的是”理解错了用户的问题”(31%),然后是检索漏了政策条款、工具参数填错。不读失败的记录、不归类,就只能凭感觉改提示词。
- 成本:每次成功的成本从 1.8 美分(一次调用)涨到 6.9 美分(智能体 + 自检)。选哪一个取决于一次失败值多少钱。
- 注意:演示 4 算的是”每一级相对于上一级”的增益。真正的消融是从最终的系统里每次去掉一个部件,看掉多少;两者回答的问题不同(部件之间可能互相依赖)。
6.4 报告的骨架
代码 04 最后生成的报告就是一个骨架:
1. 任务与评估:任务怎么来的、多少个、怎样判分(评审怎样校准的)
2. 主要结果:每个系统的成功率(带区间)、成本;和基线的配对比较
3. 错误分析:失败原因的分类和比例,各举一个例子(读记录!)
4. 消融:每个部件值多少(带区间)
5. 局限:任务数、评审的可靠性、和真实使用的差距、安全上的假设
6. 下一步:先修最常见的失败
6.5 项目里常见的坑
- 先调了两周提示词,最后才发现没法评估。
- 只报一个数字,没有区间、没有基线、没有跑多次。
- 用同一批任务挑提示词、又报最终成绩(第 10 讲 §5 的污染)。
- 评审没和人校准就当真值用(第 13 讲)。
- 演示用的例子是挑过的;报告里的数字来自全部任务。
- 智能体有对外动作,却没有权限控制和确认(第 14 讲)。
- 不读失败的记录。
7. 用真实模型试一试 · Try it on a real model
05_real_llm.py 让真实的 Claude 在迷你 WebShop 里买东西:和 WebShop 一样的文本接口,每一步只能 search[…] 或 choose[…];6 条指令,每条最多 12 步。
python3 05_real_llm.py --toy
(--toy 用一个简单的规则式策略,不联网;去掉它就调用真实模型,需要 pip install anthropic 和 API key。)
运行之后看:它读懂换了说法的属性了吗?有没有打开几件商品比较?记得选选项、注意价格上限吗?对照代码 01 的五个规则式智能体,它的行为和哪一个最像?
8. 全课回顾 · The course in one page
| 讲 | 主题 | 一句话 |
|---|---|---|
| P1–P4 | 进程与文件、HTTP 与协议、并发与缓存、安全基础 | 智能体是一个程序:它跑命令、调接口、并发地等、并且要被约束 |
| 1 | 什么是智能体 | 模型 + 工具 + 循环;评估要看 pass^k |
| 2 | 给工程师的 LLM | 上下文就是成本;结构化输出要能解析、能重试 |
| 3 | 检索增强 | 先检索后生成;多跳要迭代 |
| 4 | 工具使用 | 注册表、协议、校验与执行分离;工具多了要检索 |
| 5 | 框架 | 框架省的是样板,不是思考;看清它替你做了什么 |
| 6 | 设计模式 | 能用 workflow 就别用 agent;循环要能停 |
| 7 | 记忆 | 记什么、怎样取、什么时候忘 |
| 8 | 多智能体 | 由任务结构决定;交接会丢信息;投票常常不输辩论 |
| 9 | 优化 | 指令、示例、权重、推理算力;反馈的质量决定一切 |
| 10 | 智能体的数据 | 记录是原材料;优化数据和评估数据要分开 |
| 11 | 数据选择 | 质量胜过数量;谁来验证验证者 |
| 12 | 评估基础 | 4 元组;有效性;区间与配对比较 |
| 13 | LLM 评审与评估基础设施 | 评审是降方差的工具,不是人的替代品;harness 是工程 |
| 14 | 安全与护栏 | 隐私看情境;对着会适应的对手评估;结构型防御做底线 |
| 15 | 编程智能体 | ACI 是设计;验证是杠杆;长任务靠外部状态 |
| 16 | 主动式智能体 | 校准过的用户模型 + 期望效用 + 信任 |
| 17 | 前沿与项目 | 按执行结果判分;上线要看得见;评估先行 |
如果只记一件事:一个智能体有多好,取决于你能多准确地知道它有多好。 这门课的每一个工程方法——工具的校验、检索的评估、记忆的遗忘、优化的验证集、数据的去污染、评审的校准、安全的自适应评估、ACI 的护栏、主动的校准——最后都落在这一点上。
9. 小结 · Summary
- 网页和电脑操作智能体:读懂页面、GUI 定位、长链条、操作知识叠在一起。WebShop 显示”挑选”是瓶颈、选项最容易丢分;OSWorld 用初始状态 + 执行结果的检查脚本评估,人类 72.36% vs 当时最好的模型 12.24%。
- 判分要看执行结果:智能体自己说”做完了”、最后一张截屏看起来对,都可能是错的。评估集里要有做不到的任务。
- 科学 / 研究智能体:把开放的目标拆成可以检查的部分,用校准过的评审打分,给出人类基线(MLE-bench、PaperBench)。
- 生产环境:追踪是基本单位;成本和质量都要报警;和基线比的规则抓得住悄悄的变化;安静的质量回退只能靠抽样复查,样本量决定发现得多快、误报多常。
- 长时间运行的架构:状态放在模型之外、每一步可验证、出错可回滚、花费看得见。
- 开放问题:长链条的可靠性、自我验证、知道自己不知道、成本、可解释性、评估的饱和与污染、提示词注入。
- 项目:评估先行;基线阶梯;带区间的配对比较;读失败的记录做错误分析;消融;成本;按骨架写报告。
10. 常见误区 · Common pitfalls
- “网页智能体主要难在搜索。” WebShop 里给一个会挑的神谕,规则基线的成功率从 9.6% 到 85.4%:难在挑、在读懂页面、在选选项。
- “截屏看起来对就是做对了。” 没保存的文件、没提交的表单,截屏上都看起来是对的。
- “每一步都检查一遍最稳妥。” 检查要花步数,长任务会撞上步数上限。
- “智能体说完成了就是完成了。” 迷你 OSWorld 里,自己说”做完了”的运行有一半其实没做成。
- “解决率没变,就没出问题。” 成本可以悄悄上涨,质量可以安静地回退。
- “固定阈值的报警就够了。” 它只抓得住离谱的变化;悄悄的变化要和基线比。
- “抽样复查越少越省钱。” 太少的样本既发现得慢,又容易误报。
- “项目先把系统做出来,评估最后再说。” 没有评估,你不知道两周的提示词调整有没有用。
- “我们比基线高 12 个点。” 带区间了吗?是配对比较吗?跑了几次?
- “开放问题离我的项目很远。” 错误累积、自我验证、成本、注入,在一个课程项目里就会遇到。
11. 练习 · Exercises
练习 1(WebShop 的奖励):指令要求 2 个属性、2 个选项、价格 ≤ 50。智能体买了一件类型正确、对上 1 个属性、选对 1 个选项、价格 45 的商品。奖励是多少?如果类型只对上了大类(r_type = 0.5)呢?
参考答案
分母 = 2 + 2 + 1 = 5;分子 = 1 + 1 + 1(价格满足)= 3。类型正确:r = 1 × 3/5 = 0.6。类型只对上大类:r = 0.5 × 0.6 = 0.3。注意 0.6 的奖励在"分数"里贡献 60 分,但在"成功率"里算失败——两个指标要一起报。练习 2(为什么挑选是瓶颈):用迷你 WebShop 的数据解释”搜索决定上限,挑选决定能不能到达上限”。
参考答案
前 10 个搜索结果里有能拿满分的商品的比例是 88%:这是任何"从这 10 个里挑"的智能体能达到的上限,神谕正好拿到 88.0%。规则式的挑选(比较前 5 个、按读到的属性打分)只到 78.0%,差的 10 个点来自读漏换了说法的属性、只看前 5 个、步数上限。要提高上限得改搜索(更好的查询、更多的结果),要接近上限得改挑选(读懂页面、比较更多商品)。练习 3(按执行结果判分):为”把下载文件夹里所有的 PDF 移到’论文’文件夹,并按年份重命名”写一个 OSWorld 式的检查函数,并列出两种”截屏看起来对、其实没做对”的情形。
参考答案
检查:下载文件夹里没有 PDF;"论文"文件夹里的 PDF 数量等于原来的数量;每个文件名都以四位年份开头,年份和文件元数据(或者初始配置里记录的年份)一致;文件内容(哈希)和原来的一一对应,没有丢、没有重复。截屏看起来对、其实不对:文件管理器的视图没有刷新(截屏上已经移走,磁盘上没动);复制而不是移动(截屏上"论文"文件夹里有了,下载文件夹里的还在,但截屏只看了一个窗口);重命名时把两个文件覆盖成了一个。练习 4(做不到的任务):你的评估集里有 10% 的任务是做不到的。智能体 A 从不说做不到,在能做到的任务上 60%;智能体 B 在做不到的任务上 90% 说做不到,但在能做到的任务上误放弃 10%,剩下的成功率和 A 一样。哪个总分高?
参考答案
A:0.9 × 0.6 + 0.1 × 0 = 0.54。B:能做到的任务上 0.9 × 0.6 = 0.54 → 0.9 × 0.54 = 0.486,做不到的 0.1 × 0.9 = 0.09,合计 0.576。B 更高。但如果做不到的任务只占 2%,B = 0.98 × 0.54 + 0.02 × 0.9 ≈ 0.547,A = 0.588,A 更高。评估集里做不到的任务的比例会改变结论,要和真实使用中的比例一致,并且分开报告两类任务的表现。练习 5(报警规则):一个智能体每次运行的成本基线是 5 美分(标准差 0.3)。设计报警规则,抓住”一周内悄悄涨到 6 美分”,但不在”某天因为流量结构变化波动到 5.6 美分”时报警。
参考答案
单日的 3σ 控制线是 5.9 美分,5.6 不报警,6 会报警。但"悄悄涨"可能是一周内逐天上升,每天都没越线:加一条"连续 N 天高于均值 + 1σ"(统计过程控制里的趋势规则)或"7 天滑动平均比基线高 10%"。流量结构变化导致的波动,可以按功能分开监控(每个功能自己的基线),而不是只看总体。练习 6(抽样复查的样本量):平时的错误率是 5%,你想在错误率升到 15% 时,当天就有八成把握发现。每天大约要抽多少条?
参考答案
用"错误率的 95% Wilson 区间下限超过 5%"作为报警条件。n = 60 时至少要观察到 7 个错误(7/60 的下限约 5.8%);真实错误率 15% 时,Binomial(60, 0.15) ≥ 7 的概率约 0.82。所以每天大约 60 条就够;n = 80 时只要 ≥ 8 个错误,发现的把握约 0.93。可以用代码 03 的方法模拟验证;还要同时看平时(5%)的误报率。也可以累积几天的数据,换取更少的每日样本(代价是发现得更晚)。练习 7(长时间运行的架构):为一个”每晚自动整理团队的 bug 列表、给每个 bug 打标签、把重复的合并”的智能体设计架构,指出它在 §4 的表里用到了哪些部件。
参考答案
外部状态:bug 追踪系统本身 + 一个记录"上次处理到哪里"的进度表;任务清单:今晚要处理的 bug 列表(JSON);子智能体:一个负责找重复(检索相似的 bug),一个负责打标签;验证关卡:合并重复之前要求相似度高于阈值并且由第二个评审确认,低置信度的只建议、不合并;权限:只能加标签、加评论、标记重复,不能关闭或删除 bug;心跳:每晚运行一次;可观测性:每次运行的追踪、合并数、被人撤销的合并数(质量信号)、成本。练习 8(开放问题):从 §5 里挑一个开放问题,设计一个小实验,用这门课的方法去测量它(不需要解决它)。
参考答案(例)
"自我验证":选 100 个有标准答案的任务,让智能体先回答、再让同一个模型判断自己对不对,另找一个不同家族的模型和人工各判一次。比较:自评和真实对错的一致率(TPR / TNR,第 13 讲 §4)、自评在"自己错了"的那些题上漏判的比例、换成不同家族的评审后是否改善。按错误类型(计算错、知识错、理解错)分组看,判断哪一类错误自评最抓不住(第 13 讲 §3.4 的"错误相关")。练习 9(项目选题):评价这三个项目题目,并改进最弱的一个:(a)“一个能回答任何问题的个人助手”;(b)“帮实验室把每周组会的录音转成纪要,并把行动项发给负责人”;(c)“让智能体自动在股票市场上交易”。
参考答案
(a) 太宽,无法评估,没有明确的基线。改进:缩小到一个具体的人群和任务,例如"帮新生回答选课规则的问题",用课程手册造 50 个有标准答案的问题。(b) 好:用户和任务具体,可以造评估(录音 + 人工写的纪要和行动项),基线清楚(人工整理、一次调用的总结),风险可控(发给负责人前先让组长确认)。(c) 风险太高(真金白银的交易,第 14 讲),评估也难(市场不可复现);如果要做,改成在历史数据上的模拟回测、只给建议不执行、明确说明不是投资建议。练习 10(开放题:写你的项目提案):按 §6 的方法写一页项目提案:用户和任务、4 元组、20 个任务的样例、基线、成功的定义、要报告的数字、风险和防护。
参考答案(思路)
① 一句话说清用户和任务;② 4 元组:请求的样例、环境(数据从哪来、怎样重置)、停止条件、判分器(代码判哪些、评审判哪些、怎样校准);③ 20 个任务的样例,覆盖"该做 / 不该做 / 做不到";④ 基线阶梯:什么都不做、一次调用、你的系统;⑤ 主要指标(成功率、pass^k、成本)和报告方式(区间、配对比较);⑥ 风险:涉及哪些数据(情境完整性)、有哪些对外动作(权限、确认)、注入的入口(第 14 讲);⑦ 时间表:先评估、再基线、再迭代,每一次迭代都由错误分析驱动。12. 延伸阅读 · Further reading
本讲的阅读材料
- S. Yao, H. Chen, J. Yang, K. Narasimhan, WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents, NeurIPS 2022.
- T. Xie et al., OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments, NeurIPS 2024 Datasets & Benchmarks.
相关
- J. S. Chan et al., MLE-bench: Evaluating Machine Learning Agents on Machine Learning Engineering, 2024.
- G. Starace et al., PaperBench: Evaluating AI’s Ability to Replicate AI Research, ICML 2025.
- S. Zhou et al., WebArena: A Realistic Web Environment for Building Autonomous Agents, ICLR 2024.
- Anthropic, Demystifying Evals for AI Agents(第 13 讲);J. Young, Effective Harnesses for Long-Running Agents(第 15 讲)。
13. 结语 · Closing
这是本讲义的最后一讲。回头看,这门课里几乎每一个实验都在重复同一个动作:先想清楚怎样知道结果是对的,再去做。工具调用要先校验,检索要先评估召回,优化要有验证集,数据要防污染,评审要和人校准,安全要对着会适应的对手测,编程智能体要有测试,主动的助手要有校准过的置信度,上线的系统要有追踪和抽样复查。
模型会继续变强,今天的很多数字明年就会过时;但”怎样知道它有多好、哪里会出错、出错时怎样兜底”这套工程方法不会过时。祝你的项目顺利。