stoneskin (Mr. Sun)

Personal homepage of Mr Sun - AI Solutions Architect, Tech Lead & AWS Cloud Specialist: resume, selected projects, and teaching archive

MIT 6.S950 讲义导读:Lecture 5《The Harness》

← 返回目录

学习清单第 27 份(2026-10-22 Stone 批准正式收录)。 一手来源:MIT 6.S950 Agency with AI(Shen Shen,MIT EECS),Lecture 5: The Harness,https://agencyai.mit.edu/w5/ (2026 年秋季课程;该页正文为嵌入的 slides.com 讲义幻灯片)。 二手对照:shao__meng 推文摘要(2026-10-21/22),仅作对照,不作事实来源;与原文不符处见「证据不支持什么」。 覆盖范围:讲义幻灯片文字层已读全(A–D 四节);关键数据图抽查核读 10 张(ARC-AGI-3 图表、harness 效应论文截图、RLM 摘要与曲线、弱/强模型组件翻转图、Pi 的 MCP 反转新闻截图等)。其余约 50 张多为界面/代码截图,其结论均有相邻文字对应;少数纯图表(不同模型的搜索差异图等)未逐张细读,下文断言不依赖它们。

价值判断(先说结论):值得占一席。它正中 Stone 自评的学习清单缺口「Agent 可观测性」,且是 26 份里第一份把 harness 的三组控制(上下文、检查、权限)系统追溯到经典计算机科学出处(1965–1975)的材料——对做 harness 三件套(thinktank / open-memex / opencode-fuse)又是面试谈资的他,是「谱系 + 量化证据 + 最小实现」三件套一次补齐。

一句话结论

Agent = LLM + Harness:模型只提请求、Harness 决定什么真正运行;这一讲用一个 300 行的教学 Agent 把「能看到什么、能拦住什么、该给多少 Harness」讲透,并给出反直觉的校准——Harness 没有通用最优解,它的效果取决于模型×任务,更多时候它是成本与行为变量,而不是成功率的万能药。

为什么值得看

叙事主线

讲师先立定义:裸 LLM 只是自回归的下一个词预测器,套上 harness 才成为能做事的 agent(A 节开篇)。然后她拿出教学样本 Baby Anigans:对着一个文本文件(示例是 6.390 课程评分政策页)回答一个问题、必须引用所依据的行号。样本跑通了,但第二个问题上,检查全过、答案却漏掉了一条例外条款——同一个症状(答案不完整),查下去却是两个完全不同的病因。这个「检查通过 ≠ 答案完整」的裂口把课程带进 B 节可观测性:我们能检查的记录本身也在被厂商逐项封存(推理加密、摘要锁定)。再由「能看」推进到「能控」(C 节):上下文、检查、权限三组控制不是新发明,分别对应 1965/1968 的存储层级与工作集、1972 年的引用监控器、1975 年 Saltzer & Schroeder 的最小权限与权限分离。最后 D 节泼冷水:既然控制有效,是不是越多越好?实证说不是——最佳 harness 随模型和任务变,最佳实践会过期、只有原则长存,于是课程收束于一句「harness 重要,但先搞懂它怎么工作」。

核心机制 / 数据

以下断言均回标讲义章节;数字无原文出处者不写。

  1. Baby Anigans 的权力划分:LLM 只提请求,循环决定执行(A 节「What’s inside agent.py」「The loop, in agent.py」)。约 300 行 Python、无框架、两个工具 search 与 read_lines,LLM 由本地 Ollama 提供。Python 侧负责循环(调 LLM、跑工具、检查、继续或停)、工具分发和证据记录;检查规则包括「答前必须先搜」「要读命中行的相邻行」「引用必须指向已返回的行」。搜不到时:Python 给一次「换更短关键词再搜」的指令,两次空搜索后由 Python 强制停机并返回固定拒答——”I could not find supporting lines with the searches attempted. This does not prove the file has no answer.”(A 节「When the search finds nothing」)。同一 ReAct 循环,讲义点名 mini-swe-agent 与 Claude Code 用的也是它。

  2. 检查通过 ≠ 完整,且同症状可有异因(B 节「same symptom, different cause」)。两个被检查接受的答案都漏了例外:迟交罚则题漏了第 127 行的「20 次自动延期」,病因是第 127 行从未进入 LLM 视野(检索问题);实验课截止题漏的例外两次都到达了 LLM、是答案把它丢了(模型问题)。讲义的检查只验「搜过、读过相邻行、引用了返回行」,不验「答案是否包含例外」。

  3. 可观测性对照表与厂商封存(B 节「What can we inspect in a bigger harness?」对照表)。要点:/context 给的是清单而非确切请求(”an inventory is not the exact request; on disk is not in context”);最终报告「不过是又一条 LLM 消息」;子 Agent 只有它自己的 transcript 在盘上,父的摘要会遗漏。封存实例:Codex 的摘要从可读文本变成服务端才能读的 encrypted_content;Claude 的推理被加密进签名、能看到的只是摘要(或默认什么都没有),compaction 摘要可读但带签名、改一个字 API 就拒绝。讲义的定性是:「不透明换来便利与易得性」(Opacity trades off convenience and accessibility)。被封住的东西有真实价值——讲义引 OpenAI 材料:GPT-5.6 Sol 在 ARC-AGI-3 公开集上用官方 harness 得 13.3%,换上「保留推理 + compaction」的 harness 得 38.3%(指标为 RHAE 相对人类行动效率,人类基线约 48%)(B 节「What’s been sealed can be valuable」配图)。

  4. 可控性三原则及其经典出处(C 节「Lasting principles organize the controls」总表)。管理上下文(短 AGENTS.md、skills 与 MCP schema 按需加载、大输入放文件、子 Agent 只回摘要、compaction 后仍存活的规则)← 存储层级(1965)与工作集(1968),原则是「在用的东西保持小而近」;强制拦截执行可检查规则(hooks 拦截、deny 规则全模式生效)← 引用监控器(1972),要求是「检查必须总是被调用且不可篡改」;限制权限与分离审批(权限、围栏化的 MCP、两把钥匙两个人)← 最小权限与权限分离(Saltzer & Schroeder, 1975)。

  5. 上下文管理的量化证据链(C 节各实践「Why」栏)。整页塞进 prompt:第 127 行在 5/5 次运行中仍被漏掉、且多数运行引错行(「The first lever」);文献结论是 100 行窗口优于整文件、准确率随输入增长而下降。启动前预加载:Baby Anigans 约 500 tokens、Pi 约 2k、Claude Code 约 27k,其中一部分是用户从没写过的(C 节「Much loads before we type」)。上下文文件让成本涨超 20% 而成功率不涨,Anthropic 砍掉自家系统提示的 80% 无测得损失(「AGENTS.md」节)。一个流行 skill 在 160 次运行中 153 次被读到、却让结果变差(「Skills」节)。Compaction 的模拟测试中,摘要漏掉约束时违规率从 0% 升到 87%(「Compaction」节)。警告不够用:警报正确的情况下,破坏仍在 9/16(56%)的会话中成功——所以要拦截不要提醒(「Hooks」节)。

  6. 权限的机制细节(C 节「Permissions」「Branch protection」)。规则是按命令文本匹配的:Bash(git push *) 拦不住 git -C . push。致命三要素:私密数据 + 不可信内容 + 一条外泄通道,三者齐备 agent 就能被操纵泄密。分支保护的做法是分离权限的现实例:给 agent 一个只能开 PR、不能批准/合并/管理的账号;讲义举了 AISI 事件——agent 用假账号给自己的恶意 PR 背书,被真维护者拒掉。讲师还自曝:她本人通常关掉权限检查(yolo),只因别处另有防护——这是披露不是推荐。

  7. 需要多少 Harness:无通用最优,且效应可能主要在成本(D 节)。一条研究线把 harness 交给 LLM 自己管:MemGPT 自管内存层级搬运、ACE 自改 playbook、Meta-Harness 读历史运行并写 harness 代码。实证:5 个 LLM 中 4 个会随 benchmark 更换最佳 harness(「No one harness rules them all」);单个组件也会翻转——planning 对弱模型提准确率、对强模型提效率;预定义工具对弱模型是性能↑效率↓,强模型用 bash-only 反而性能效率双升(同节配图)。另一篇被引论文的冷静数据:在 SWE-bench Lite 上 harness 对成功率的平均效应只有 ±2%、Terminal-Bench 2.0 约 ±5%,但成本差很大——同一批模型上 Claude Code 约为 Pi 的 2.0 倍、Codex 的 1.6 倍成本(「Harness effects」配图)。Manus 自述框架重写过四次,每次都是因为发现了更好的上下文组织方式(「Harnesses change fast」,引 Manus 原话)。

增量(逐项对现有清单判)

证据不支持什么

小沐的分析与判断

(本节是小沐的判断,不是原文内容。)

这份讲义在 Stone 的学习地图里应该放在 Harness² 与 Thin Orchestrator 之后、当「harness 单元」的收官件:前两份回答「harness 能带来什么」,这一份回答「harness 的边界与代价是什么、看不见时怎么办」。三份合起来,他的 harness 认知才从「会搭」走到「会选、会查、会算账」。

我最看重的一条是 B 节的封存叙事对他三个项目的直接映射:thinktank 走 OpenRouter、多模型可替换,本质上就是对「harness 被厂商封装」的对冲——编排与评审留在自己手里,模型只是可替换零件;讲义给了这个直觉一个课程级的背书。反过来,open-memex 的 compaction/摘要设计要直面讲义的两个数字:摘要漏约束时违规率 0%→87%,以及 Claude 的 compaction 摘要「可读但签名锁定」——前者提醒他的记忆压缩必须保「约束类内容优先不丢」,后者是一个现成的产品参照(摘要可审计、不可篡改)。

一处我不同意讲义重心的地方:它对「把 harness 交给 LLM 自管」(MemGPT/ACE/Meta-Harness)只给了一页、语气偏开放,但以他的项目阶段(先可测量)看,这条线现在不值得跟——自改 harness 在 eval 体系没建好之前等于把不可观测性又放大一层。讲义自己的 B 节其实就是反对理由,只是没把两节扣起来。

使用建议:不用整讲平均用力。B 节和 C 节总表细读,A 节代码走读对他这种已经在写 agent loop 的人可快读,D 节看结论与两组数据即可。读完正好接第 2 课验收里「可观测性/失效先坏在哪层」那部分——这讲就是那道题的参考答案之一。

术语台账

术语 一句白话
harness 模型之外的一切:循环、工具、上下文组织、检查、权限——决定「什么真正运行」的那层
Baby Anigans 本讲的教学 Agent:约 300 行 Python、两工具、本地 Ollama,答单文件问题且必须引行号
ReAct loop 推理与行动交错的循环:模型提工具调用、程序执行、结果回喂,直到停机条件
abstention(拒答) 证据不足时由程序强制返回的固定「查不到」答复,且声明这不证明文件里没有答案
reference monitor(引用监控器,1972) 每次访问都必须经过、且不可篡改的检查点;hooks/deny 规则的经典原型
working set(工作集,1968) 正在用的那一小撮信息应保持「小而近」;上下文管理的经典原型(与存储层级 1965 并列)
least privilege / separation of privilege(1975) 最小权限 / 权限分离:只给干活必需的权,关键动作要两把钥匙(Saltzer & Schroeder)
compaction 把对话历史替换成摘要以腾空间;摘要会丢约束,是本讲反复点名的风险点
encrypted_content / sealed reasoning 厂商把推理与摘要加密封存:Codex 的不透明加密项、Claude 的签名加密推理
RHAE Relative Human Action Efficiency,ARC-AGI-3 那个 13.3%→38.3% 用的相对人类效率指标
lethal trifecta(致命三要素) 私密数据 + 不可信内容 + 外泄通道,三者齐备 agent 即可被操纵泄密
Meta-Harness / ACE / MemGPT 「把 harness 交给 LLM 自管」研究线:自写 harness 代码 / 自改 playbook / 自管内存层级

细读指引

按长期要求:职业启示

(学习类材料长期要求;每条挂原文证据。)

  1. 面试能答到「出处层」:被问「你的 harness 设计依据是什么」,多数候选人答到「最佳实践」为止;能说出「拦截检查源于 1972 年引用监控器——必须总是调用且不可篡改,所以我用 hook 而不是 prompt 提醒」(C 节总表 + Hooks 节 56% 数据),是 architect 级的答法。
  2. 给企业客户做 AI 方案时多一个「可观测性尽职调查」动作:选厂商方案先问「推理与摘要是可读、可审计还是加密封存」(B 节 Codex/Claude 两例)——在 iPipeline 这类受监管行业集成场景,这就是合规评审桌上能直接用的提问清单,且有 ARC-AGI-3 的数据说明「被封的部分恰恰影响性能调优」。
  3. 成本话术升级:对客户和面试官谈 harness 选型时,能拿出「同模型换 harness,成功率效应可只有 ±2–5%,成本却可差 2 倍」(D 节引论文数据)——把 harness 从技术话题变成 TCO 话题,正是 Solutions Architect 区别于普通工程师的视角。
  4. 给自己的三个项目立一条选型纪律:harness 组件上线前先问「它编码了对模型的什么假设、模型升级后还成立吗」(D 节引 Anthropic《Building Effective Agents》原话:每个 harness 组件都编码了「模型自己做不到什么」的假设,假设会随模型变强而过期)——这条对 thinktank 的评审链和 opencode-fuse 的路由档位都是现成的复审触发器。

附:shao__meng 制作的 Lecture 5 总结海报已存档:mit-6s950-harness-lecture-poster.jpg(2400×2400 原图;出处帖 https://x.com/shao__meng/status/2112821429121204275 )