看起來 multi-agent,不等於有隔離
兩個代理輪流上場不等於互相制衡:它們可能是同一個模型呼叫兩次。這套 kit 最重要的框架是四種隔離。AI 出錯時,先問缺的是哪一種。
同一個人分飾兩角#
買現成、自己造,還是等官方?留了一筆最貴的學費沒展開,現在來算。
第二代架構裡有一對代理:codex-coder 寫程式,codex-reviewer 審它。名字不同、prompt 不同、輪流上場,標準的 multi-agent 劇本。但揭開面具之後,兩個都是 Codex:同一個模型、同一套訓練分布、同一批盲點,只是被呼叫了兩次。writer 想不到的坑,reviewer 大概率也想不到,因為他們是同一顆腦袋。於是審查流於形式,還附贈虛假的安全感——你以為有人在把關。
這個陷阱後來被寫成專案的關鍵教訓:「看起來 multi-agent」不等於「真的 isolation」。而它逼出了整套 kit 最重要的智識框架。
隔離有四種,不是一種#
架構文件把「隔離」拆成四個獨立的維度,各防一種病:
| 維度 | 防什麼 | 病灶長什麼樣 |
|---|---|---|
| 時間隔離 | 同質化 | 代理從前面的 code 抄風格、抄假設,錯誤跟著繁殖 |
| 觀點隔離 | confirmation bias | 同一訓練分布的邏輯盲點,自己審自己看不見 |
| 規格隔離 | 錯誤前提 | 大家都在正確地執行一個錯的規格,沒人質疑題目本身 |
| 狀態隔離 | context 污染 | 探索過程的髒東西留在主對話裡,越積越迷航 |
這張表同時是判準也是檢查清單。下次你的 AI 又出錯時,先別急著罵它笨,問一句:這個場景缺的是哪一種隔離? 第二代的假 multi-agent,就是有了「兩個代理」的形式,卻一維都沒隔到,尤其是觀點。
框架還給了一個反直覺的推論:隔離比專業分工重要。subagent 的價值不是「它是某領域的專家」,而是「它是一塊乾淨的狀態隔離區」;模型之間真正的多樣性來自不同的訓練分布,不是你在 prompt 裡給它起的職稱。給同一個模型戴十頂帽子,是分工的幻覺。
角色是職位,不是人#
有了框架,編隊就不再是「三個 AI」,而是三個職位:生成者(規劃+實作)、評估者(review)、研究員。生成者與評估者的關係是經典的 Generator-Evaluator:一個負責產出,一個負責挑錯,中間隔著模型邊界。
那職位怎麼分派?判準也只有一句:研究失敗可以降級,review 失敗不能降級。研究是 nice-to-have,搜不到就搜不到;審查是 must-have,漏一個 bug 就是漏進生產。所以隔離最強的資源(跨模型)優先保給 review,研究交給誰方便誰做。
這個判準後來經歷了一次人事變動的考驗。研究員一職原本由 Gemini 擔任,看上的是它的搜尋整合優勢。
然後在 7 月 4 日下午,我決定讓它退役;從設計 spec 進 repo 到 AI 執行完畢,只花了 23 分鐘。spec 裡特別加粗了一行:
明確記錄:這是個人因素的決策,不是模型能力問題。
為什麼這行字值得加粗?因為否定式選型的理由最容易被後人誤讀。半年後翻到「Gemini 退役」,若沒有這行,最自然的解讀是「它能力不行」,然後在它值得重新評估的時候,被一筆舊帳擋在門外。
我的真實理由是維運成本:帳號、認證、額度管理,在我的環境裡超過了它省下的錢。把「為什麼不要」寫準,是替未來的自己保留重新做決定的權利。
替換策略叫「換心臟,不換介面」:研究員換成 Claude 原生的 subagent,但職位的輸入、輸出、失敗語義全部不動。工作流認得的是職位,不是坐在位子上的人。所以呼叫方一行都不用改,11 個專案隔天照常運轉。
四缺一,不是零#
退役還帶來一個架構紅利:研究能力從此到處都在,於是「環境檔位」只剩一個問題要回答——誰當 reviewer。切換就是一個環境變數(README 原文:export KIT_PROFILE=solo)。日常檔位用跨模型審查,真隔離;受限環境(公司不能裝、額度用完)則降級成 fresh-context 的自家 subagent 自審。
「fresh-context」值得解釋一下:全新開機、不帶任何先前對話記憶的乾淨分身。它跟寫 code 的是同一個模型,但沒看過寫 code 的過程,等於一個「沒有先入為主」的自己。
降級檔位用四維框架一量,性質就清楚了:失去的是觀點隔離(終究是同模型審同模型),但乾淨分身保住了時間與狀態隔離。這是「四缺一」,不是「零隔離」,所以它是一個可接受的降級檔,而不是壞掉的正常檔。
配套一條誠實紀律,直接寫死在鋪進每個專案的規則檔裡(規則原文,表列重排):
solo — fresh-context solo-reviewer subagent — state/time isolation ONLY.
Always tell the user: "cross-model isolation is OFF".
降級必須主動宣告,不准靜默。注意這條規則的執行者是 AI 自己:它要求模型每次降級審查時,親口對使用者說出「跨模型隔離是關的」。自己人審自己人可以是現實,不可以是祕密。
下一篇#
這一篇提出了整套 kit 的智識核心:把「隔離」拆成時間、觀點、規格、狀態四個維度,出錯時先問缺哪一維。用這把尺一量,假 multi-agent 現形(一維都沒隔到)、solo 降級也有了公道的評價(四缺一,不是零)。角色是職位不是人,所以換心臟不用換介面。
隔離的架構立住了,下一個要對付的敵人是自己寫的文件。這個專案出生那天就帶著 2167 行,其中六成三是說明文件:一個還沒有任何使用者的專案,寫了 757 行的使用手冊。下一篇:少即是多,我連砍了三刀。