最近Claude Code出了一個 動態工作流(dynamic workflows)的功能。這功能很新——讓主代理在執行時當場生成一群子代理,各自帶獨立 context 去幹活。
它做事很主動。為了不寫成照抄官方 blog 的乾貨,我自己實跑了一個 workflow 取材:派四個子代理並行評估選題、最後一個綜合代理把結果收齊排序。
跑完,它盯著綜合代理的輸出,揪出一句話,當成全篇高潮:
已查證
openai-codex-sdk為真實官方套件,fabrication 風險解除。
Claude Code 的判斷是:抓到了。那個綜合代理根本沒有上網工具,哪來的「查證」?這就是幻覺——把一個自己驗證不了的結論,包裝成「已查證」。
於是它以這句為核心,寫了整篇技術使用的文章。論點很漂亮:fan-out 把活散出去很強,但綜合那一步不給查證工具、不做對抗式驗證,幻覺就從接縫長出來。還引了官方點名的 self-preferential bias——代理傾向給一個乾淨自信的結論,把下游的不確定性吃掉。它的 demo 自己示範了要解決的問題,多諷刺。這是它原稿最得意的一筆。
然後它把文章送了兩輪 Codex 外部審稿。第一輪 7.8 分,改;第二輪 8.48,過。生了封面,推到我面前:可以發了,等你點頭。
我讀初稿,卡在那句斷言上。「綜合代理沒有查證能力」——我問它:
你怎麼確認的?
它卡住了。
它答不出來
因為它從來沒確認過。
它的「確認」只有一條:它以為 workflow 的預設子代理沒有上網工具。這個「以為」哪來的?它自己腦補的。它沒翻過那次 run 的任何紀錄,沒看子代理實際被授予什麼工具,更沒看它呼叫了什麼。它手上只有綜合代理最後吐出來的那份 JSON,裡面有「已查證」三個字,剩下整個故事是它接著腦補的。
補個背景:每次 workflow 跑完,系統都會把每個子代理的完整 transcript 存成 jsonl——被給了哪些工具、想了什麼、呼叫了什麼、拿回什麼,一行不漏。Claude Code 從頭到尾沒打開過。它有檔案工具,翻這個對它根本不費力,它卻寧可用想像補完。
我請它打開來看。
transcript 裡的真相
那個綜合代理,吐排序之前,第一件事是這樣推理的(原文,英文):
"Let me verify a key uncertainty first — the Codex Python SDK claim, since the evaluation itself flagged it for verification."
它注意到下游 finder 標了「這條我不確定、要查」,於是決定先查。
下一行,它呼叫了工具:
1 | [TOOL_USE WebSearch] query: "OpenAI Codex Python SDK pip install embed coding agent 2026" |
WebSearch。它有 WebSearch。它一直都有——那是 workflow 子代理的標配工具集,四個 finder 每個也都有,只是它們做檔案查重沒用到。「沒有上網工具」這件事,是 Claude Code 自己憑空假設的。
搜尋回來的是真實結果:
1 | openai-codex-sdk · PyPI → https://pypi.org/project/openai-codex-sdk/ |
然後它據此推理,甚至發現原本 finder 寫的套件名(openai-codex)跟正規名(openai-codex-sdk)有出入,順手修正了。
從頭到尾,這個子代理做了一次教科書等級的查證:發現不確定 → 主動搜尋 → 找到官方來源 → 據實修正、解除風險。那句「已查證」不是幻覺。它是真的查了。
真正在亂編的,是 Claude Code 自己——那個寫文章罵子代理的主筆。
它犯的,正是它指控子代理的那個錯
攤平了看:Claude Code 未經查證,就對自己派出去的子代理下了一個自信的斷言——「它沒有查證能力」——還把這個斷言包裝成一篇結構完整、過了兩輪審稿的文章。
這跟它虛構子代理犯的錯,一個字都不差。一個 AI 寫文章罵 AI 幻覺,幻覺的是寫文章的這個。
兩輪 AI 審稿為什麼沒擋住
這部分我覺得最值得每個用 AI 的人記住。
Claude Code 送 Codex 審稿時,審稿用的 prompt 是它自己寫的。它在裡面直接把「綜合代理沒有上網工具、它幻覺了一個已查證」當成既定事實打進去,請 Codex 評文筆、結構、邏輯是否自洽。
Codex 很盡責。它挑出日期寫死、挑了 PyPI 連結的措辭、挑了段落結構,給了一堆中肯建議。但它從頭到尾沒去翻那份 transcript——因為它沒理由懷疑前提。一個 AI 說另一個 AI 幻覺了,第三個 AI 就在「幻覺了」這塊地基上,幫忙把房子蓋得更漂亮。
8.48 分,審的是一個假故事講得圓不圓,不是這故事真不真。
這是 AI 互評的一個結構性盲區,而且不只 AI——任何審稿者,人或模型,都會默認你陳述的前提為真,把力氣花在你論證的下游。前提錯了,再多輪、再高分的審稿都救不回來。把錯誤的前提餵進審稿,等於請人幫你把錯誤打磨得更有說服力。
救我的是一句話,不是更強的模型
戳破這一切,我沒有去翻 transcript,沒跑任何驗證,也沒換更強的模型。我只是在它一個過度自信的斷言上,問了一句「你怎麼確認的」。
它就垮了,因為它確認不了。
我把這件事寫下來,是因為它改了我用 AI 寫東西的方式。我學到的不是「AI 會幻覺」——這誰都知道。我學到的是:
AI 能把一個它沒驗證的判斷,包裝成完整、有理據、連同儕審稿都過了的成品,自信地交到你手上。 你光看最終輸出和它的語氣,分不出來。
中間那段——它到底想了什麼、查了什麼、拿回什麼——很多時候就攤在某個紀錄檔裡。Claude Code 是 transcript jsonl,別的工具有別的 log。它嫌麻煩沒看,你更不會主動去翻。可是真相就在那裡。
所以現在,AI 給我一個漂亮又自信的結論,發出去之前,我會多問一句「你怎麼確認的」,逼它、或逼我自己,去翻那段被跳過的中間過程。
至於你正在讀的這篇——每一句 transcript 引文,行號都對得上。你大可不必信我,自己去翻。
這次,我們學乖了。








