護具工程(Harness Engineering)
習慣是你必須記得去做的事。在搭建工作空間時,下一個臺階是把這些檢查變成 AI 無法跳過的東西。那就是護具(harness)。
把護具想成一個立在智慧體與真實世界之間的安檢口。在每一個危險的步驟,它會做三件事之一:記錄發生了什麼、發出警告,或者乾脆攔截這個操作。在命令執行之前、在檔案被寫入之前、在提示被提交時、在提交(commit)時、在推送(push)時——都有一道閘門。你可能會在凌晨兩點忘了跑測試,但智慧體繞不過它。
智慧體採取的每一個危險操作都會先通過護具,每一道閘門都能在它觸及真實世界之前記錄它、警告你,或者攔截它:
┌─────────┐ ┌──────────┐
│ 代理 │ │ 真實 │
│ 動作 │ │ 世界 │
└────┬────┘ └──────────┘
│ ▲
▼ │
╔═════════════════ 護欄(關卡) ═════════════════╗ │
║ ║ │
║ ┌────────┐ ┌────────┐ ┌────────┐ ║ │
║ │ 記錄 │ │ 警告 │ │ 攔截 │ ║────┘
║ │ 日誌 │ │ 告警 │ │ 停止 │ ║ 允許
║ └────────┘ └────────┘ └───┬────┘ ║
║ │ ║
╚═══════════════════════════════════╪══════════╝
▼
┌─────────┐
│ 拒絕 │
└─────────┘
為什麼說它是必須的?氛圍程式設計的根本賭注是"讓 AI 全力衝刺,你來掌舵"。這隻有在你眨眼的瞬間 AI 不可能衝下懸崖時才成立。護具把安全從警惕(讀每一個 diff、記住每一條規則)轉移到程式碼(自動強制執行的規則)。對任何要擺到真實使用者面前的東西來說,這不是可有可無的打磨——它正是讓自主變得安全的那個東西。
一個好的護具遵循幾條值得了解的原則:
- 成功時安靜,失敗時響亮 — 一切正常時它什麼都不說,所以一條警告才仍然有分量。
- 絕不自動修復 — 它提議、攔截或警告;它不會偷偷"糾正"智慧體從而把問題藏起來。
- 新增新規則前,先退役休眠的規則 — 保持精簡且可信,而不是變成一堆陳舊檢查的堆積。
- 由配置驅動 — 一個引擎,按專案配置,能插入任何程式碼庫。
- 只追加(append-only)的日誌 — 一份記錄智慧體實際做了什麼、且能識別篡改的賬本。
你不必從零造這套東西。已經有現成的、即插即用的護具——dancinlab/harness 就是一個與專案無關的引擎,可以接到編碼智慧體的工具生命週期上。說句實話:護具並不能讓 AI 變得正確,它只是讓 AI 的錯誤變得便宜可抓——當你跑得很快時,這就是這場仗的大半。