~/VibeHandbook
免费 PDF

07 · 12

护具工程(Harness Engineering)

习惯是你必须记得去做的事。在搭建工作空间时,下一个台阶是把这些检查变成 AI 无法跳过的东西。那就是护具(harness)。

把护具想成一个立在智能体与真实世界之间的安检口。在每一个危险的步骤,它会做三件事之一:记录发生了什么、发出警告,或者干脆拦截这个操作。在命令运行之前、在文件被写入之前、在提示被提交时、在提交(commit)时、在推送(push)时——都有一道闸门。你可能会在凌晨两点忘了跑测试,但智能体绕不过它。

智能体采取的每一个危险操作都会先通过护具,每一道闸门都能在它触及真实世界之前记录它、警告你,或者拦截它:

   ┌─────────┐                                   ┌──────────┐
   │  代理   │                                   │   真实   │
   │  动作   │                                   │   世界   │
   └────┬────┘                                   └──────────┘
        │                                              ▲
        ▼                                              │
   ╔═════════════════ 护栏(关卡) ═════════════════╗    │
   ║                                              ║    │
   ║   ┌────────┐    ┌────────┐    ┌────────┐     ║    │
   ║   │  记录  │    │  警告  │    │  拦截  │     ║────┘
   ║   │  日志  │    │  告警  │    │  停止  │     ║  允许
   ║   └────────┘    └────────┘    └───┬────┘     ║
   ║                                   │          ║
   ╚═══════════════════════════════════╪══════════╝
                                       ▼
                                  ┌─────────┐
                                  │  拒绝   │
                                  └─────────┘

为什么说它是必须的?氛围编程的根本赌注是"让 AI 全力冲刺,你来掌舵"。这只有在你眨眼的瞬间 AI 不可能冲下悬崖时才成立。护具把安全从警惕(读每一个 diff、记住每一条规则)转移到代码(自动强制执行的规则)。对任何要摆到真实用户面前的东西来说,这不是可有可无的打磨——它正是让自主变得安全的那个东西。

一个好的护具遵循几条值得了解的原则:

  • 成功时安静,失败时响亮 — 一切正常时它什么都不说,所以一条警告才仍然有分量。
  • 绝不自动修复 — 它提议、拦截或警告;它不会偷偷"纠正"智能体从而把问题藏起来。
  • 添加新规则前,先退役休眠的规则 — 保持精简且可信,而不是变成一堆陈旧检查的堆积。
  • 由配置驱动 — 一个引擎,按项目配置,能插入任何代码库。
  • 只追加(append-only)的日志 — 一份记录智能体实际做了什么、且能识别篡改的账本。

你不必从零造这套东西。已经有现成的、即插即用的护具——dancinlab/harness 就是一个与项目无关的引擎,可以接到编码智能体的工具生命周期上。说句实话:护具并不能让 AI 变得正确,它只是让 AI 的错误变得便宜可抓——当你跑得很快时,这就是这场仗的大半。

想离线阅读?

免费下载整本书的 PDF 或 EPUB。