EnriqueMark
ai運用

約束工程

2026-04 繁體中文

約束(Harness,或者說韁繩、馬鞍,限制馬的工具)工程,是個很有意思的概念,看上去更像是上下文工程的延申——核心的關鍵是把對agent的上下文約束,進展到整個環境約束。給agent提供一套受控的、完善的開發環境,裡面同時包含著所需的預設工具、知識(待注入的上下文)、預定義的指定、安全沙箱、hook等完善的配置。總之其核心目的,就是讓agent在一個遠超單純上下文的環境中工作。

一個比較關鍵的核心是:讓agent自主利用已有的一切,去讓自身保持最佳狀態。而這個最佳狀態是我(約束)設計者,預先定義好的。比如讓agent在合適的時候自主觸發上下文壓縮的hook,亦或者在執行bash命令時強制請求同意,亦或者時從最初就遵循漸進披露的原則,等等。

甚至更進一步的,當今agent時代的程式碼開發瓶頸已經從實現變成了審查,那我就可以在約束內部自定義一個檢查機制(比如TDD導向的開發模式),讓agent在最初就保證程式碼質量。抑或是直接在平臺內部開一個agent,不斷地跟進程式碼質量並即時基於開發agent程式碼質量的反饋。

具體來說,約束包括以下內容: 系統提示 工具、技能、MCP + 及其描述 捆綁基礎設施(檔案系統、沙盒、瀏覽器) 編排邏輯(子代理生成、切換、模型路由) 用於確定性執行的鉤子/中介軟體(壓縮、延續、lint 檢查) The Anatomy of an Agent Harness

可以分為兩個大塊,對狀態的管理,和對邊界的管理。agent的執行在預設狀況下是無狀態的,那麼當我需要讓它開發一個新的專案時,就會變得非常有問題。因此我就需要從外部給它注入狀態,上下文工程就是幹這個的。但隨著專案開發本身開始複雜,那我需要的就不只是讓它知道幹什麼、怎麼做、用什麼做——我還需要規定它的邊界。因此「約束」不只是對上下文的約束,同樣還是對執行和開發的約束。

而這玩意兒做到極致就是全自動的agent,只需要「許願」,就能帶出全部想要的結果。所以想是oh-my-claudecode這樣的工具,其最核心的目的就是給agent提供持久自主執行下的約束。核心模型負責提供大腦,而 Harness 則提供讓其能最大化按照我想要的效果去發揮和生長的基礎平臺。就像一匹馬,讓框架帶著著韁繩,讓它走向我希望它去的方向。


現在比較正式的翻譯叫做「駕馭工程」,這個我確實也更貼切,用合適的Harness讓agent能更好的工作。我之前比較強調「自動運作」,但「人機互動」同樣需要更好的韁繩。一個好的Harness確實對工作非常重要。比如我比較習慣cc,codex和gemini或者opencode也不是不能用,但就總感覺少了點什麼。因為cc的Harness就目前來看,的確是使用者體驗比較好的一批,ide支援也齊全,最大的缺點就是閉源(當然也有開源平替,這還得感謝A\自己的誤操作)。我個人也不是很喜歡廠商鎖定,因此多嘗試其他Harness也是有益的。如果實在不爽,直接換成開源版cc倒也可以。