HARNESS ENGINEERING PLAYBOOK 20 / 35
打开全书目录

导读

  1. 00 Harness Engineering 手册:百倍生产力的可靠软件交付
  2. 01 引言:为什么需要 Harness Engineering

卷一:可靠的 Agent 编程(1→10x)

  1. 02 意图对齐:Vibe Coding 为什么失败
  2. 03 用结构传达意图:分层与维度
  3. 04 迭代出一份可执行的规约
  4. 05 实践:AILock-Step Feature Workflow
  5. 06 验证:确保代码忠实于规约
  6. 07 测试基建前置:把规约变成可执行约束
  7. 08 Code Review:补位测试覆盖不到的意图漂移
  8. 09 实践:AILock-Step 的验证链路
  9. 10 演进:规约与验证的持续迭代
  10. 11 卷一回顾:从闭环到演进

卷二:规模化 Agent 开发(10→100x)

  1. 12 规约:让意图能被并行分发
  2. 13 规约规模转变:人类脱离循环
  3. 14 设计原则:自包含
  4. 15 产出方式:可判定决策驱动
  5. 16 实践:博客系统审核队列
  6. 17 验证:当人不再能兜底
  7. 18 验证责任转移
  8. 19 大规模验证的锚点
  9. 20 三层机制:硬门禁、软门禁、集成验证
  10. 21 实践:博客审核队列的验证链路
  11. 22 演进:harness 必然演化
  12. 23 卷二回顾:迭代的harness系统

卷三:治理百倍速的组织

  1. 24 组织重构:当 Agent 改变了协作的前提
  2. 25 为什么旧结构失效了
  3. 26 瓶颈转移:从代码到组织
  4. 27 让流程匹配 Agent 速度
  5. 28 角色重定义:从执行者到治理者
  6. 29 围绕治理重新设计角色
  7. 30 用机制替代人际协调
  8. 31 演进:组织资产与新护城河

专题补遗:企业落地

  1. 32 补遗:把 Agent 接进可复现的交付现场
  2. 33 补遗:用交付事实衡量 Harness

附录

  1. 32 贡献者
05B / 卷二:规模化 Agent 开发(10→100x)

大规模验证的锚点

上一节推出验证责任要从人转移到机制。这一节问一个更具体的问题:机制承担什么责任才能可信。

更新于 · 阅读 Markdown

内容来源:Agents-Zone/harness-engineering-playbook ↗

上一节推出验证责任要从人转移到机制。这一节问一个更具体的问题:机制承担什么责任才能可信。

答案的第一步是把机制要防的东西列清楚。机制防的东西是漂移。漂移是产出偏离意图的地方。要机制可信,先要知道漂移可能在哪里发生。漂移空间不清楚,机制承担的责任就模糊。责任模糊的机制没法可信。

漂移的第一个地点:代码与载体块之间

Agent 拿到一个载体块,产出代码。载体块规定了这一块的意图。代码是意图的实现。两者之间可能有偏离。

偏离的具体形态有几种。代码的函数签名跟载体规定的契约不符。数据库 Agent 的 SQL 字段类型规定是 uuid,实际写成了 int。前端 Agent 的用户交互规定了三步操作流程,代码里实现成了两步跳过中间步骤。业务逻辑规定的排序按相关度,代码里排序按发布时间。错误处理规定的策略是抛异常,代码里返回了 null。

这些都属于代码没有忠实实现载体块。这是漂移的第一个地点。所有的漂在这个地点都发生在一个块的边界内。要判定漂就看这个块的载体加对应代码,两个东西对不对齐。

第一个地点的漂本身可以再细分。有的漂能不理解意思就判断,比如字段类型不匹配。有的漂需要理解意思才判断,比如排序规则反了。两类漂的判定方式差别很大。前者用脚本判断最合适,后者只能用模型判断。下一节会讲到怎么按这个差别拆机制。这一节先把两类都归到”第一漂移地点”这个更粗的分类里。

判定第一地点漂的操作性特点是”块内自足”。给你一份载体块加一份对应代码,不需要看别的块,就能判断这两个东西对不对齐。载体块自己规定了这一块的意图,代码是实现,两者的关系是封闭的。这个封闭性让第一地点的判定可以块内进行,不涉及跨块协调。

漂移的第二个地点:载体块之间

规约章建立的自足性推出载体块之间有冗余。一条决策被自足到多个块里。冗余的地方要保持一致。共同产出流程里有一致性检查,但检查会漏。载体本身可能就漂了。

不一致的具体形态。前端块的 API 契约说 session 用 cookie 传,后端块的 API 契约说 session 用 header 传。schema 块规定 reviewer_id 是 uuid,产品交互块的 UI 状态图里 reviewer_id 类型隐含成整数。两个块的意图错位。基于错位的载体块产出的代码互相不匹配。

这是漂移的第二个地点。它跟第一个地点的性质不同。第一个地点的漂在单块内可以判断,一份载体加一份代码就够。第二个地点的漂只有跨块看才能判断,需要同时对比两个块的意图,或者观察两个块产出的代码集成起来的行为。

第二地点的漂常常隐藏得很深。每一块单独看都自洽——载体块规定了假设 X,代码块按 X 实现,两者对齐。另一块单独看也自洽——载体块规定了假设 Y,代码块按 Y 实现,两者对齐。只有把两块合起来才发现 X 和 Y 冲突。这种漂在单块内检查里永远抓不到。

第二地点的漂还有另一种表现。载体本身没有明确规定某条决策,两块的载体都留了空白。基于空白,两个 Agent 各自猜了一个方向做实现。两块产出的代码也是各自内部自洽的,但对空白的两种猜测相互不兼容。这种情况比”载体两块直接矛盾”更常见。因为载体不完备的地方往往是共同产出流程里没抛出来的决策点。抛不出来是因为大模型没意识到需要人做判定。这种未识别的决策点最后往往落在跨块契约上。

两个地点覆盖所有漂移

到了本章的时候,漂移空间的其他部分都已经处理过。意图形成阶段的漂在规约章的共同产出流程里处理。载体块生成阶段的漂也在规约章处理。这一节的起点是载体在手、多个 Agent 已经从载体产出代码。这个起点之后,漂只可能在两个地方发生。要么代码没对齐载体,要么载体块之间自己就漂了。

两个地点组成完整的漂移空间。机制要可信,必须在这两个地点都有覆盖。

可信度来自失效边界显式的机制组合

有了漂移空间的两个地点,机制的可信问题就有了具体形状。要构造一套可信的机制,需要满足两个要求。第一,每个地点都要有专门机制覆盖。第二,每个机制的失效边界要能陈述清楚。

第一个要求是覆盖问题。没有专门机制的地点是覆盖漏洞。任何漂在漏洞地点发生都逃过机制,最终落在产出上。

第二个要求是可信问题的核心。每个机制都有失效场景。脚本类机制在语义问题上失效。模型类机制在长上下文里 attention 漂。机制失效是机制类型的固有属性,跟设计的好坏无关。要判断机制组合能不能覆盖两个地点,必须知道每个机制的失效边界。

举个例子看这个逻辑。A 机制声称覆盖代码与载体之间的漂。它的失效场景是不理解语义。B 机制也声称覆盖同一个地点,失效场景是长上下文里注意力漂。A 的语义盲区落在 B 的可靠区,B 的注意力漂落在 A 的可靠区。A 加 B 的组合在这个地点上有覆盖。这就是失效互补。

想清楚 A 和 B 是不是互补的前提,是 A 和 B 各自的失效场景已经明确陈述。失效边界陈述不清的机制没法进入互补组合。它承担的责任落在模糊范围里,可信度就是零。

失效边界陈述这件事的操作性要求也要说清楚。陈述失效边界不是加个免责声明,比如”本机制在某些情况下可能失效”。这类模糊陈述没意义。有意义的陈述要具体到”本机制抓 X 类漂移,不抓 Y 类漂移”,X 和 Y 都用可辨识的描述给出。比如硬门禁的失效陈述可以是”抓字段类型、签名、格式规则等结构性问题;不抓语义误用,比如字段类型正确但业务用途错的情况”。这样的陈述让互补分析能操作。任何两个机制放在一起,能明确说出一个的 Y 落在另一个的 X 里。

下一节把这个逻辑落到具体的三层机制上,说明为什么恰好是三层、每层的失效边界在哪。


Harness Engineering Playbook · AgentsZone Community