AI Coding Harness Engineering(AI 編碼的牽引工程)
概述
從 Thoughtworks 的 Birgitta Boeckeler 與 Chris Ford 對談中發展出的概念。 核心思想:引導 AI Coding Agent 不應靠「嘮叨」(nagging)——塞滿 markdown 規則檔, 而應建立一套 feedback 系統,讓 agent 自己從環境回饋中學習。
核心架構
Feedforward(引導)vs Feedback(回饋)
Feedforward(引導)── 事前給規則、指南、限制條件(如同教騎車時先扶著)
Feedback(回饋) ── 讓環境自動回饋行為結果(如同裝輔助輪讓小孩感受傾斜)
兩者需並用,缺一不可。光是 feedforward(寫一堆規則)會變成 nagging(嘮叨)。
Sensors(感測器)分類
| 類別 | 工具 | 時機 | 成本 |
|---|---|---|---|
| Linter | ESLint, Ruff, pylint | pre-commit | 低 |
| Static Analysis | SonarQube, CodeQL | pre-commit/pipeline | 中 |
| 測試涵蓋率 | Jest, pytest-cov | pipeline | 中 |
| 突變測試 | Stryker, PIT | pipeline | 高 |
| 依賴掃描 | Dependabot, Snyk | pre-commit/pipeline | 低 |
| 架構測試 | ArchUnit | pipeline | 中 |
| AI Code Review | LLM-as-Judge | pipeline | 高 |
CPU vs GPU 工具分類
- CPU tools:確定性、快速、低成本(linter, type checker, unit tests)
- GPU tools:非確定性、慢、高成本(AI code review, LLM as judge)
Shift-Left 策略
Pre-commit (最快/便宜) → Pipeline (較慢/昂貴) → Continuous Monitoring
Linter, Type Checker 整合測試, Mutation 長期監控
Quick Tests AI Review
未解決的問題
- 功能正確性驗證:當 AI 自己寫測試時,如何確保測試本身是對的? → 測試的測試?無限遞迴問題
- 人類角色轉變: 從「審查 AI 寫的程式」→「設計讓 AI 能自我審查的系統」
相關連結
- davidko — 推廣此概念的工程師
- ai-capability-perception-gap — Karpathy 的認知斷層概念(AI agent 能力差異的背景脈絡)
- Martin Fowler 原文:https://martinfowler.com/articles/harness-engineering.html