01 · AI Circularity Ledger
自主性需要驗收測試

一個帶著記分板的商業循環。
結論很簡單:自主性需要驗收測試。一個能力很強的智能體,可以正確執行許多步驟,最後仍沒有完成任務。它可能停在保存記錄前一屏,把“表單已提交”誤當成“對方已接受”,或者在公開頁面仍顯示昨天內容時報告成功。每一步看上去都聰明,業務結果仍然沒有交付。
OpenAI 的 Ironclad 案例描述了一種企業流程:電腦操作與驗證、審批、異常處理共同存在。真正重要的不是光標自己移動,而是模型只是整個流程的一部分,結果仍需通過複核。OpenAI Ironclad 案例
驗收測試讓一人研究部門可以委派執行,同時保留判斷。運行之前先定義什麼狀態算完成、智能體可以行使什麼權限、目的地需要什麼證據,以及出現模糊狀態時如何恢復。之後只按這些條件評估結果。自主性由此從承諾變成可測量的運營合同。
任務是一項狀態轉換
多數提示詞描述活動:研究一個主題、更新頁面、提交記錄、發佈今日版本。活動容易看到,卻難以結算。狀態轉換更精確:運行前什麼是真的,運行後什麼必須是真的,哪一份證據證明變化。
以出版為例。初始狀態可能包含帶日期的來源、未發佈草稿和受保護的生產分支。最終驗收狀態則要求四個完整語言版本、候選修訂上的通過構建、已合併提交、生產部署,以及每個 canonical 路由的公開回讀。寫完草稿只是一項轉換,本地構建通過也只是另一項。兩者都可以成功,而出版仍未完成。
最後一個可見動作不能代替最終結果。點擊按鈕可能只創建請求、排隊任務或打開確認頁面。只有定義的狀態真實存在並且能被獨立讀取,任務才結束。無法讀取時,狀態就是 UNKNOWN。這個詞防止流程把希望寫成事實。
狀態條件應當足夠小,可以直接檢查。與其寫“讓網站更好”,不如要求“canonical 路由返回 HTTP 200,包含當日標題,聲明正確語言,並對應已合併修訂”。智能體因此能收集精確證據,而不是猜測滿意的含義。
權限必須寫進測試
驗收測試還要定義智能體不能改變什麼。系統即使產出了所需頁面,如果同時改動倉庫設置、暴露憑證或發送未經授權的消息,依然失敗。結果與權限屬於同一份合同。
把允許動詞和禁止動詞並列寫清。讀取公開來源、編輯任務文件、創建分支和 PR 可以被允許;修改 DNS、購買服務、發送求職申請、執行交易仍然禁止。測試兩端都要覆蓋:所需狀態已經出現,受限狀態沒有改變。
OpenAI 的 Astra 公告強調電腦操作和專業工作,也描述了管理員控制與安全監測。提供方評測可以說明模型在特定條件下的表現,卻不能替代具體流程的權限地圖。GPT-6 Astra
因此應保留一份簡短權限收據,列出接觸的賬號、採取的外部動作、改動的設置和保持未動的禁止類別。出版收據可以明確:沒有修改 DNS、綁定、祕密或賬號設置。這也是成功的一部分。
完成存在於目的地
軟件工作很容易停留在本地證據:文件存在、測試通過、命令退出碼為零。這些事實重要,卻可能仍在目標上游。目標是公開文章時,目的地就是公開路由;目標是送達消息時,目的地就是接收者線程;目標是保存文檔時,目的地就是耐久存儲及其回讀。
目的地證據有三層。第一是身份:結果是否到達預定路由、線程、記錄或賬號。第二是內容:目的地是否包含預期正文、日期、語言和修訂。第三是確認:目的地是否接受寫入,寫入後是否能夠重新讀取。
瀏覽器超時因此屬於模糊狀態。請求可能在提交前失敗,也可能已經成功但響應丟失,還可能繼續排隊。重複點擊會製造副本。在回讀解決之前,安全狀態是 UNKNOWN。恢復應從觀察開始,而不是再次點擊。
同樣,PR 合併只能證明源代碼狀態,不能證明生產發佈;綠色部署作業只能證明執行,不能證明所有路由提供正確字節。最後一步必須重新打開公開目的地並核對內容。
區分步驟成功與任務驗收
模型提供方常報告任務或基準表現。運營者還需要另一個分母:被驗收的任務。一次運行可能完成五十次工具調用,卻因為最終產物不完整而得到零個驗收任務。步驟成功衡量機械動作,驗收任務才衡量價值。
記錄嘗試任務、驗收任務、人工介入、恢復事件和未解決結果。所有重試都保留在分母中。如果十項任務完成八項,但六項需要介入,兩個事實都要寫出。如果一項結果仍模糊,就記錄九項已解決和一項 UNKNOWN,不把不確定性轉換為成敗。
成本也應使用同一單位。單次嘗試的 token 成本可能下降,而重試與審核讓每項驗收任務的成本上升。把模型、工具和人工恢復時間相加,再除以驗收結果。目的不是虛構精度,而是找出速度是否只是把工作轉移給監督者。
OpenAI 的電腦操作指南建議隔離環境、允許列表,並讓人確認有後果的動作。這些控制點也是測量點;每次確認與介入都可以記錄,使邊界可見。電腦操作指南
建立五部分驗收卡
一張有用的驗收卡應能在一屏內看完。第一欄是初始狀態:帶日期的輸入、當前修訂、現有所有者和保護工作的鎖。這樣新的智能體不會覆蓋有效資料,也不會與活躍所有者競爭。
第二欄是權限:列出允許的賬號、允許的外部影響和明確排除項,同時寫出需要升級的決定。常規重試可以保持自主;花錢、修改身份控制,或向未經授權的渠道發佈,需要新的邊界。
第三欄是目標狀態:儘量寫成機器可檢查條件,明確文件、路由、語言、schema、檢查和收據。仍需判斷時,把編輯或風險標準寫成可觀察要求。
第四欄是證據:指出哪一份來源、日誌、哈希、公開響應或確認對應每個目標條件。證據必須綁定實際修訂。相似頁面的截圖或另一個提交上的構建不能滿足條件。
第五欄是恢復:定義超時、部分寫入、舊鎖、測試失敗或來源不可用時的動作。模糊狀態默認先檢查。複用不可變輸入,只有此前影響已知或操作冪等時才重試。保留失敗證據,讓下一次從現實繼續。
在運行之前寫驗收測試
結果出現後才寫測試,很容易讓評分標準圍繞已有產物漂移。預先聲明條件能反轉這種誘因:強結果可以快速通過,漂亮的半成品仍必須保持未完成。
測試無需預測每個實現細節,只需鎖定結果、邊界和證據。智能體可以發現更好的來源、更簡單的腳本或更安全的恢復路徑,只要最終狀態和權限沒有改變。
這與 NIST AI 風險管理框架的紀律相似:治理上下文、映射風險、測量行為、管理觀察到的結果。框架不會提供每日發佈器的具體檢查,但它說明了為何測量必須和治理連接,而不是孤立評價能力。NIST AI RMF
NIST 的生成式 AI Profile 進一步強調生成系統的特有風險和有文檔的控制。對小型運營者,最實用的翻譯是:記錄來源,定義人工監督,測試失敗路徑,並保留修正聲明所需的證據。NIST 生成式 AI Profile
測試不順利的路徑
只在順利路徑上成功的工作流,仍然只是輔助演示。可靠自主性需要有邊界的失敗測試:在最終寫入前斷開網絡,返回過期會話,讓一個語言文件不完整,或在提交後模擬提供方超時。系統應當停止、報告準確的不確定性,並保留可恢復狀態。
無需製造戲劇化混亂。只選擇日常運行可能出現、且錯誤處理會產生重複、虛假聲明或不安全外部影響的失敗。一兩個精心選擇的測試,常比再跑一次成功流程更有價值。
恢復應當可繼續。日期狀態文件記錄哪些門檻已通過、哪些仍開放;不可變源字節與哈希讓下一次無需重建證據;冪等通知鍵阻止重試發送重複成功消息。
智能體也需要知道何時放棄。由無關活躍所有者持有的鎖應阻止新工人;由本工人的監督器持有的鎖可能完全正常。進程祖先、日期所有權和最近進度可以區分兩者。驗收從確認誰擁有狀態開始。
一個人也能做的小實驗
選擇一個每週任務:有用、可逆、沒有重大外部影響。只讀研究簡報、本地報告構建或 staging 網站審計都適合。凍結一份輸入,寫下五項驗收條件,手工運行一次,再讓智能體運行三次。
每次記錄耗時、是否驗收、介入、恢復、模型與工具費用、未解決狀態。保持相同信息預算。看到手工結果後,不要只改進智能體輸入;除非下一次手工運行也得到同樣改進。
審核被拒絕的工作。拒絕可能暴露薄弱驗收規則、缺少工具權限或脆弱恢復路徑。一次只改變一個機制,用匹配任務重跑,並保留先前結果。這樣得到的是圍繞模型的運營系統證據。
晉級標準很清楚:智能體應提高驗收結果,或在不擴大權限、不隱藏不確定性的前提下降低總工作。如果只是把執行時間轉成審核時間,就維持輔助模式。如果能完成結果並留下乾淨收據,再逐步擴展任務。
收據本身成為產品
自主系統通過讓工作容易核驗來建立信任。收據應列出輸入哈希、所選來源、產出修訂、測試、外部影響、目的地檢查和未解決缺口。讀者應能區分事實與推斷、完成結果與未來計劃。
這套紀律也會改善寫作。每個中心聲明需要來源,每個發佈聲明需要公開回讀,宣傳語言便失去藏身空間。最終產物更平靜,因為信心與證據一致。
驗收測試不會讓智能體永不出錯。它讓失敗可讀、恢復有邊界。這比不中斷的工具調用動畫更有價值。一人組織只有在每項任務都能證明改變了什麼、保留了什麼、什麼仍是 UNKNOWN 時,才能安全地委派更多。
從一張卡開始:定義狀態、權限、結果、證據和恢復,再讓智能體選擇路線。清晰驗收邊界內的自由,纔是可運營的自主性。
分類與關鍵詞
分類: Agentic AI · Operating Systems
關鍵詞: 智能體驗收測試、電腦操作、自主工作流、目的地核驗、恢復、權限邊界
Hashtags: #AgenticAI #Autonomy #AcceptanceTests #IAmRobin