agent 出事,多半是 harness 的錯
Your Agent Didn't Fail. Your Harness Did. — Vinoth Govindarajan, OpenAI

Vinoth 用 OpenClaw 的真實 issue 當案例,講五種 agent 在正式環境出包的形狀,並給一套「狀態、順序、授權、收據」的檢查方式。
這場講了什麼
- 出包多半不在模型:Vinoth 一開場就主張,大多數 agent 失敗是 harness 失敗。開場的事故是使用者看到回覆,系統卻沒把這件事記下來,下一輪就接在殘缺的歷史上繼續講。
- 一句話的契約:模型提議,harness 提交,收據作證。模型可以建議訊息、工具或指令,但狀態轉換、提交順序與留下來的證據都歸 harness。
- 五種出包形狀:狀態出現破洞、多個寫入者互相覆蓋、工具呼叫懸空沒有結果、核准失效後還在、內部回報成功但使用者看不到。每一種都拿一個 OpenClaw 的真實 issue 當例子。
- 鎖只鎖提交那一刻:Vinoth 說規則不是「不要並行」,子 agent 平行跑、多個 session 同時跑都可以,但同一份可變狀態只能有一條有序的提交路徑。
- 核准要有形狀:核准物件要答得出誰核准、在哪個 session 與 run、哪個工具、什麼參數、有效多久,還要指向收據。
- 回團隊後做一次稽核:挑一個 agent 系統、追一條真實路徑,問五個問題:什麼叫醒它、繼承了什麼狀態、用了誰的授權、執行了什麼、留下什麼證據。
影片從哪一段開始看13 段
- 00:12開場主張Vinoth 要說服聽眾:多數 agent 失敗不是模型失敗,而是 harness 失敗。
- 00:27開場事故:靜默成功使用者請 agent 記下一筆退款,agent 回說記好了,持久紀錄卻有破洞,下一輪想不起來;沒有報錯,模型還能在壞掉的歷史上講得很自信。Vinoth 接著自我介紹:在 OpenAI 做核心資料與 AI 基礎設施,之前在 Apple 與 Uber 做分散式系統。
- 02:27契約與三件事以 OpenClaw 為公開案例,提出「模型提議、harness 提交、收據作證」,以及擁有狀態、排好變更順序、證明動作三個重點,並用引擎與煞車的車子比喻帶過。
- 04:11harness 藍圖OpenClaw、Hermes 這類個人 agent,和 Codex、Cursor、OpenCode、Claude Code 這類 coding agent,用的都是同一種架構:事件進來,對應到 session key,由 session lane 保證單一寫入者,再經核准與政策呼叫工具,最後留下稽核紀錄。
- 04:59脈絡每輪重建agent runtime 沒有人類那種記憶,每一輪由 harness 重組工作集;缺了或過期一項,答案照樣可以聽起來連貫。這些問題不是新的,agent 讓它們更容易觸發、更難解釋。
- 06:18失敗一:狀態歸誰OpenClaw 的 Telegram 重播案例:訊息送出成功,卻沒寫進作用中的脈絡與逐字紀錄。Vinoth 的判準是每個事實都要有名字明確的擁有者,而且重播得出來。
- 08:07失敗二:覆蓋的寫入者兩個呼叫端讀到同一份舊狀態,各改一筆,後存的蓋掉先存的。解法是對提交做序列化,可以用 queue、mutex、transaction 或 lock。使用者看不到 queue 與 lock,只看得到行為,順序出錯會被當成 agent 的個性。
- 09:55失敗三:懸空的工具呼叫session 裡有工具呼叫卻沒有對應結果,run 在等一個不會來的事件,看起來就是卡住。對策是期限、取消、watchdog,並讓恢復指令不用排在卡住的工作後面。
- 11:14失敗四:核准漂移過期的核准 callback 被當成還能取回,撐過重啟、擋住後面的頻道工作。Vinoth 說核准是綁定範圍的執行狀態,過期要終止而不是空轉,並列出核准物件該有的欄位。
- 12:51失敗五:缺少邊緣證明這是開場事故的反面:訊息工具回報成功,那則訊息卻沒出現在網頁聊天或 TUI 上。內部路徑接受請求,不代表使用者看到。證明是一條鏈:提議、政策放行、嘗試執行、使用者可見的邊緣確認。
- 13:56五個問題的稽核回顧五種形狀後,Vinoth 請聽眾挑一個系統、追一條真實路徑,逐項問:什麼叫醒它、繼承什麼狀態、用誰的授權、執行了什麼(含 idempotency key)、留下什麼證據。
- 16:22回頭套用開場事故把五個問題套回一開始的事故:送達留下來了,持久的那一輪沒有。這個落差就是 harness 的失敗,不需要更好的模型或 prompt,需要完整的收據。
- 17:17收尾文字一旦能變成動作,該問的就不只是模型會不會推理,而是系統能不能擁有狀態、排好變更順序、限定工作時間、約束授權、保存證據。
值得記的話5 句
Coherence does not prove the working set was complete.
回答連貫,不代表 harness 給模型的工作集是完整的05:29And last writer wins is not a consistency model.
「後寫者贏」不算一致性模型08:22Ordering is a product feature because users experience ordering bugs as personalities.
順序是產品功能,因為使用者會把順序 bug 當成 agent 的個性09:39Approval is a scope execution state.
核准是一種有範圍的執行狀態11:46Internal success is not external proof.
內部成功不等於外部證明13:23
名詞與人物7 個
- harness
- 包在模型外面的那一層,負責組脈絡、管狀態、排順序、控權限、留收據;Vinoth 認為正式環境的可靠度由它決定
- receipt
- 跨輪留下來的證據,記錄系統允許了什麼、嘗試了什麼、執行了什麼、使用者可見的邊緣有沒有確認;有別於 transcript 只記 agent 說了什麼
- session key
- 控制層把事件對應到的鍵,決定狀態的邊界
- session lane
- 讓同一份可變狀態同一時間只有一個寫入者的通道
- state owner
- 持久狀態被視為事實來源的那個系統,例如行事曆事件歸行事曆、程式碼變更歸 repo、使用者偏好歸 memory store
- OpenClaw
- Vinoth 拿來當公開案例的 agent 專案,它的 issue、程式碼與文件讓 harness 看得特別清楚
- idempotency key
- 稽核第四題要記錄的欄位之一,與工具或 API 呼叫、參數、嘗試次數、外部結果並列
提到但沒有展開
- Vinoth 指出,這些失敗(timeout、retry、idempotency、log、ordering、state ownership)本來就是分散式系統的老問題,agent 的差別在於前面接的是機率式的規劃器。
- 授權面除了核准與稽核,Vinoth 還提到最小權限收窄工具範圍,以及用 scoped credentials 確保動作用對身分。
同一站:AI Agents15 場
- 從 fork 到 microVM 的沙盒設計009 · Abhishek Bhardwaj(OpenAI) · 45 分
- 背景執行的 computer use 三件套016 · Francesco Bonacci(Cua) · 17 分
- Loops 到底是炒作還是真能用023 · Dex Horthy, Geoff Huntley, Ian Livingstone & Greg Pstrucha · 60 分
- 每個 harness 終將長成 claw028 · Sam Bhagwat(Mastra) · 16 分
- 把執行層獨立出來,換模型不用重寫032 · Dan Farrelly(CTO, Inngest) · 19 分
- 長時程 agent 的四個設計主題033 · Lance Martin(Anthropic) · 25 分
- 讓 agent 看見你所見的畫面034 · Antje Barth(Amazon AGI Lab) · 22 分
- 把 Codex 養成一整個團隊038 · Jason Liu(OpenAI Codex) · 75 分
- agent 走進群組與眼鏡061 · Sai Krishna Rallabandi · 19 分
- agent 出事,多半是 harness 的錯你在這裡
- 把 AI agent 接進事件溯源的詐欺偵測066 · Divakar Kumar(FlyersSoft) · 22 分
- 給每個人自己改的個人應用平台086 · Kenton Varda(Cloudflare) · 19 分
- 用 CCA 考試當 agent 工程的地圖091 · Frank Coyle(UC Berkeley) · 20 分
- 讓背景 agent 接手營運雜務094 · Justin Smith(Resolve AI) · 25 分
- Codex 內部怎麼運作098 · Dominik Kundel(OpenAI) · 21 分