第27讲 · EECS 189:LLM、智能体与环境

UC Berkeley EECS 189/289A《机器学习导论》2026 春季 · 课堂实录重构

原始标题 LLMs, Agents, and Environments
视频 https://www.youtube.com/watch?v=yRgSQCXr8M0
课程主页 https://eecs189.org/sp26/
官方讲义/笔记(Lecture 27) Google Drive PDF
图片来源 书中幻灯片插图为官方 PDF 高清渲染图

对应讲次:第27讲(UC Berkeley EECS 189 机器学习导论)

制作模型:deepseek-flash(coding-agent / pi;据 ~/.pi/agent/settings.json)

说明:课程材料版权归 UC Berkeley 及授课教师所有,本书仅供学习

本讲路线图

(参考时间: 00:04)

本讲是本学期最后一讲,主题是智能体(agents)与环境(environments):

  1. 什么是 LLM、什么是 agent:一步一步排除「不是 agent」的东西(tool use、RAG、硬编码 workflow);
  2. 如何造 agent:多智能体系统的长程问题,前沿实验室的自主 agent + 终端;
  3. 环境:从「问答评测」到「环境评测」,Agent 的历史三阶段;
  4. Terminal-Bench:Harbor 框架、任务三要素(任务描述 / Dockerfile / 验证器)、reward hacking;
  5. 用环境训练 agent:SFT vs RL(GRPO)、GEPA(自动提示优化 / 遗传-Pareto)。
标题页

📷 标题页
回到原视频 (00:00:20)

路线图

📷 路线图
回到原视频 (00:01:33)


一、什么是 Agent?

1.1 先回顾 LLM

(参考时间: 00:04)

LLM 是一个模型:吃 token,吐 token。它把输入分词、过若干 Transformer 块、取最后向量过一个线性头,得到下一个 token 的分布并采样;自回归地循环即可生成文本。训练方式是自监督的下一个 token 预测(海量文本,如 Common Crawl,需要大量清洗工作,如 DCLM / DataComp-LM)。

运行:把权重放进推理库,如 vLLM(伯克利起源)、SGLang。

LLM 不是 agent:它不能 搜索、读文档、发邮件、订机票、pip install——它只会「字符串进、字符串出」。

什么是 agent?(一)

📷 什么是 agent?(一)
回到原视频 (00:02:46)

什么是 agent?(二)

📷 什么是 agent?(二)
回到原视频 (00:03:59)

什么是 agent?(三)

📷 什么是 agent?(三)
回到原视频 (00:05:12)

什么是 agent?(四)

📷 什么是 agent?(四)
回到原视频 (00:06:25)

什么是 agent?(五)

📷 什么是 agent?(五)
回到原视频 (00:07:38)

什么是 agent?(六)

📷 什么是 agent?(六)
回到原视频 (00:08:51)

什么是 agent?(七)

📷 什么是 agent?(七)
回到原视频 (00:10:04)

什么是 agent?(八)

📷 什么是 agent?(八)
回到原视频 (00:11:17)

什么是 agent?(九)

📷 什么是 agent?(九)
回到原视频 (00:12:30)

什么是 agent?(十)

📷 什么是 agent?(十)
回到原视频 (00:13:43)

什么是 agent?(十一)

📷 什么是 agent?(十一)
回到原视频 (00:14:56)

1.2 一步一步排除「不是 agent」

(参考时间: 00:08)

什么是 agent?(十二)

📷 什么是 agent?(十二)
回到原视频 (00:16:09)

什么是 agent?(十三)

📷 什么是 agent?(十三)
回到原视频 (00:17:22)

什么是 agent?(十四)

📷 什么是 agent?(十四)
回到原视频 (00:18:35)

1.3 什么才是真正的 agent

真正的 agent = LLM 在循环里 +(理想地)一个真终端:

  1. 把世界状态给 LLM,让它「思考」(输出一些文本);
  2. 问它下一步想做什么 → 输出一条命令(CLI/终端命令);
  3. harness 执行命令、更新世界状态、把输出返回给 LLM;
  4. 循环 —— 就是 Reason + Act(ReAct)。

区别:LLM 拥有自主权(agency)——想做 5 次检索就做 5 次,甚至可以无限循环,而不是预先规定好的 5 条路径。

人们如何造 agent?(一)

📷 人们如何造 agent?(一)
回到原视频 (00:19:48)

人们如何造 agent?(二)

📷 人们如何造 agent?(二)
回到原视频 (00:21:01)

人们如何造 agent?(三)

📷 人们如何造 agent?(三)
回到原视频 (00:22:14)

造 agent 的两种方式:

成功的 agent:Claude Code、Codex(OpenAI)、Gemini CLI(Google)、deep research 等。

从 LLM 到自主智能体

📷 从 LLM 到自主智能体
回到原视频 (00:23:27)

2021 年 AI 知道什么?

📷 2021 年 AI 知道什么?
回到原视频 (00:24:40)

(空白页)

📷 (空白页)
回到原视频 (00:25:53)

(空白页)

📷 (空白页)
回到原视频 (00:27:06)


二、Agent 的历史三阶段

(参考时间: 00:24)

论文刚刚……

📷 论文刚刚……
回到原视频 (00:28:19)

Terminal-Bench 是……

📷 Terminal-Bench 是……
回到原视频 (00:29:32)

为什么 workflow 会失败? 因为多步任务中任何一步出错都致命,而 LLM 从没在训练中经历过错误。每个 agent 的失败方式都独特(就像每个学生对 PCA 的误解都不同),只有自己动手犯错并修正才能学会。SFT = 读别人解好的题;RL = 自己解题、只在真正解出时才得奖励。所以环境通过让 agent 以自己独特的方式失败来稳定它。


三、从问答评测到环境评测

(参考时间: 00:35)

旧世界(问答):评测就是问题 + 标准答案(如 MMLU,Massive Multitask Language Understanding,含博士级题目)。比较答案即可,必要时用 LLM-as-judge。

新世界(能力):现在要问「agent 能做什么」(如「用 Rust 重写 Linux 内核」)。这无法用问答评测 ⇒ 评测对象变成 environments(环境):

数据从「问答对」变成了「环境」。

Terminal-Bench 框架

📷 Terminal-Bench 框架
回到原视频 (00:30:45)

Terminal-Bench 的设计选择(一)

📷 Terminal-Bench 的设计选择(一)
回到原视频 (00:31:58)

Terminal-Bench 的设计选择(二)

📷 Terminal-Bench 的设计选择(二)
回到原视频 (00:33:11)

例子包括:

📷 例子包括:
回到原视频 (00:34:24)

Terminal-Bench 示例任务

📷 Terminal-Bench 示例任务
回到原视频 (00:35:37)

编码 Agent(CLI agent)能做很多事

📷 编码 Agent(CLI agent)能做很多事
回到原视频 (00:36:50)

Terminal-Bench 的影响(一)

📷 Terminal-Bench 的影响(一)
回到原视频 (00:38:03)

Terminal-Bench 的影响(二)

📷 Terminal-Bench 的影响(二)
回到原视频 (00:39:16)

测试中最好的模型完成 <50% 任务

📷 测试中最好的模型完成 <50% 任务
回到原视频 (00:40:29)

3.1 Terminal-Bench

Terminal-Bench(ICLR 2026 报告)定义了什么是一个 RL 环境,并构造了高难度环境基准:

框架结构:

3.2 环境的形状:Harbor 任务

一个 Harbor 任务由三部分组成:

  1. 任务描述(task.yaml):如「我的 Python 装坏了,pip 不能装包」;
  2. 环境(Dockerfile):搭建虚拟机(装 Python、再删掉某些文件,制造「坏掉的 pip」);
  3. 验证器(verifiers / auto-grader):测试任务是否真的完成(如运行 pip 看是否报错)。

两个关键陷阱:

任务示例:识别二进制文件并运行;破解加密哈希;用 Pandas 清洗数据(提取邮编/城市、生成队名、存成 CSV);修复损坏的 SQLite 数据库导出 JSON;用 QEMU 下载安装并运行 Windows XP SP3。

任务由人工(博士生、Anthropic 研究员等)编写,约一周一个,经审阅、并跑 agent 检查不会 reward hacking;每个任务还有ground-truth 解。TB3 的标准是「一个博士生要花一周」,本科作业太简单。只要能作弊,agent 就会作弊——所以环境必须「刀枪不入」。

如何使用环境(一)

📷 如何使用环境(一)
回到原视频 (00:41:42)

如何使用环境(二)

📷 如何使用环境(二)
回到原视频 (00:42:55)

如何使用环境(三)

📷 如何使用环境(三)
回到原视频 (00:44:08)

如何使用环境(四)

📷 如何使用环境(四)
回到原视频 (00:45:21)

3.3 环境要造多复杂?

我们需要把环境造得多复杂?(一)

📷 我们需要把环境造得多复杂?(一)
回到原视频 (00:46:34)

我们需要把环境造得多复杂?(二)

📷 我们需要把环境造得多复杂?(二)
回到原视频 (00:47:47)

案例:一个 Slack 工作区,学生和 agent 一起修真实科研代码库的问题(BFCL,Berkeley Function Calling)。问题如「Bob 在做什么」「谁贡献最多」「哪两个学生闹矛盾、互相不帮忙」。如何把 Slack 给 agent? 可以用 Slack MCP;但一个「笨」办法竟出奇地好——把整个 Slack 导出成 JSON 文件夹,让 agent 用 grep 等命令行工具搜索。

核心理念:文件系统成为 agent 的长期记忆,它自己控制上下文、只按需取每个文件需要的部分(不必同时记住所有文件)。构建 agent 时,尽量依赖文件系统和命令行工具,把决策权交给 agent。UNIX 工具组合优雅、层级文件系统像一棵树,agent 用起来「超人级」——Anthropic 的 skills 就是文件夹。这就是命令行 agent 能做远超「编码」的事情(报税、销售预测、市场)的原因。

结论

📷 结论
回到原视频 (00:49:00)

延伸阅读

📷 延伸阅读
回到原视频 (00:50:13)

本课程学习内容回顾

📷 本课程学习内容回顾
回到原视频 (00:51:26)


四、用环境训练 Agent

(参考时间: 01:03)

评测 vs 训练:一次 rollout 可以迭代很多轮(甚至 100 轮)、直到 agent 说「完成」或超时(如 1 小时);评测通常跑 1 次或 5 次(看预算)。若用于训练,pass rate 最好在 10%–30%。前沿实验室会把 Terminal-Bench 写进系统卡(如 Claude 4 报 43%、Codex 53 报 76%)。

两种训练方式:

  1. SFT(监督微调):让教师模型或人类解决任务、产出正确轨迹(trajectory),然后提高该轨迹的概率(= 对正确 token 做监督学习)。若模型完全解不出,可给提示得到解、再去掉提示做 SFT。类比:通过读「解好的题」学数学。
  2. RL(强化学习,如 GRPO):没有教师、没有解。让模型多次尝试得到一批成功/失败的轨迹,提高正确轨迹的概率、降低错误轨迹的概率。最简单近似 = 只保留正确轨迹做 SFT。关键是可验证奖励——你有测试、知道何时成功。类比:自己动手解题,只在真正解出时得奖励。

GEPA(Genetic-Pareto,幻灯片名;讲师口头称 JEPA):不更新权重,只优化提示(prompt):

GEPA

📷 GEPA
回到原视频 (00:52:39)

什么是 GEPA

📷 什么是 GEPA
回到原视频 (00:53:52)

GEPA 样本高效

📷 GEPA 样本高效
回到原视频 (00:55:05)

GEPA 示例

📷 GEPA 示例
回到原视频 (00:56:18)

GEPA 算法

📷 GEPA 算法
回到原视频 (00:57:31)

GEPA 用例(一)

📷 GEPA 用例(一)
回到原视频 (00:58:44)

GEPA 用例(二)

📷 GEPA 用例(二)
回到原视频 (00:59:57)

用 GEPA 发现 Agent 架构(一)

📷 用 GEPA 发现 Agent 架构(一)
回到原视频 (01:01:10)

用 GEPA 发现 Agent 架构(二)

📷 用 GEPA 发现 Agent 架构(二)
回到原视频 (01:02:23)

用 GEPA 发现 Agent 架构(三)

📷 用 GEPA 发现 Agent 架构(三)
回到原视频 (01:03:36)

用 GEPA 发现 Agent 架构(四)

📷 用 GEPA 发现 Agent 架构(四)
回到原视频 (01:04:49)

用 GEPA 发现 Agent 架构(五)

📷 用 GEPA 发现 Agent 架构(五)
回到原视频 (01:06:02)

GEPA 用例(三)

📷 GEPA 用例(三)
回到原视频 (01:07:15)

GEPA 用例(四)

📷 GEPA 用例(四)
回到原视频 (01:08:28)

用 GEPA 做对抗性提示搜索(一)

📷 用 GEPA 做对抗性提示搜索(一)
回到原视频 (01:09:41)

用 GEPA 做对抗性提示搜索(二)

📷 用 GEPA 做对抗性提示搜索(二)
回到原视频 (01:10:54)

用 GEPA 做对抗性提示搜索(三)

📷 用 GEPA 做对抗性提示搜索(三)
回到原视频 (01:12:07)

GEPA 用例(五)

📷 GEPA 用例(五)
回到原视频 (01:13:20)


总结(Takeaways)


附:参考与延伸阅读

主题 链接
本讲视频 https://www.youtube.com/watch?v=yRgSQCXr8M0
课程主页 https://eecs189.org/sp26/
官方讲义/笔记(Lecture 27) Google Drive PDF
Terminal-Bench(ICLR 2026)与 Harbor 框架 agent 环境基准
Yao et al., ReAct: Synergizing Reasoning and Acting Reason+Act 循环 · https://arxiv.org/abs/2210.03629
GEPA(Genetic-Pareto) 自动提示优化
MMLU LLM 问答评测 · https://arxiv.org/abs/2009.03300
DCLM / DataComp-LM 预训练语料清洗 · https://arxiv.org/abs/2406.11794

版权说明:本讲视频、幻灯片与课程材料版权归 UC Berkeley EECS 189/289A 课程团队所有。本书为课堂内容的学习性中文重构,仅供学习交流。


全书完。本讲是 EECS 189(2026 春季)课堂重构系列的最后一册。感谢阅读!