https://x.com/i/article/2109249606538444800
从 Agent Loop 到推理引擎:哈佛大学 26 年秋季最新 CS2680〈现代 AI 系统〉课程深度解读
哈佛大学 CS2680「Modern AI Systems: Agents and System Optimizations」
哈佛大学 2026 年秋季由 Juncheng Yang(哈佛 SEAS助理教授,MadSys 研究组负责人,存储与缓存系统领域知名学者,现转向 AI 系统研究)开设的研究生课程。它的独特之处可以用课程自己的话概括:“跟随一个 agentic system,从 agent loop 一路向下穿透整个 serving stack”(follows one agentic system from the agent loop down through the serving stack)。
市面上讲 LLM 应用和讲推理系统的课程都不少,但把两者用同一条系统主线串起来的课极少。CS2680 不是“LLM 应用课 + 系统课”的拼盘,而是让学生亲手搭建一个完整的 agent,然后一层层拆开它:上层是 agent 循环的设计,中层是对 API 黑盒的优化,底层是自己部署开源模型、控制推理引擎。学生在一个学期内完成从“agent 的用户”到“agent 运行时的作者”再到“推理引擎的运营者”的三级跳。
先修要求是 CS61 加至少一门研究生系统课,熟练 Python 和 PyTorch;这是一门面向系统研究者的 AI 课,而不是面向 AI 研究者的系统课入门。
课程结构:一条主线,五个递进作业
总体设计:解剖式的作业序列
CS2680 的课程内容分两大部分。
Part I 讲 LLM 与 agent:Claude Code 的深度使用、multi-agent 工程(有一讲题为 "100x Engineer")、agent 设计(context 与工具、多 agent 协调、记忆与可靠性、评估、成本与性能、安全),以及 Snowflake 工程师主讲的企业级 agent 实战。
Part II 讲 LLM 系统:serving 基础、speculative decoding、调度与 prefix caching、剪枝与量化、GPU kernel、KV-cache 优化与新架构、路由与负载均衡,另有 Meta 工程师主讲的 AI 基础设施讲座。每个大作业之后都安排学生分享会。
但这门课真正的骨架是五个作业。它们不是五个独立题目,而是同一个系统的五次逐层解剖:学生先站在系统外面看它运行(A1),再打开它亲手重写核心循环(A2),然后在不许碰模型的前提下优化模型之外的一切(A3),接着把商业 API 整个换掉、自己运营推理引擎(A4),最后允许动所有层、但必须以严格的测量方法证明每个改动有效(A5)。五个作业全部个人完成,代码放进同一个私有 GitHub 仓库(教师和四位 TF 协作可见),权重分别为 10%、10%、20%、20%、10%,合计占课程总成绩的 70%。
几个贯穿全程的制度值得先交代:每次作业都要求提交 Claude Code 的 session 存档(作为 write-up 中过程性陈述的证据);每次作业都要求录一段演示或讲解视频;A3 和 A5 的 write-up 以公开发表的博客文章形式交付。作业说明书只在发布当天早上上线,这也是为什么 A4、A5 的完整规格目前(10 月中旬)尚不可见。
A1 "Mads-Lens":观察 agent(10%,9/2–9/20,预计 4–6 小时)
任务:给 Claude Code 本身做一个 Web 前端。用户在页面上输入请求,agent 在指定目录上工作,页面实时展示它的全部活动。课程刻意把体量做小,且明确说明这是唯一一个不作为后续基准的作业。
作业分三部分。第一部分先在终端里跑通 headless 模式:用 claude -p --output-format stream-json --verbose 启动,学生会得到一个结构清晰的事件流;先是 init 事件,然后是 assistant 消息、工具调用(tool_use 块)、工具结果(tool_result),最后是携带 total_cost_usd、duration_ms、num_turns、session_id 的结果事件。通过把 session id 传回 --resume 可以续接会话。作业要求先把一次完整运行保存成 events.jsonl 文件;因为第二部分的 Web 前端,本质上就是这个事件流的一个渲染器。
第二部分实现七个必备功能:①提交 prompt 并选择工作目录;②实时流式渲染轨迹;assistant 文本和每次工具调用的名称与输入随事件到达而显示(而非运行结束后回放),markdown 要渲染成排版而非原始标记;③展示工具结果,且长输出要折叠;这被明确标注为一个留给学生的设计决策;④状态可见性,每个工具调用有 pending/error 状态(通过 tool_use 与 tool_result 的 id 配对判断),每次运行有进行中/完成/失败状态,失败(比如目录不存在)必须产生可见的错误,而不是让页面无限等待;⑤续接会话;⑥展示每次运行的数字,美元成本、耗时、轮次数;⑦把轨迹渲染成树,子 agent 的事件携带 parent_tool_use_id 指向派生它的那次工具调用,需要把子 agent 事件嵌套渲染在该调用之下、可折叠,无子 agent 时退化为平铺列表,宽屏下还要在对话旁展示调用名称的大纲。
规格里嵌着大量真实的工程判断:开发时建议用“回放模式”(读保存好的 events.jsonl 而非真实运行),实现十秒级的编辑-测试循环;禁止使用 agent 框架、禁止自己重写 agent 循环(那是 A2 的事);若部署到公网,必须加随机 access token,因为“这个页面实际上是一个远程控制器”。评分是 70% 七个功能(各 10%,从演示视频中判定)、20% write-up、10% 视觉设计。Write-up 要求三条锚定到具体 session 时刻的观察(agent 如何工作、踩了什么坑、学到什么教训),并明确警告“泛泛的赞美拿不到分”;完全 AI 生成的 write-up 会被扣分。
这个作业表面轻松,实则完成了三件事:学会以程序化方式驱动一个 agent(而不是只会交互式使用)、建立“agent 运行 = 可观测的事件流”的心智模型、并从用户视角亲眼看到 token 和美元是如何被消耗的,这为 A3 的成本优化埋下伏笔。
A2 "Mads-Loop":拥有循环(10%,9/21–10/4,预计 10–12 小时)
任务:从零实现一个名为 madsLoop 的最小 coding-agent harness,并在 SWE-bench Pro 上测试。课程对 agent 的定义直接写在作业里:“agent 就是一个处于循环中的模型;它提出工具调用,你的 harness 执行调用并把结果喂回去。”
具体约束相当严格:必须使用课程代理提供的 qwen3.6-35b-a3b 模型(OpenAI 兼容 API),API key 只能放环境变量;命令行接口为 python madsLoop.py -p "<问题描述>" [--log] <工作目录>,agent 只能在工作目录内读、搜、改、执行命令,正确答案以未暂存的 git 修改形式存在;建议的工具集是 bash、read_file、edit_file、done 四件套;循环每轮把完整消息历史(系统提示 + 问题陈述 + 交替的 assistant/工具结果消息)发给模型,直到模型不再发起工具调用。作业还规定了严格的 JSONL 日志 schema(run_start、api_request、api_retry、tool_call、tool_result、run_end,各有指定字段),隐藏测试探测的是运行时而非模型,考的是 harness 的健壮性。
这个作业有两处教学设计尤为精彩。其一是规格书里明晃晃的警告:"DO NOT TRUST IT",讲义的第 0、1 部分描述的是“一个设计选择,不是答案”,学生必须批判性地检验和修改它,write-up 专门要求写明“你和讲义做得不一样的地方”。这直接把作业从“照图施工”变成了“提出假设、用真实任务检验、再修改”的工程研究循环。其二是 mytest/ 自建任务:学生要自己写四个不属于任何基准的测试任务(问题描述、失败转通过的测试、Dockerfile、以及一个能让测试变绿的真实修复 gold.diff),其中两个必须设计成“初始解不出、但通过改进 agent 可以解出”(改进必须体现在提交的代码里),另两个则保持无解(但 gold.diff 必须能通过测试,证明题目本身是健全的)。这实质上是让学生学会构造可证伪的评测,解不出时,能分清是 agent 的锅还是题目本身无解。
评分:40% 来自在给定任务加隐藏的 SWE-bench Pro 任务上的解题率(在“可解任务”中计算;值得注意的是,对无解任务谎报 PASS 会倒扣分;一处精巧的反投机设计);40% 来自一页纸 write-up(无解性分析 20%、对讲义的偏离 10%、自建任务 10%);20% 来自三分钟代码讲解视频。运行环境在 Docker 容器中,补丁会应用到全新 checkout 上、被扣押的测试会被恢复;改测试文件来作弊是无效的。
A3 "Mads-Opt":榨干每个 token(20%,10/5–10/20,预计 10–15 小时)
这是全课第一个“重”作业,也是竞争性最强的一个。任务:模型仍是黑盒 API,优化它周围的一切,在解题率不降的前提下压低成本和延迟。它不是书面作业,而是一场运行在专门基础设施上的公开赛。
基础设施的设计本身就值得一读:agent 容器(装着你写的 src/,只能写 .tasks/ 和日志目录)与任务容器(每个任务一个独立镜像)完全隔离,两者都不通互联网,agent 容器唯一的出口是一条通往课程 API 的 egress 代理;对任务容器的一切操作必须走 sandbox API(/exec、/read、/write),禁止本地 open() 和 subprocess。调度规则同样明确:同时最多 5 个任务打开;每个任务每次只能有一个正在评分的提交;单任务评分限时 35 分钟(挂起的测试套件按全失败计);总运行限时 4 小时,到点后所有未完成任务按当前状态结算。
成本结构是作业的核心变量。课程 API 提供三档模型,价格刻意拉开了两个数量级:
三档可任意混用,这实际上把模型路由(routing)从一个听课概念变成了学生必须做出的真实决策:哪些子任务值得 Expert,哪些 Starter 就够。加上缓存输入的巨大价差,KV-cache 与 prefix 复用的经济学也第一次变得可感知。
排行榜的规则相当精细:26 个任务,三个指标(解题数、每解出一题的成本、每解出一题的耗时),采用 skyline(Pareto 分层)排名,解出 ≥7 题的提交按三指标的支配关系分层排序,不足 7 题的排在所有达标提交之后。预算限制为每天 30 美元、每次提交 10 美元。计分公式为 max(81 − rank, 50),条件是你至少有一次提交打败基线,官方基线是在 10 美元、4 小时内解出 16 题。也就是说,哪怕排名靠后,追平或超过基线就能保底 50 分;排名第一名得 80 分。80 分给排行榜,10 分给 write-up,10 分给露脸出声的三分钟视频。
两个细节最能说明这门课的性格。其一,失败原因会按任务逐条展示(未打开、未完成、无补丁、测试未运行、import 错误、破坏已有测试、新测试失败;崩溃和超时照样计入成绩),一切透明。其二,作业设有一个特别加分项:报告基础设施的安全漏洞最多可加 3 分,而利用漏洞作弊则整份提交作废;把安全研究也纳入了激励,同时堵死了投机。
A4 "Mads-Serve":自建引擎(20%,10/21–11/10,预计 10–14 小时)
详细规格要到 10 月 21 日发布当天才上线,但方向已在课程页明确:拿掉商业 API,自己用一个推理引擎部署 7–8B 的开源权重模型,运行你自己的 agent。然后测量质量损失了多少、诊断损失来自哪里,并通过 agent harness(而不是换更大的模型或退回商业 API)把性能补回来。这是全课最点题的作业:它把 Part II 所学的 serving、量化、KV-cache、speculative decoding 全部从“听课内容”变成“你必须亲手操作并获得反馈的杠杆”,同时逼学生直面“小模型 + 好系统”与“前沿模型 API”之间的真实差距,并用上层工程手段弥合它。可以预期它的评测集正是 A2/A3 沿用的那套任务;同一 workload 下,唯一变量就是你自己的 serving 栈。
A5 "Mads-Stack":全栈优化(10%,11/11–11/29,预计 12–18 小时)
规格同样未发布,但方法论要求已经写得很清楚,而且相当严格:profile 整条执行路径,解释时间、token 和算力分别花在了哪里;在改动任何东西之前先写下性能假设;然后跨所有层(agent 循环、模型选择、serving 系统)做优化,重跑同一 workload,验证哪些改动真正起了作用。评分延续 leaderboard 模式(80 分性能 + 20 分写作),延迟作为新增指标加入排名。交付物是公开发表的博客。如果说 A3 训练的是“在固定质量下省钱”,A5 训练的就是系统研究最核心的习惯,假设驱动的测量,以及诚实的归因。
递进逻辑:约束的逐层释放
回头看这五个作业的设计,可以看到一条清晰的约束控制线:A1 什么都不能改(只能看),A2 只许改运行时(模型是定的),A3 只许改模型之外的一切(三档模型任选但都是黑盒),A4 必须换掉模型(自己 serve),A5 允许动一切(但必须先写假设)。每一层的自由度都在扩大,而每一层都继承了前一层的产出;A2 建立的评测集成为后续所有作业的基准,A3 的成本意识、A4 的 serving 能力在 A5 汇合。配合 session 存档审计、反投机评分和对无解任务的诚实分析要求,这套作业序列教的不只是五项技能,而是一个完整的纵向系统观:知道钱花在哪,知道时间花在哪,并且能用证据说话。
期末项目:科研训练的浓缩
期末项目占 20%,分产品赛道(做一个真正打败现有最强替代品的工具)和研究赛道(提出一个可证伪的原创论断,分 agent 侧和 systems 侧)。四项评分维度等权:问题与动机、技术执行、评估、报告。
几个要求体现了纯正的系统研究方法论:
•"Reproduce before you improve",先在自己的环境里复现最接近的已有结果,再谈改进;
•基线必须是“最强现有系统”,且明确指出“把输入贴给前沿模型也算一个基线”;
•实验前先固定 workload、指标和协议,重复试验、报告不确定性、测边界条件;
•引用 Ousterhout 的原则要求“往深一层测量”,做组件级分解,而非只看端到端数字;
•负面结果受到明确尊重,一个没做成的项目,只要有出色的分析和诚实的局限说明,可以拿到接近满分。
最终交付形式是 12 月 7 日的现场 poster/demo(同伴互评)和 12 月 8 日通过 PR 提交到课程博客仓库的博文与可复现仓库。
制度设计:几处罕见而值得思考的规定
AI 使用政策是这个课程最“当代”的部分。 AI 工具不是被容忍,而是被鼓励;但强制披露,未披露的 AI 使用按学术不端处理,披露了则零惩罚。更进一步的措施:Claude Code 是全部五个作业的必需工具,学生必须提交导出的 session 文件作为过程证据,支撑 write-up 中的过程性陈述。同时责任完全归己:AI 产生的 bug 和错误论断就是你的 bug 和错误论断,学生须能独立答辩。这大概是“AI 时代如何教系统课”这一问题目前最完整的回答之一:不禁止、不放任,而是让 AI 使用可审计。
Leaderboard 评分(A3、A5)引入了直接竞争:80 分按排名给(公式 max(80 − rank, 50)),过了基线保底 50,另 20 分给写作和视频。A3 比解题率与成本,A5 还加延迟。课程设有公开排行榜(leaderboard.cs2680.com)。教授也明说:大多数人在这两个作业拿不到 80。这把真实的性能竞争引入了课堂。
严格的 20% A 档曲线、四天迟交额度(之后每天贬值 20%)、参与度占 10% 且“零参与就是零分”、嘉宾讲座不得录制、学生和嘉宾演讲时全员合上笔记本。这些细节共同传递出一种高强度的研究文化。
加分项(上限 10%)也有特色:做分享最多各 4%;提出让 ChatGPT、Claude、Gemini 全部答错的"AI-stumper"问题每个值 2%;要求附精确 prompt、三个模型带日期的回答、有出处正确答案和失败分析。这个设计本身就是一个关于当前模型能力边界的众包实验。
算力配置相当扎实:课程自有 HPC 提供 72 台 CPU 服务器和 120 台 RTX PRO 6000 Blackwell GPU 服务器,A1–A3 用 Claude Code 和 API(费用课程承担),AWS 可选。对一门 80 人的课来说,这个资源投入说明了学校对它的定位。
阅读清单的取向
阅读材料几乎全部来自一线实践而非教科书:ReAct、Lilian Weng 的 agent 综述、Anthropic 的 multi-agent 研究系统复盘、Cognition 的《Don't Build Multi-Agents》(一篇反对多 agent 架构的著名檄文)、MemGPT、Claude Code 最佳实践、Simon Willison 的 agentic 工程模式。把 Anthropic 和 Cognition 两家立场对立的文章并排放进同一门课,本身就是在教学生:这个领域没有定论,读一手工程复盘比读二手综述重要。背景参考书则是 OSTEP、MLSys Book 等经典系统教材。
清单内容我放在最后面。
总体感受
这门课的重要性体现在三个层面。
作为课程设计,它是“纵向整合”的典范。现有课程要么教 prompt 工程和 agent 框架(应用层),要么教 vLLM/调度/量化(推理系统层),两者之间存在一条真实的认知鸿沟;做应用的人不理解 serving 的成本结构,做系统的人不理解 agent 的行为模式。CS2680 的五作业序列让学生被迫同时握住两头,而 A4(小模型 + 优秀 harness 追平大模型 API)正是这条鸿沟上最关键的一跳,也是当下业界(推理成本优化、边缘部署、模型路由)的真实问题。
作为学科信号,它标志着“AI 系统”作为独立学科方向的正式成型;不再是大模型课程的附属,而是有自己完整的课程体系、方法论(假设驱动的全栈 profiling)、和评价标准(可复现、负结果友好、基线严格)。授课教师从存储/缓存系统转向 AI 系统,也代表了这一代系统研究者的典型轨迹。
作为 AI 时代教学制度的实验,它的“AI 强制使用 + session 存档审计 + 披露免责”三元组,为“作业到底在考什么”提供了一个自洽答案:考的是驾驭 AI 的过程与对结果的完全责任,而非与 AI 隔离的手工能力。
如果说有什么值得留意的张力:20% A 档曲线叠加 leaderboard 竞争,配合 70% 权重的作业,课程压力会相当大;而“课程不教所有细节、强调自主学习”的定位,也意味着它对学生的自驱力要求高于一般研究生课。这符合它培养研究者的目标,但确实不是一门轻松的课。
一句话总结:CS2680 是目前对“如何把 agent 应用与推理系统教成一件事”最完整、最诚实的一次课程实验;它教的不只是知识,而是当前 AI 工程领域最稀缺的那种纵贯全栈的判断力。
推荐阅读清单
Sep 9 · Agents Use I: How Claude Code Works
- How I use LLMs — Andrej Karpathy(2025,视频)· https://www.youtube.com/watch?v=EWvNQjAaOHw
- Best practices for Claude Code — Anthropic 官方文档 · https://code.claude.com/docs/en/best-practices
- Agentic Engineering Patterns — Simon Willison(2026)· https://simonwillison.net/guides/agentic-engineering-patterns/
- Equipping agents for the real world with Agent Skills — Anthropic(2025)· https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills
- Code execution with MCP: Building more efficient agents — Anthropic(2025)· https://www.anthropic.com/engineering/code-execution-with-mcp
- How skills and MCPs actually work — Lawrence Jones(2026)· https://blog.lawrencejones.dev/demystifying-skills-and-mcps(与 Sep 16 交叉列出)
- Hooks reference — Anthropic 文档 · https://code.claude.com/docs/en/hooks
- The Harness Is the Thing — Scott Fryxell(2026)· https://scott-fryxell.github.io/blog/the-harness-is-the-thing
- Guardrails Beat Guidance: A Large-Scale Study of Rules, Skills, and Persistent Configuration for Coding Agents(2026)· https://arxiv.org/abs/2604.11088
- The Scaffolding Matters More Than the Interface: A Controlled Comparison of MCP and CLI Tool Use Across Seven Agent Scaffoldings, Five Language Models, and One Software Task(2026)· https://arxiv.org/abs/2608.08654
Sep 14 · Agents Use II: 100x Engineer with Multi-agents
- Software 2.0 — Andrej Karpathy(2017)· https://karpathy.medium.com/software-2-0-a64152b37c35
- Software 3.0 — the era of intelligent software development — Itamar Friedman(2022)· https://medium.com/@itamar_f/software-3-0-the-era-of-intelligent-software-development-acd3cafe6cd7
- Software is changing (again) — Andrej Karpathy(2025,演讲视频)· https://www.youtube.com/watch?v=LCEmiRjPEtQ
- Create custom subagents — Claude Code 文档 · https://code.claude.com/docs/en/sub-agents
- Orchestrate teams of Claude Code sessions — Claude Code 文档 · https://code.claude.com/docs/en/agent-teams
- Orchestrate subagents at scale with dynamic workflows — Claude Code 文档 · https://code.claude.com/docs/en/workflows
- Building a C compiler with a team of parallel Claudes — Nicholas Carlini / Anthropic(2026)· https://www.anthropic.com/engineering/building-c-compiler
- Research acceleration: The view inside OpenAI — OpenAI(2026)· https://openai.com/index/research-acceleration-view-inside-openai/
- The Shift to Agentic AI: Evidence from Codex(2026,arXiv)· https://arxiv.org/abs/2606.26959
Sep 16 · Agents Design I: Context Management and Tool Design
Agent 基础:
- ReAct: Synergizing Reasoning and Acting in Language Models(2022)· https://arxiv.org/abs/2210.03629
- Building Effective Agents — Anthropic(2024)· https://www.anthropic.com/engineering/building-effective-agents
- What Is an Agent Harness? Harness Engineering Explained — Tejas Kumar(2026)· https://tej.as/blog/what-is-an-agent-harness
- Patterns, Anti-Patterns, and Primitives for Coding Agents(在线合集)· https://agentpatterns.ai/
- LLM Powered Autonomous Agents — Lilian Weng(2023)· https://lilianweng.github.io/posts/2023-06-23-agent
- A Practical Guide to Building Agents — OpenAI(2025)· https://openai.com/business/guides-and-resources/a-practical-guide-to-building-ai-agents
面向缓存复用的上下文组织(这个小标题本身就点出了系统视角):
- Effective Context Engineering for AI Agents — Anthropic(2025)· https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
- Context Engineering: A Practical Guide for AI Agents — Sourcegraph(2026)· https://sourcegraph.com/blog/context-engineering
- Less Context, Better Agents: Efficient Context Engineering for Long-Horizon Tool-Using LLM Agents(2026)· https://arxiv.org/abs/2606.10209
- How Language Models Use Long Contexts("lost in the middle",2023)· https://arxiv.org/abs/2307.03172
- Diagnosing and Mitigating Context Rot in Long-horizon Search(2026)· https://arxiv.org/abs/2606.29718
工具设计:
- Writing Effective Tools for Agents — With Agents — Anthropic(2025)· https://www.anthropic.com/engineering/writing-tools-for-agents
- How Foundational Models Became Superhuman in Bash — Philipp Schmid(2026)· https://www.philschmid.de/superhuman-bash
- Language Models Can Teach Themselves to Use Tools(Toolformer,2023)· https://arxiv.org/abs/2302.04761
Sep 23 · Agents Design II: Multi-agent Architecture, Coordination, and Communication
- AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation(2023)· https://arxiv.org/abs/2308.08155
- Meta Programming for A Multi-Agent Collaborative Framework(MetaGPT,2023)· https://arxiv.org/abs/2308.00352
- How we built our multi-agent research system — Anthropic(2025)· https://www.anthropic.com/engineering/multi-agent-research-system
- Towards a Science of Scaling Agent Systems(2025)· https://arxiv.org/pdf/2512.08296
- Principles of Context Engineering(即著名的 "Don't Build Multi-Agents")— Cognition(2025)· https://cognition.com/blog/dont-build-multi-agents
Sep 28 · Agents Design III: Agent Memory and Reliability
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(RAG 原始论文,2020)· https://arxiv.org/abs/2005.11401
- MemGPT: Towards LLMs as Operating Systems(2023)· https://arxiv.org/abs/2310.08560
- Where LLM Agents Fail and How They can Learn From Failures(2025)· https://arxiv.org/abs/2509.25370
- Why Do Multi-Agent LLM Systems Fail?(2025)· https://arxiv.org/abs/2503.13657
- Beyond the Leaderboard: A Synthesis of Tool-Use, Planning, and Reasoning Failures in Large Language Model Agents(2026)· https://arxiv.org/abs/2607.05775
- The Danger of Overthinking: Examining the Reasoning-Action Dilemma in Agentic Tasks(2025)· https://arxiv.org/abs/2502.08235
