Agent 精读(四):Harness 工程解决从 Demo 到生产的设计

这是《深入理解 AI Agent》精读专题的第四篇。读的是李博杰的开源书第一章的 Harness 工程与编排模式——第 1 章的最后一部分,读完这章就齐了。
本章思维导图见 专题页 · 章节思维导图

Demo 与生产之间,隔着什么

工业生产相对于 demo,对代码质量是有要求的:产品需要可靠性。Harness 就是这个可靠性的保障——在上下文管理和工具接口之外,再加上三个模块:

  • 约束(Constrain):限定 Agent 能做什么。故障安全默认——所有能力默认关闭、必须显式开放,像手机 App 的权限管理
  • 验证(Verify):自动判断操作结果的对错。只看结构化数据(工具返回的 JSON 字段),不看模型自由生成的文本——后者可能已经被提示注入操纵
  • 纠正(Correct):发现问题自动修正或回退。先静默重试,不行就回滚,连续失败就熔断,再不行交还人工

Harness 五要素循环

原文给了一个参照:Claude Code 的 Harness 里,绝大部分代码都是约束、验证与纠正——工具本身(文件读写、命令执行、搜索)只占一小部分。行业正在从「能做事」转向「可靠地做事」,这就是 Harness 工程成为核心竞争力的原因。

五波演进:每层都包着前一层

AI 应用的工程重心,这些年挪了五次家:

  1. 提示工程:优化输入给模型的自然语言指令
  2. 上下文工程:系统性管理模型能看到的一切——系统提示词、工具定义、用户输入、历史记录、工具返回
  3. Harness 工程:Agent 如何组织模型运行并与环境交互——上一节那五件事
  4. Loop 工程:跨轮次的持续自主运转——谁来发现下一件该做的事、何时验证、何时才算真正完成
  5. Graph 工程:把 Agent 循环、确定性程序、人工审批组织成显式的执行图,节点承担能力,边规定路由与依赖

关键在它们的关系:这五层不是替代关系,是层层包含——提示工程是上下文工程的子集,上下文工程是 Harness 的子集,Harness 是 Loop 的子集,Loop 又是 Graph 的子集。单个 Agent 循环,正是执行图中的一个节点。

五波工程演进,层层包含

模型的差异在缩小

这条演进线的尽头,是那个我越读越信的判断:模型的差异在缩小,未来是模型的工程环境决定表现能力的差异。

这不只是推演,书里给了实测:LangChain 在 Terminal Bench 2.0 上从 52.8% 提升到 66.5%(排行榜 30 名开外跃进前 5),改变的不是模型,是 Harness——让 Agent 自动检查执行结果、检测是否陷入重复循环、优化思考策略。

写死,还是让它自己走

工程视角落到怎么编排上,是两条路:

工作流——执行路径代码写死(订机票:核实身份 → 搜索航班 → 付款 → 确认预订)。流程控制严格,攻击面被限制在单个节点内;代价是遇到预设外的例外,无法变通。

自主 Agent——执行路径由环境反馈实时决定,就是第三篇说的 ReAct 循环。灵活,能应对例外;代价是延迟与成本更高,而且必须设退出条件(任务完成 / 最大轮数 / 不可恢复错误),否则死循环。

工作流 vs 自主 Agent

选择顺序很朴素:先单次调用,再工作流,最后才自主 Agent。实践里常常混合——关键合规流程用工作流保可靠,灵活决策用自主补变通;甚至可以让 Agent 先把工作流写出来,再由工作流执行。

贯穿全书的五个设计模式

第 1 章的末尾一次性命名了五个设计模式,说后面的章节会反复用到。我把它们记在这里,当全书的暗线看:

  1. 提议-审核:产出与评判由两个上下文不同的角色分别承担——审核方看到的是产物本身(渲染结果、测试输出、结构化参数),不是产出方的推理过程。它成立的前提是自审不可靠:同一个上下文里的模型,难以发现自己的盲区,也难以判断自己是否已被注入。
  2. 渐进式披露:不把全部信息一次性放进上下文,先给一份可检索的目录,再按需要去元数据里查找对应的完整指引。第二章的 Agent Skills 是最典型的形态:元数据常驻,正文按需加载。
  3. 只新增不修改:状态只追加、不回头改。最直接的好处是缓存命中率(第二章 KV Cache 的前缀稳定性就是它的性能形态),同时换来可重放、可审计。
  4. 最小 diff + 可回滚:每次修改尽量小、带来源、可单独回滚——出了问题能定位到具体哪一次改动。Matt Pocock 讲代码设计时也有同一个观点:需求要切得足够小,逐个去做,最好有 checkpoint,单一环节出错只改一个节点。
  5. 边界集 + 保留集:任何一次修改都要同时在「应当改变的样本」和「不应当影响的样本」上验证——只测前者会把过拟合当进步,只测后者会把无效修改当安全。

第 1 章读完了

三篇笔记正好合成一层意思:能力边界由 Harness 决定(第一篇),模型即 Agent 只是搬家(第三篇),可靠性靠五要素闭环、工程重心五波上移、五个设计模式贯穿全书(这篇)。

一句话收束第 1 章:模型负责聪明,Harness 负责可靠——聪明在快速商品化,可靠是工程活,也是竞争力。

下一步

  • 开读第 2 章正篇:KV Cache、提示注入攻防、Agent Skills、上下文压缩——第二篇挂的 context-compression 实验一起跑
  • 这章的结论(能力边界、五波演进)会在第 7–9 章回头被用到,到时回看

参考来源