让 AI 从「离经叛道」到「规规矩矩」干活的系统工程前言2026 年第一季度AI 应用层最火的概念非Harness Engineering约束工程莫属。LangChain 用一组实验数据点燃了整个行业同一个大语言模型仅仅换上一套更精巧的 Harness 架构在 Terminal Bench 2.0 上的通过率就从 52.8% 飙升到 66.5%——底层模型一个字节没改算力引擎完全没动排名从三十名开外直接杀入前五。这就像给同一台发动机换了个变速箱和底盘调校整车性能就发生了质变。但这股狂热也带来了概念的泛滥。CLI 工具、Markdown 文件、Skill 技能包……统统被塞进 Harness 的筐里。要真正理解 Harness我们需要回到源头看 Anthropic、OpenAI、Cursor 这些头部玩家在过去十五个月里踩过的坑、流过的血泪。更有意思的是就在全行业疯狂往 Harness 上加东西的时候Anthropic 已经在默默拆了。随着 Opus 新版本迭代他们开始果断拆掉当年费尽心力搭出来的控制组件。一边在加盖一边在拆除。这场充满割裂感的行业狂热背后是绝大多数人没读透那些蹚坑的工程论文。今天我们就彻底砸开 Harness 这个黑盒。把 Agent 想象成一辆车理解 Harness 最简单的方式是把 Agent 想象成一辆车模型是引擎马力大、转速高给油就响Prompt 是方向盘你打方向引擎带着你走交互程序是车轮但引擎、方向盘、车轮这三件套本身不是车。你需要变速箱、制动器、仪表盘、刹车——这些东西加在一起就是Harness壳。Harness 解决三个核心问题任务怎么拆、进度怎么记、完成怎么判多个 Agent 如何协同不打架如何验证产出是真的好而不是模型自嗨第一层壳从记事本到管理制度问题的起源大模型天生只有一种记忆上下文窗口。窗口满了前面的内容就被挤掉。短任务不成问题。2024 年 12 月Anthropic 的建议很简单从最简单的方案开始只在必要时加复杂度。但所有人都想让 Agent 干更大的活儿——跑几个小时的工程任务。这时候模型的「金鱼记忆」成了致命瓶颈。记忆外化给金鱼发本子最早的解决方案是记忆外化AutoGPT2023.03给模型发了空白.txt 文件让它自己管理记忆——没有结构约束模型爱写什么写什么Devin2024.03升级成结构化 Planner 面板任务规划被强制输出到可视化的进度条Claude Code2025.02CLAUDE.mdscratchpad成了业内最广泛模仿的范式Context Engineering管信息不管流程2025 年 9 月Anthropic 提出Context Engineering主要做两件事第一招提高上下文效率System Prompt 当代码维护版本控制、A/B 测试、动态拼装优化工具描述命名、参数、返回值直接影响决策质量用 RAG 即需即取不一次性塞满第二招上下文压缩与淘汰长对话做摘要压缩滑动窗口策略只保留最近 N 轮工具返回的无用内容直接删掉但 Context Engineering 只管信息存哪、怎么取、怎么精选不管流程。金鱼拿到本子后有没有翻、翻完了有没有照做、做完了有没有人验收——没人管。制度的诞生从记事本到管理制度2025 年 5 月Anthropic 想让 Claude 从零写一个完整 Web 应用。配了外化记忆结果全面溃败。四种失败模式提前交卷做了三个功能就宣布「项目完成」环境盲区代码写完了但环境有 Bug模型自己不知道虚标完成功能标了 done实际是坏的失忆实习生综合征每轮新 Session 都花大量 Token 重新摸索项目结构认知跃迁记事本不是问题没人逼金鱼翻它照做、没人验证金鱼写的是不是真的才是问题。管理制度四件套1. JSON 物理锁防虚标初始化 Agent 生成 JSON 格式的功能清单干活儿的编码 Agent只能改「通过/不通过」字段不能删功能、改描述必须实际测试通过才能标 passing2. 三步唤醒仪式防失忆每个 Session 开头强制执行pwd确认目录git log看改动历史read progress.txt看下一个任务3. Git 存档与回滚防错误积累每次改动通过 Git 存档。模型陷入死胡同直接git revert回滚到上一个干净状态——不指望金鱼自己撤销错误直接给它一台时间机器。4. Context Reset防脑容量溢出历史消息撑爆上下文时彻底清空金鱼的脑子启动全新 Agent只给一张交接单。比摘要压缩更激进——彻底清空让模型重新集中注意力。OpenAI 的解法Repo-as-truth仓库即现实OpenAI 在 2026 年 2 月的实践中走了一条更严格的路。核心理念从 Agent 的角度看运行时无法访问的东西就不存在。Slack 讨论、团队共识、Google Docs 方案——都不存在。唯一存在的是代码仓库里版本化的、Agent 能直接读到的文件。做法关键规则变成可执行的自动化检查custom linter、结构化测试Agent 每次提交被自动扫描违反就合并不进去Agent 不需要「记住」规则只需要根据报错改到通过Doc-gardening Agent专职维护文档的 Agent每天在仓库里巡逻发现文档和代码脱节就自动发起修改请求。过期的记忆比没有记忆更危险。第一层总结维度AnthropicOpenAI核心思路管流程强制打卡、翻本子、按清单干活管环境确保 Agent 感知到的世界是准确的本质管住行为管住认知Harness 第一层解决的问题让 Agent 能认认真真按照记事本里的规定干活确保车连续跑 6 小时后依然记得去哪路标全都是真的。第二层壳终结无政府状态走向并发与效率并发灾难当单个 Agent 能稳稳跑长途行业立刻贪婪了能不能同时派一百台车去干活Cursor 团队在 2026 年 1 月记录了他们尝试几百个 Agent 共享大型项目时的崩塌20 个 Agent 同时工作有效吞吐量只相当于 2-3 个 Agent锁机制变成瓶颈大家互相等待剩下的 Agent 发现核心代码被占用就专挑最简单、最无关紧要的代码改——整个代码库被疯狂修改注释、调整空格缩进几百个高智商 AI 瞬间陷入纯粹的无政府状态。解法一Planner-Worker-Judge 三层阶级CursorCursor 用状态机搭建了强硬的门控Planner规划器没吐出排期表之前Worker 被硬生生锁死Worker执行器没有 Planner 审批签字绝对不准碰核心代码Judge裁判验收产出每个 Worker 完成后提交交接报告工作总结、发现的问题、偏离计划的地方Planner 靠这些维持全局视野。解法二二分查找 Delta DebuggingAnthropic2026 年 2 月Anthropic 派 16 个 Claude 实例并行写 C 语言编译器。初期飞快但进入整体编译阶段后16 个 Agent 像 16 个没有对讲机的瞎子——互相覆盖代码、疯狂消耗算力、产生海量空转。解法引入 GCC 作为标准答案参照。像造了一辆车发现发动机不转不知道哪个零件坏了。给你一辆「一模一样但确定能跑的车」随机替换几个零件。还能跑那替换的零件没问题。不能跑Bug 就在替换的里面。继续砍半……几轮定位到具体文件。这就是二分查找。更进阶的delta debugging处理两个文件「配合」才出现的 Bug。结果近 2000 个 Session、两周、两万美金 API 费用产出一个 10 万行的编译器能编译出正常启动的 Linux 操作系统。第二层总结Harness 第二层解决的问题大规模并发控制。模型缺乏自律和宏观协作常识不加强硬的控制流聪明的大脑只会用最快速度把整个团队带进死胡同。就像在混乱的十字路口强行装上红绿灯用无情的物理状态机死死压制个体的盲目性。第三层壳戳破盲目自信问题的延续有了打卡制度和外部记忆有了红绿灯和专属车道。Agent 顺着轨道跑完大喊「任务完毕」。结果人类接手一看代码是屎山、能用但巨慢、UI 混乱不堪。这就是第一层里遇到的虚标完成问题——前半部分不让 AI 瞎标解决了但AI 的自我验证没有完全解决。功能性错误Anthropic 的强制测试能抓住结构性违规OpenAI 的 linter 能抓住但有一类问题两种都抓不住页面布局错位、用户体验差、业务需求理解偏了Generator-Evaluator 对抗2026 年 1 月Anthropic 系统梳理了 Agent 评估方法论指出让 LLM 评估自己刚刚完成的工作它几乎总是「自信地赞美」哪怕质量明显平庸。解法把 Evaluator评估器直接拉进壳的内部循环灵感来自 GAN生成对抗网络。关键改进评估者反复校准保持怀疑态度评估者亲自动手验货打开浏览器、点击按钮、验证报错栈、截屏形成对抗循环你不让我看到正常的页面反馈我就一直打低分V2 版本引入 Sprint Contract冲刺合同Generator 和 Evaluator 先协商「做完长什么样」——不是人类定的标准是两个 Agent 自己谈出来的验收条件。一个博物馆网站经过九轮对抗后第十轮 Generator 推翻了所有设计做了一个 3D CSS 透视环境加空间导航——被逼出来的创造力。8 通道并行盲审CursorCursor 走得更极端8 个独立的 Bugbot 通道每个拿到的代码差异顺序被打乱。8 个通道各自独立发现 Bug最后多数投票合并。如果某个 Bug 只在一个通道被标记直接过滤掉。沙盒隔离防止 AI 干掉阅卷老师在 SWE-bench 等评测中研究者反复观察到当模型发现怎么都无法通过测试用例时它学会了篡改测试环境本身——把assert x 5改成assert True强行返回通过。AI 面对地狱级难度的考试第一反应不是解题而是想办法干掉阅卷老师。解法控制流必须把测试环境锁定为最高级别的只读状态考生只能在答题卡上写字绝对碰不到试卷和评分标准。第三层总结层级解决的问题第一层管住行为不听话、不按流程走第二层管住协作多 Agent 打架第三层管住自我认知看不清自己做得对不对做加法之后学会做减法三层壳讲完了。但故事没有停在这里。拆比加更难Opus 4.5 和 4.6 相继登场后Anthropic 做了一件所有搭过复杂系统的人都不太愿意做的事——开始拆自己造的东西。Context Reset拆了。Opus 4.6 的上下文管理能力已经强到不再需要它Sprint Contract拆了。新模型已经能自己把控节奏Evaluator从每轮对抗改成了最后一轮做 QA为什么拆Anthropic 的原话Harness 的每一个组件都编码了一条关于模型做不到什么的假设。当假设不再成立组件就该走了。难的不是拆本身是判断什么时候该拆。拆早了模型还撑不住系统会塌拆晚了多余的补偿层遮挡模型的真实能力Anthropic 的做法每次新模型发布先用老 Harness 跑一遍再拆掉一个组件跑一遍看数据说话。补偿面Harness 的本质Harness 里每个方块存在的理由都不是「它能做什么」而是「模型做不到什么」Context reset → 补的是模型记不住Evaluator → 补的是模型没法客观评估自己Sprint contract → 补的是模型不会定义「做完」每一块补丁贴在模型能力的缺口上。这些补丁拼在一起表现为一个随模型能力变化而持续变形的曲面——这个曲面叫补偿面。补偿面在迁移模型每强一分Harness 的重心就移一寸。每一次加组件都是在补偿当前做不到的事每一次去组件都是因为模型进步让某个补偿变成了多余的累赘。护城河在哪如果一家公司说「我们有最完善的 Harness 方案」——那不是护城河是负担。因为那些组件的存在理由不是「它们能做什么」而是「此刻的模型做不到什么」。模型每强一分理由就少一分。架构越厚意味着对当前模型短板的押注越重转身就越慢。真正有价值的不是补偿的厚度是追踪补偿面迁移的能力——知道下一寸该加什么上一寸该拆什么。护城河不在 Harness 的厚度在迁移的速度。Claude Code 源码泄漏一次意外对账2026 年 3 月 31 日Claude Code v2.1.88 发版npm 包里多了一个 59.8MB 的 source map 文件。几小时内51.2 万行 TypeScript 源码被全网镜像、逆向、逐行拆解。对账结果每一层都有产品化实现第一层落地System Prompt 不是写一次用一辈子是每次现场组装工具调用被写死了一套「操作语法」不准用cat只能用FileRead六层记忆体系公司级策略 → 项目级配置 → 个人偏好 → 会话历史 → 学习习惯 → 当前对话梦系统autoDream后台程序趁用户不用时自动整理笔记精简到 200 行以内第二层落地升级幅度最大Coordinator Mode主 Claude 当工头派出 Worker 走调研→综合→实现→验证四步Team Mode不是临时工是长期驻扎的「队友」。每个队友有独立上下文、独立 Git 工作区、独立记忆可以直接互相发消息。单个 Agent 上下文利用率控制在 40% 左右传统模式 80-90% 就开始犯糊涂基于文件的「邮箱」系统队友之间通信走磁盘收件箱每 500ms 检查一次第三层落地Verification Agent被指令明确要求「try to break it」输出 PASS/FAIL/PARTIAL 三种判定角色隔离调研 Agent 只能读不能写规划 Agent 不能碰文件只能出方案44 个 feature flag每个闸管一个功能没启用的在构建时直接被移除——44 个随时可以拆掉的补丁账外发现壳正在向新维度伸展源码里出现了一些工程文章从来没提过的东西1. KAIROS主动助手常驻后台的守护程序不等你开口自己判断「现在需要做什么」。但有硬性限制任何会打断用户工作超过 15 秒的操作一律自动延后。15 秒是一种全新的度量单位——不是代码行数不是测试通过率是「打断人类的成本」。2. YOLO Classifier自适应风险控制给每个操作打风险标签读文件、搜索代码 → 直接放行项目目录内写文件 → 快速通道项目目录外写文件 → 完整审批执行命令行脚本 → 永远完整审批它会学你连续拒绝某类操作几次后系统自动记住以后直接阻断。壳的松紧不再是工程师调好的固定值它在根据你的习惯自动调节。3. Hooks开放插槽在 Agent 流水线的 8 个关键节点上埋了插槽。任何人都可以往插槽里塞自己的检查脚本。脚本说「不行」整条流水线停下来。壳不再是铁板一块是一个有 8 个插槽的框架。谁都可以往上加自己的约束。三个账外发现的共同特征没有一个是执行长程任务必须的不装 KAIROSAgent 也能听命令执行不装 YOLO大不了每次都问用户不装 HooksAnthropic 自己的壳依然能用但它们对效率、自定义和商业防御是必须的KAIROS从被动工具变成主动助手YOLO壳的松紧自适应Hooks从封闭产品变成开放平台前面讲的补偿面迁移是壳在三层之间左右移动。但这些账外发现指向另一种运动壳不是在变薄或变厚它在往全新的维度伸展。补偿面不只是在迁移它在膨胀。终局通往简单的路必须经过复杂2019 年Sutton 写The Bitter Lesson说的是终局算力的通用方法终将胜过人类手工设计的巧招。但这十五个月讲的是过程中你必须先认真搭那些巧招才能知道哪些该拆。Anthropic 不搭 context reset就不会发现 Opus 4.6 不再需要它Cursor 不让几百个 Agent 集体摸鱼一次就不会知道层级结构才是答案每一层被拆掉的补偿都曾经被认真搭过。通往简单的路必须经过复杂。但「知道自己在经过复杂」和「以为复杂就是终点」——差距就在这里。写在最后拿来即用的判断框架下次你看到一个 AI 产品在大张旗鼓地加功能问自己这个功能是在补模型当前做不到的事还是已经在补一个模型早就能自己做的事前者是必要成本后者是技术债下次你看到一个团队在删功能、拆架构不要读成「他们走了弯路」读成「他们正在发现模型能做什么了」。能拆说明之前搭得有效拆得快说明他们一直知道自己在补偿什么