Agent = Model + Harness
这个公式是全文的基石。模型负责推理,Harness 负责"剩下的所有事情"——工具系统、上下文管理、权限控制、反馈回路、记忆与协作。优化 Agent 的真正杠杆在模型之外。
重要性:它彻底改变了优化方向——过去大量精力放在换更强模型,但真正的瓶颈在 Harness。从范式理论到钉钉 AI 招聘的真实落地 —— 瓶颈不在模型够不够聪明,而在我们有没有把它"装"好。
本文解读一篇来自阿里云钉钉团队的工程实战长文。原文系统阐述了 Harness Engineering(驾驭工程)范式,并以悟空 AI 招聘 Agent 为案例,展示从"全能通才 Agent"到"2 Agent + N Skill 专才架构"的改造全过程。适合所有正在被 Agent 不可控行为困扰的开发者和工程管理者阅读。
这个公式是全文的基石。模型负责推理,Harness 负责"剩下的所有事情"——工具系统、上下文管理、权限控制、反馈回路、记忆与协作。优化 Agent 的真正杠杆在模型之外。
重要性:它彻底改变了优化方向——过去大量精力放在换更强模型,但真正的瓶颈在 Harness。LangChain 在 Terminal Bench 2.0 实验中,仅通过优化 Harness(自我验证 + 追踪 + 文档),得分从 52.8 提升到 66.5,排行榜从第 30 位跃升至第 5 位。
重要性:一手可查的数据证明 Harness 的回报曲线比换模型陡得多。上下文越少越好、专才 Agent 赢过通才、状态写文件不塞上下文、约束写成 Linter 别写文档。每一条都跟工程师直觉相反,但都是生产环境踩坑后的结论。
重要性:这是 Harness Engineering 的"心法",后文所有工程模式都从这四条衍生。钉钉企业级 Agent "悟空" 从"全能招聘 Agent"(13 工具 + 600 行 Prompt)重构为"2 Agent + N Skill"专才架构,端到端准确率从达不到上线门槛到稳定超过上线门槛。
重要性:不是理论推演,而是生产环境实测——四条铁律在一个真实系统里逐条落地。团队一度堆到 6 个 Agent,编排层开始"选错 Agent",错误率回升。把多余 Agent 下沉为 Skill 后问题立刻消失。Agent 是昂贵的,Skill 是廉价的。
重要性:来自血泪经验的实操阈值,直接可复用。招聘沟通 Agent 是唯一对外发消息的 Agent,团队给它套了三层硬护栏(白名单工具、Linter 拦截、另一个 Agent 审稿),事故率从"每周一两次"降到"记不清上一次是什么时候"。
重要性:企业级场景的底线——Prompt 可以漏、模型可以错,合规底线不能破。文章的论证从开发者的共鸣痛点出发,经过范式理论和铁律心法,最终落到真实工程案例和未来趋势判断。以下是完整的推理链路:
凌晨两点 Agent "自信"完成任务却删掉了三个兼容分支、上下文爆炸、工具选择错误、死循环修复 —— 这是当下开发者最普遍的痛。瓶颈不在模型,在"装配"。
引入 Agent = Model + Harness 公式和三代范式跃迁(Prompt → Context → Harness),提出四条反直觉铁律和六大工程模式作为 Harness 工程的核心方法论。
以悟空 AI 招聘 Agent 为案例,先展示"全能 Agent"的失败(违反铁律一和二),再展示"2 Agent + N Skill"专才架构的成功改造,四维度对比全胜。
Agent 工程师取代 Prompt 工程师、A2A 协作协议、Agent OS 化、模型与 Harness 接口标准化 —— 每条趋势都标注了可证伪条件。
文章将 AI 工程的进化划分为三代:第一代 Prompt Engineering 关注"怎么把话说清楚";第二代 Context Engineering 关注"怎么给 AI 喂对信息";第三代 Harness Engineering 关注"怎么让 Agent 可控地工作"。
作者用了一个生动类比:Prompt 是对马喊话的技巧,Context 是给马看的地图,Harness 是给马造高速公路并配护栏、限速牌和加油站。这个类比的核心洞察是——关注焦点完成了从"话术"到"环境"的彻底跃迁。
文章依据:Mitchell Hashimoto 博客 [1] 系统阐述 Harness Engineering 范式;LangChain 官方博客 [2] 将 Agent = Model + Harness 作为标题级论断。业内常被引用的类比:模型是 CPU,Harness 是操作系统。
影响:对于正在投入大量资源"换更强模型"的团队,这篇文章提供了一个认知转向——真正的杠杆位置一直在模型之外,在 Harness 的工程化程度上。
铁律一:上下文越少越好。工程师本能认为信息越多决策越准,但上下文是稀缺资源,会被污染、会相互干扰、会让模型在工具列表里"逛超市"。文章强调不存在放之四海皆准的"百分比阈值",但给出了明确方向:把上下文当 Code Review 一样精挑细选。
铁律二:专才 Agent 永远赢过通才 Agent。核心经验法则是"Agent 是昂贵的,Skill 是廉价的" [3]——能用 Skill 解决的就别新增 Agent。LangChain Terminal Bench 实验中,将任务拆给专门 Sub-Agent 并只装载必要工具,是排名跃升的关键改动之一。
铁律三:状态要写文件,不要塞上下文。上下文是易失存储,文件系统才是持久内存。Workspace 是真相,Context Window 只是当前工位。文章建议把 Workspace 当成"Agent 的 Git 仓库"。
铁律四:能写成 Linter 的约束,别写成文档。文档只是"建议",Linter/CI 才是"强制"。Mitchell Hashimoto 在 Ghostty 项目中的实践:AGENTS.md 每一条规则背后都对应一个真实失败案例,能写成静态检查的规则绝不停留在自然语言。
文章依据:铁律一引用了业内多团队实测方向(但承认具体阈值因模型差异很大);铁律二直接引用 LangChain 实验 [2] 和专家博客 [3];铁律四引用 Mitchell Hashimoto 的 Ghostty 实践 [1]。
影响:这四条铁律对所有使用 Agent 的团队都有直接指导意义。它们的核心共性是:把"靠模型自觉"替换为"靠工程强制"。
文章将铁律展开为六个可操作的"设计模式":
模式 1:双阶段架构(Init + Exec)。Initializer Agent 理解任务并写入 plan.md,Executor Agent 读取 plan.md 按步执行。两者不共享 Context Window,只通过 Workspace 文件接力——任务可以跨多次会话延续。
模式 2:工具签名即文档。工具名是动词短语(query_calendar 而非 tool_03),参数 schema 每个字段带 description 且说清何时用何时不用,返回值结构稳定。LangChain 实验证明仅改善工具描述就能带来可观准确率提升。
模式 3:Sub-Agent 隔离。每个 Sub-Agent 有独立 Context Window,只看到自己需要的工具,主 Agent 只接收结构化输出而非中间思考。
模式 4:上下游反压。Linter 的错误信息本身就是上下文工程——不只说"违反规则 X",而是解释"为什么这个规则存在、正确做法是什么",让 Agent 读到错误后能自我修正。
模式 5:智能体审智能体。Reviewer Sub-Agent 只看 git diff + rules,角色设定为"怀疑态度的 Senior Reviewer",对 Main Agent 产出一无所知以避免自我合理化污染。
模式 6:熵管理与文档园丁。后台 Agent 定期扫描过期文档、检测架构漂移、提交清理 PR,持续小额偿还技术债。
文章依据:模式 1 引用 Anthropic Claude Code 实践;模式 2 引用 LangChain [2];模式 4-5 引用 Cursor/Cline 内置反馈回路实践。六大模式均标注为"被多家团队在生产环境验证过"。
影响:这是一份可直接"抄"的设计模式手册。每个模式都对应明确的读者问题和解决路径。
第一版(失败):一个全能招聘 Agent,System Prompt 写了 600+ 行,挂载 13 个工具(fetch_resume、parse_pdf、score_match、send_dingtalk_msg、query_calendar、book_room 等)。结果:RPA 跑到一半 Agent "顺手"去回复候选人导致上下文爆炸;10+ 工具里选错工具概率显著偏高;Prompt 第 400 行模型已忘了开头"不要主动发 Offer"的约束;出错时回滚一次要查 2 小时日志。
第二版(成功):按"Agent 是昂贵的、Skill 是廉价的"原则重构为 2 Agent + N Skill 架构。悟空作为 Orchestrator 负责任务拆分和上下文调度;人岗匹配 Agent(RPA 专才,Prompt 80 行,4 个工具)负责 JD 匹配和批量打分;招聘沟通 Agent(聊天专才,Prompt 90 行,5 个工具)负责候选人对话和约面;N 个原子化 Skill(每个 = 一个函数 + 明确签名)负责具体操作;Workspace 文件作为真相之源。
文章依据:所有数字(准确率、上下文消耗、工具数量)均来自团队在内部环境下的实测,文章声明"仅代表本场景"。相对评价为"改造前 vs 改造后"对比,不代表行业基准。端到端准确率从"达不到上线门槛"变为"稳定超过上线门槛"。
影响:这个案例的价值在于它不是理论推演——四条铁律在一个真实的企业级系统里逐条对应、逐条验证。特别是"悟空只调派单这一个动作"的设计,把"50 选 1"拆成了三道"5 选 1"。
经验一:Agent 数量不超过 3 个,Skill 可以无限加。团队一度堆到 6 个 Agent(日报 Agent、简历库 Agent、Offer Agent、超时预警 Agent 等),编排层开始"选错 Agent",错误率回升。把后面几个全部下沉为 Skill,问题立刻消失。Agent 数量本身也是上下文成本。
经验二:RPA + Agent 接缝处要做"事务边界"。引入强制性事务文件:RPA 开始时写 rpa_lock/{batch_id}.json(state: running),每完成一条追加进度,结束时标记 done。任何中断下次启动读 lock 文件从断点续传。对应铁律三。
经验三:聊天 Agent 必须接硬护栏。招聘沟通 Agent 是唯一对外发消息的 Agent,套了三层硬护栏:白名单工具(只能调 send_dingtalk_text/template)、Linter 拦截(敏感词/合规规则)、第二个 Agent 审稿(独立 Context 判断是否冒犯候选人/暴露薪资/暗示录用)。事故率从每周一两次降到"记不清上一次是什么时候"。
文章依据:三条经验均来自悟空 AI 招聘系统的数月运行沉淀,作者明确声明"不是理论推导,而是踩坑换来的"。事故率下降为团队自述数据。
影响:对任何对外交互的 Agent 系统,这三条经验直接可复用。特别是"对外说话和动用户数据的地方,硬护栏要早一步到位"。
趋势一:从 Prompt 工程师到 Agent 工程师。Prompt 工程师卷的是话术(可替代性强),Harness 工程师卷的是系统(上下文设计、工具签名、反馈回路、状态管理)。可证伪条件:12 个月内 Prompt 工程师岗位数量重新增长且薪资中位数显著回升。
趋势二:从工具调用到 Agent 协作协议。MCP 标准化 Agent 与外部世界的接口,下一步是 A2A(Agent-to-Agent)协议,使多 Agent 系统像微服务一样工业化。可证伪条件:两年内无主流 SDK 采用的 A2A 草案。
趋势三:从单 Agent 到 Agent 操作系统。Agent 系统是一种新的计算操作系统——用户交互层是 Shell,编排层是 Scheduler,能力层是系统调用,Workspace 是文件系统,MCP 是设备驱动。可证伪条件未显式给出。
趋势四:模型与 Harness 接口标准化。工具 Schema 标准、上下文交换格式、Sub-Agent 调用协议将逐步建立,换模型可能像换数据库引擎一样简单。可证伪条件未显式给出。
文章依据:作者明确声明"基于当前趋势的一组判断,不是预言",并为前两个趋势提供了可证伪条件。趋势三引用了"Agent OS"类比,为行业常见论述。
影响:趋势一和二对职业规划和技术选型有直接参考价值。标注可证伪条件本身是"资深工程判断和预言式断言的分水岭"。
Harness 直译是"马具"。在 Agent 系统中,它指围绕模型构建的所有工程基础设施:工具系统、上下文管理、权限控制、反馈回路、记忆与协作机制。Mitchell Hashormap 提出:每当 Agent 犯错,就工程化一个解让它不再犯同样的错——这就是 Harness Engineering 的全部精神。如果把模型比作一匹野马,Harness 就是缰绳、马鞍、护栏和高速公路。
Workspace 是 Agent 系统中的持久化存储层,通常以文件系统形式存在。它不是"某一层",而是所有层次共享的状态基座。任务中间结果、Agent 间协作、跨会话延续、审计回放都通过 Workspace 进行。文章将其比作"Agent 的 Git 仓库"——每一步操作都可回放、可审计、可断点续传。在悟空 AI 招聘中,Workspace 存储候选人状态、RPA 进度、聊天历史和面试约定。
MCP 是模型上下文协议,用于标准化 Agent 与外部工具/数据源的接口。文章将 MCP 比作 Agent OS 的"设备驱动"层。它的崛起意味着 Agent 与外部世界的接口正在被标准化,下一步将是 Agent 之间的协作协议 A2A(Agent-to-Agent)。
一种 Harness 设计模式:将复杂任务拆分给专门的子 Agent,每个 Sub-Agent 拥有独立的 Context Window(不污染主上下文),只看到自己需要的工具(避免工具选择空间爆炸),主 Agent 只接收结构化输出(不接收中间思考)。核心理念是"隔离"而非仅仅"拆分"。
一个放在代码库根目录的 Markdown 文件,用来告诉 AI Agent 这个项目的约定、编码标准、架构规则和工作流偏好。Mitchell Hashimap 在 Ghostty 项目中的实践是:每一条规则背后都对应一个真实失败案例,且能写成静态检查的规则绝不停留在自然语言。文章将其比作"项目宪法"。
当 Agent 的 Context Window 中积累了过多不相关的信息(历史对话、无关工具调用日志、中间结果等),导致模型"注意力"被稀释、工具选择错误率上升、行为不可预测的现象。文章给出的解法是 Sub-Agent 隔离 + 状态写文件:让每个 Agent 只看到它需要的信息,把其余状态沉淀到 Workspace。
阅读指引:从左到右代表时间演进,每一代不是替代关系而是层层递进——Harness Engineering 包含前两代的能力,同时增加了工程化的约束和反馈机制。
核心问题:怎么把话说清楚
类比:对马喊话的技巧
关注话术、格式、few-shot 示例
核心问题:怎么给 AI 喂对信息
类比:给马看的地图
关注 RAG、上下文窗口管理
核心问题:怎么让 Agent 可控工作
类比:给马造高速公路 + 护栏
关注工具、权限、反馈、状态管理
文字替代:三代范式的核心转变是从"优化话术"到"优化信息"再到"优化整个运行环境"。每一代包含前代能力,同时新增一层工程化约束。
阅读指引:从上到下是调度层级。悟空(Orchestrator)不直接调工具,只调"派单"动作;两个专才 Agent 各自只看到 4-5 个工具;所有状态通过 Workspace 文件持久化。
文字替代:悟空不直接调 n 个工具,只调"派单"这一个动作。把"50 选 1"的选择题拆成三道"5 选 1",工具选择错率显著下降。
阅读指引:每行代表一个被广泛讨论的团队,右列是其最有辨识度的 Harness 工程选择。
文字替代:五家团队在"四根护栏 × 五层架构"的落点各不相同,但共性是把 Harness 当作产品而非附属品来建设。
下表将文章四条核心铁律与悟空 AI 招聘系统的工程落点逐条对应,展示从理论到实践的桥梁:
| Harness 铁律 | 工程师本能 | Harness 真相 | 悟空 AI 招聘落点 | 风险/限制 |
|---|---|---|---|---|
| 铁律一 上下文越少越好 |
信息越多决策越准 | 上下文是稀缺资源,会被污染、相互干扰 | 每个 Agent Prompt 严格 <100 行;只携带当前候选人状态摘要,不携带历史聊天全文 | 具体阈值因模型和任务差异很大,无放之四海皆准的百分比 |
| 铁律二 专才 > 通才 |
一个超级 Agent 全包 | 通才 Agent 在工具列表里"逛超市" | 只允许 2 个 Agent(人岗匹配 + 招聘沟通),其余全部下沉为 Skill | Agent 数量阈值因编排复杂度而异;文中实测 >3 个时出现选错 Agent |
| 铁律三 状态写文件 |
让 Agent "记住"进展 | 上下文是易失存储,文件系统才是持久内存 | 候选人状态、RPA 进度、聊天历史全部写 Workspace;跨会话靠文件延续 | 文件 I/O 可能成为瓶颈,需设计好 Workspace 结构 |
| 铁律四 约束可执行 |
把规则写进 AGENTS.md | 文档只是"建议",Linter/CI 才是"强制" | 招聘合规规则(如"不许主动发 Offer"、"超时 72h 必须提醒 HR")写成 Linter,工具调用前先校验 | 不是所有规则都能编码为 Linter,需要权衡覆盖面和维护成本 |
下表为同一业务场景下的改造前后对比,所有相对评价均为团队内部实测:
| 维度 | 全能 Agent(改造前) | 专才架构(改造后) |
|---|---|---|
| 工具选择 | n 工具混选,错率明显偏高 | 每 Agent 只看 4-5 工具,错率显著下降 |
| 端到端准确率 | 达不到上线门槛 | 稳定超过上线门槛,可生产运行 |
| 可调试性 | "不知道哪步错了",回滚要查数小时日志 | 日志按 Agent 分桶,分钟级定位 |
| 可复用性 | 换场景就废 | 人岗匹配 Agent 已复用到内推系统;招聘沟通 Agent 已复用到候选人回访 |
| 上下文消耗 | 数量级偏高,长期接近模型上限 | 显著下降,长期处于安全区 |
| 新增需求成本 | 改 Prompt + 加工具,每次回归 2-3 天 | 新增 1 个 Skill 即可,半天上线 |
数据声明:以上所有相对评价均为团队在内部环境下的实测,仅代表本场景。不同业务、不同模型、不同流量下数字会有显著差异。
过去几年大量精力放在"换更强的模型"上,但真正的杠杆位置一直在模型之外。Agent = Model + Harness,Harness 才是工程团队能直接掌控的变量。每一次 Agent 的失败都不是模型的问题,而是环境设计的债。
模型还在进步,但单靠等待更强的模型已经不够了。Harness Engineering 本质上是 AI 时代软件工程的重新发明——上下文设计、工具签名、反馈回路、状态管理,这些都是传统软件工程的核心能力在新范式下的延伸。
能写成 Linter 的约束别写成文档,状态写在文件里别塞在上下文里。这两条看似简单的原则,是从"调 Prompt 的玄学"进入"调系统的工程"的关键分水岭。机器能强制的,永远比人能记住的可靠。
Prompt 可以漏、模型可以错,但合规底线不能破。三层硬护栏(白名单工具 + Linter 拦截 + Agent 审稿)将对外消息事故率从每周一两次降到接近零。这是企业级 Agent 落地的底线工程。
不需要推翻现有系统重来。AGENTS.md 每一条规则背后对应一个真实失败案例,能编码为机器检查的就别让它在自然语言里。区别只是——你今晚回去,会不会先写第一个 Linter。
"每当你发现 Agent 犯了一个错,就花时间工程化一个解,让它将来不再犯同样的错。"
— Mitchell Hashimap,Ghostty 作者,Terraform/HashiCorp 联合创始人 [1]作者观点/趋势判断:文章核心论点 Agent = Model + Harness 引用自 LangChain 官方博客 [2],为行业共识。四条铁律和六大模式为作者团队实践经验总结,标注为作者观点。悟空 AI 招聘的所有数字(准确率、上下文消耗、工具数量)均为团队内部实测,声明"仅代表本场景"。四个未来趋势为作者推测,前两个标注了可证伪条件,后两个未提供。"小团队 × 大代码量"案例明确标注"数字版本不一,本文不作为确定性引用"。
未提供字段:原文未提供具体模型名称(未说明使用了哪个 LLM)、悟空 AI 招聘的绝对准确率数字(仅给出相对评价)、Terminal Bench 2.0 实验的具体时间窗口。