跳到內容

GVU² 自我博弈迴圈

Agent 自己撰寫、審查、精煉自身人格設定;全自動,橫跨兩個回饋迴圈。

自 Evolution v3(2026-08-06)起,本篇描述的是非預設的逃生門路徑。 下文的 Generator→Verifier→Updater 迴圈在 agent 透過 agent.toml [evolution] legacy_soul_evolution = true 明確選用時仍原封不動 運作,但預設的進化目的地已改為 playbook(小顆粒、可個別淘汰的行為 規則),SOUL.md 對 agent 預設唯讀。目前預設機制見 docs/features/38-aee-playbook-evolution.md, 技術細節見 docs/architecture/evolution-engine.md 第十二章。


比喻:一人分飾三角的編劇室,外加導演剪輯版

Section titled “比喻:一人分飾三角的編劇室,外加導演剪輯版”

想像一位編劇必須自己寫稿、自己審稿、自己拍板,但遵循嚴格的流程:

  1. 編劇根據觀眾反饋起草新版劇本
  2. 編輯(同一人,換一頂帽子)依清單審查草稿:文法、劇情一致性、觀眾指引、篇幅
  3. 製作人(同一人,第三頂帽子)決定是否播出新版本:若播出了,會盯著收視率看 24 小時再做最終決定

如果收視率下滑,立即恢復原版。零永久損害。

現在再想像這位編劇還隨身帶著一本過往失誤筆記(每一個劇情漏洞、每一句尷尬的台詞、每一場搞砸的戲都記在上面)。寫下一版草稿前,他會先翻筆記,避免重蹈覆轍。

而且有時候他不需要重寫整齣戲,只做一次快速的片段修正:調整沒接住的那一小段,在集與集之間直接上線。

這就是 GVU²(Generator-Verifier-Updater 平方)雙迴圈架構。


GVU² 運作兩個互補的回饋迴圈:

外迴圈(行為 GVU) — 演化 Agent 的人格檔案(SOUL.md)。這是策略性、長期的迴圈。當預測引擎偵測到顯著的行為漂移時觸發,產生 Agent 核心身分的新版本。

內迴圈(任務 GVU) — 處理即時的任務層級重試。當特定任務失敗時,內迴圈可以在不修改人格的前提下、用調整過的參數重試。這是戰術性、即時的迴圈。

外迴圈(行為) 內迴圈(任務)
┌─────────────────────┐ ┌──────────────────┐
│ 演化 SOUL.md │ │ 重試失敗的任務 │
│(長期成長) │ ←───→ │(即時修正) │
│ 24 小時觀察 │ │ 不改 SOUL.md │
│ MistakeNotebook │ │ 最多重試 3 次 │
└─────────────────────┘ └──────────────────┘

兩個迴圈共用 MistakeNotebook(一份持續累積的失敗模式紀錄),避免同一種錯誤在不同迴圈間反覆發生。

Generator(生成者) — 建立人格檔案的候選修訂版。它不是憑空運作;它接收:

  • 驗證層提供的具體修改建議
  • 過去嘗試的歷史(避免重複失敗的方法)
  • 目前版本作為起點

Generator 的輸出始終是完整、有效的人格檔案,不是 diff 或 patch。

Verifier(驗證者) — 透過 4+2 層的驗證管線評估候選版本:

層級 檢查內容 方法 成本
L1:格式 結構有效?必填區段存在?長度在限制內? 規則式解析
L2:指標 是否遵守 Agent 的行為契約?有無禁止模式? 對 CONTRACT.toml 做字串比對
L2.5:MistakeRegression 候選版本是否重蹈任何已知的失敗模式? 與 MistakeNotebook 紀錄比對
L3:LLM 評審 是否真的更好?是否回應了反饋?語氣是否一致? LLM 評審 一次 LLM 呼叫
L3.5:SandboxCanary 在真實對話中運作是否正確? 在 container sandbox 內跑一段測試對話 一次 LLM 呼叫
L4:安全性 是否有任何地方退步?改進是否破壞了安全不變式? 確定性比較指標

順序很重要:便宜的檢查先跑。如果 L1 失敗(格式不良),就沒必要跑 L3(昂貴的品質評估)。L2.5 與 L3.5 是新增的兩層:分別攔截對歷史失敗的重蹈覆轍、以及在 sandbox 中驗證真實世界的行為。六層裡有四層是零成本的確定性檢查。

Updater(更新者) — 若四層皆通過,Updater 會:

  1. 將新版本寫入暫存檔
  2. 計算內容的加密指紋
  3. 原子替換舊檔案(rename 操作,不可能出現部分寫入)
  4. 將版本記錄到歷史
  5. 啟動 24 小時觀察期

關鍵創新在於 Verifier 如何與 Generator 溝通:它給的是具體、可執行的回饋,不是像「7/10」這樣的單純評分:

評分式(較不實用):
「品質:6/10。需要改進。」
回饋式(GVU 實際做的):
「問候語區段對這個 Agent 的人格而言過於正式。
建議將『我將為您服務』改為更溫暖的措辭,
例如『很高興能幫忙!』另外,錯誤處理段落
與第二段建立的活潑語氣相矛盾。」

這受到 TextGrad 方法的啟發:將文字視為可微分的訊號。Generator 可以直接依據具體建議行動,而不必猜測「6/10」代表什麼。

迴圈沒有固定的輪數上限;MetaCognition 模組會依 Agent 的歷史動態調整迭代深度:

MetaCognition 評估:
- 過去 GVU 的成功率
- 目前錯誤的嚴重度
- 剩餘預算
|
v
設定迭代深度:3-7 輪
- 複雜度低 + 歷史良好 → 3 輪
- 複雜度高 + 歷史偏弱 → 最多 7 輪

在每一次執行中:

  • 第 1 輪:回應主要反饋,修復最大的問題。
  • 第 2 輪:精煉第 1 輪引入的新問題。
  • 第 3 輪以後:視需要做更深入的精煉。

系統也偵測收斂。如果某一輪的輸出與前一輪幾乎相同,會提前停止,沒必要為遞減的回報燃燒 token。

不是每一次觸發都需要馬上進行完整的演化。Deferred GVU 機制會先累積梯度訊號,才決定要不要真正跑一次循環:

偵測到顯著誤差
|
v
梯度緩衝區累積夠了嗎?
|
+---> 夠了 → 現在就觸發 GVU
|
+---> 不夠 → 累積並延後
(72 小時內最多延後 3 次)
→ 分散在數天內,
相當於 9-21 次有效迭代

這避免了對單一孤立事件反應過度,讓演化更穩定。

面對高風險的演化決策,會有一個獨立的 Evaluator Agent(跑在 Haiku 上以控制成本)進行對抗式驗證:

GVU 候選版本通過 L1-L4
|
v
Evaluator Agent(獨立行程):
- 收到候選 SOUL.md
- 執行結構化評估
- 回傳 JSON 判決:{accept, reject, revise}
- 附上理由與具體疑慮
|
v
判決結果納入 Updater 的最終決定

這個「第二意見」能抓到自動化各層可能漏掉的細微品質問題。


即使候選版本通過了全部四層驗證,也不會永久採納。系統進入觀察期:

新版本部署
|
v
24 小時監控
|
v
效能指標是否穩定或改善?
|
+----+----+
| |
是 否
| |
v v
確認新 回滾到
版本 前一版本

監控的指標:

  • 使用者滿意度訊號(明確反饋、對話長度、回訪率)
  • 預測引擎準確度(新人格是否更難預測?)
  • 錯誤率(Agent 是否犯更多錯?)

回滾是自動且原子的(前一版本的指紋已儲存),恢復只是一個檔案操作。


傳統的 prompt engineering 需要人類閱讀對話、辨識問題、重寫 prompt、測試、部署。GVU 將整個循環自動化。Agent 自己辨識弱點並修復。

4 層驗證 + 24 小時觀察 + 自動回滾意味著系統可以積極演化而不冒風險。壞的改變在影響使用者之前被攔截(驗證),或在滑過時迅速恢復(觀察)。

4+2 層驗證中有 4 層(L1、L2、L2.5、L4)是零成本的確定性檢查。LLM 只用於品質判斷(L3)與 sandbox 測試(L3.5)。一個典型的演化週期總共只需 2-4 次 LLM 呼叫,不論執行了多少次檢查。


  • 預測引擎:決定 GVU 何時觸發。GVU 決定改什麼
  • MistakeNotebook:兩個迴圈共用,外迴圈記錄失敗,內迴圈避免重蹈覆轍。
  • CONTRACT.toml:L2 驗證確保演化永遠不會違反行為邊界。
  • 安全層:SHA-256 指紋確保 GVU 管線之外不會發生未經授權的修改。
  • MetaCognition:依歷史表現驅動自適應的迭代深度。
  • Deferred GVU:累積梯度訊號,讓演化有耐性、以證據為準。
  • Agent-as-Evaluator:針對高風險決策的獨立對抗式驗證。
  • 儀表板:演化歷史可在 Web 介面中查看,顯示每個版本、其反饋和觀察指標。

GVU² 將 prompt 最佳化從手動、容易出錯的過程轉變為自動、安全、高效的管線。雙迴圈架構把策略性成長(行為 GVU)與戰術性修正(任務 GVU)分開,而 MistakeNotebook 確保 Agent 永遠不會忘記自己過去的失敗。Agent 不只是運行而已,它同時在成長、從錯誤中學習,並帶著耐性演化。