
Gary Talks Stuff:AI 寫的 Code 一堆 Bug?讓 Claude 跟 Codex 自動互審
Gary 分享一套跨模型自動審稿系統,讓 Claude 與 Codex 互相 review 程式碼,透過 StopHook、Skill 與 Marker 三層架構實現全自動的實作計劃審查流程,徹底解放 solo developer 的生產力瓶頸。
寫軟體的成本在過去兩年因為 AI 被不斷壓低,不用懂程式,一句話就能讓 AI 生出一個網頁甚至一個 App。
這就是所謂的 vibe coding。
但只要真的動手做過,就會發現一個共通痛點:不管用哪個模型,產出的東西總有角落沒想清楚、邊界沒處理,跑起來就是一堆 bug。
來回修改的過程中,vibe coding 的時間全部都卡在 debug 循環上。
為了解決這個問題,Gary 分享了一套自己長期使用的工作流 —— cross model review,讓 Claude 跟 Codex 彼此自動審查,找出各自的盲點。
Claude 與 Codex 的分工哲學
Gary 原本是 Claude 的死忠用戶,但後來感覺 Claude 明顯降智,於是轉去使用 Codex。
用久了又發現 Codex 也有缺點,於是他想通一件事:何必二選一?
兩個模型各有脾氣、各有強項,那就兩個都要,各取所長。
在他的設定中,多數時候主力是 Claude,負責大部分的討論和實作計劃。
Codex 的角色是 reviewer,專門負責挑錯。
當然也可以反過來,畢竟 Codex 比 Claude 便宜不少。
Gary 用一個生動比喻來形容兩者的差異:Claude 很像班上那個第二名,跟他合作愉快、討論細心,偶爾還會給驚喜,但就是會粗心,有些細節沒顧到。
Codex 很無聊,跟他對話沒什麼火花,但他就是穩,尤其在處理後端複雜邏輯時特別可靠,該想到的都幫你想到了,考試總是考第一名。
為什麼不讓 Claude 自己檢查就好?
一個常見的疑問是:既然要省,為什麼不乾脆叫 Claude 自己再檢查一遍?
原因在於模型訓練時的側重點不同。
Codex 做前端的設計有時讓人吐血,但 Gemini 或 Claude 在這方面就做得比較好。
更重要的是,自己寫的東西自己讀三遍還是有錯字,拿給別人卻一眼就看到。
AI 也是一樣的道理,一個模型用自己的腦袋和假設檢查自己,一定存在盲點。
從手動到自動:人肉橋樑的瓶頸
Gary 最早的做法完全純手工:Claude 寫完 plan,複製貼到 Codex 請他 review,再把 feedback 複製回 Claude 修改,改完再貼回去複查。
來回跑好幾輪,直到兩邊達成共識。
雖然沒有嚴謹的 AB test,但體感上程式碼架構確實變乾淨,技術債變少,後續修 bug 的頻率也大幅降低。
但問題也來了:Gary 本人成為了生產力的瓶頸。
當需要多功能並行開發,同時跑三、四條開發線時,每一條線的 plan 都得手動跑好幾輪 review,所有東西都卡在複製貼上的速度上。
更糟的是,人有偷懶的本性。
有些 plan 看起來很簡單,瞄一眼就想跳過 review,結果出包的就是那些覺得應該沒事的東西。
跳過 review 省下的五分鐘,後面要花一兩個小時擦屁股。
出版社比喻:三層架構的理解
Gary 用一個出版社的比喻來解釋整套系統的設計邏輯。
想像出版社出書前的流程:作者寫稿、門口守衛檢查稿件上有沒有審核通過的章、審稿人負責與作者討論修改。
如果沒有章,稿子就不准送出這道門。
作者和審稿人來回討論,審稿人提出問題,作者要嘛改掉、要嘛拿出理由說服審稿人,直到兩個人都同意,審稿人才蓋上章。
老闆從頭到尾只會看到最後那份定稿。
把這個比喻套回系統:作者是 Claude,審稿人是 Codex,門口守衛是 StopHook,審核通過的章是 Marker(寫在檔案結尾的一段文字)。
StopHook:強制攔截的守衛
StopHook 是 Claude Code 裡的一個機制,每次 Claude 想收工、要把控制權交還給使用者之前就會被觸發。
觸發時有兩個選擇:放行(正常結束)或擋下並塞一段提示詞回去讓 Claude 繼續做事。
這個能擋下結束、還能塞提示詞回去的能力,是整套系統能成立的關鍵。
StopHook 在系統中做三件事:掃這一輪有沒有寫出 implementation plan、有的話翻到檔案結尾看有沒有審核通過的 marker、如果沒有 marker 就擋下並叫 Claude 去跑 Codex review skill。
StopHook 只負責攔,不負責審。
Codex Review Skill:審稿方法論
第二塊是 Skill,提供 Claude 一套審稿的方法論。
Claude 被 StopHook 攔下來後會閱讀這份 Skill,指示 Claude 調用 Codex CLI tool 請 Codex 幫忙 review。
直到 Codex 放行後,再回頭在檔案結尾蓋上審核通過的 marker。
兩塊平常互不相干,中間就靠 Marker 這個暗號接起來。
拆成兩塊的好處是解耦:攔截有問題就修 StopHook,審核品質不佳就改 Skill 裡的方法論,各司其職。
完整循環:五步流程
一個完整的審查循環有五個步驟。
第一步,Claude 寫完 plan,想結束對話。
第二步觸發 StopHook,發現檔案尾巴沒有 marker 就擋下。
第三步,Claude 收到 StopHook 的指令啟動 Codex review skill,呼叫 Codex 請他 review。
第四步,兩邊一輪一輪過招,該修的修、該反駁的反駁,直到雙方有共識且 Codex 回覆通過。
第五步,Claude 在檔案尾端蓋上審核通過的 marker。
從頭到尾 Gary 只需要掛在那邊等他們討論完畢。
共識為本:不是跑完輪數就算通過
這套流程最重要的設計是通過標準。
標準不是你們來回討論滿三輪就算過,而是兩個 model 真的達成了共識。
審稿人 Codex 不能為了趕快結束就隨便點個投放水,作者 Claude 也不能為了趕快過關就假裝問題不存在。
每一個爭議,Codex 都要明確表態:要嘛被說服了承認你說得對,要嘛堅持並講清楚到底在堅持什麼。
有爭議就繼續吵,沒有達成共識,不准收工。
Gary 一開始的版本有設最多三輪的上限,後來發現這會逼出很糟的結果:到了第三輪,不管問題解決了沒,它都會為了結束而假裝沒問題。
於是他把上限拿掉,只認一個標準:共識。
同一個對話的魔力:避免過度設計
如果每一輪都重開一個新的 Codex,它每次都是冷啟動,什麼都不記得。
結果就是每一輪都可能挑出一堆新的、不重要的小毛病,永遠挑不完,變成沒完沒了的過度設計。
但如果是同一個對話,Codex 記得自己上一輪講過什麼。
第一輪就把主要的問題一次抓出來,修掉就好。
下一輪它是來驗收的,看改對了沒,然後往共識收斂,而不是重新發明一堆新問題。
當然缺點在於第一次如果漏看,可能會漏掉一些關鍵 bug,但這樣已經可以解決 80% 的問題。
具體案例:電商超賣問題
Gary 舉了一個具體例子來說明這套系統的價值。
假設 Claude 規劃一個電商網站的下單功能,plan 寫得漂漂亮亮,其中一條寫著「這個功能必須保證不會超賣,同一件商品不會賣給兩個人」。
聽起來很完整,但仔細看整份 plan 從頭到尾沒有寫具體的處理方法。
只剩最後一件的時候,兩個人同時按下下單,那一瞬間到底要怎麼處理?誰先搶到?另一個怎麼被擋下來?
Claude 可能因為 context 過長導致遺漏細節,或者模型在處理這種 corner cases 時本來就容易粗心。
這時換 Codex 用第三方的角度客觀審核,就有更高的機率發現盲點,這就是整套系統真正的價值。
Harness:為自己打造的開發環境
Gary 把這件事往上拉一層來看待:他不只是找第二個 AI 來審稿。
他是根據自己的使用習慣替自己建立一套 harness。
Harness 可以理解成包在 AI 外面的整套工作環境,包含給它的限制、流程和工具。
就像老闆幫員工準備舒服的辦公室來提高工作效率,harness 就是你幫 AI agent 準備的辦公室。
回頭看這套流程:StopHook 扮演強制約束,逼著流程一定要走完,不給偷懶的空間。
Skill 扮演工作方法,定義了審核的流程跟方法。
Marker 是他們之間的握手暗號。
同樣的思路可以拿去包任何一件本來就會做、但常常會偷懶跳過的事。
Harness 不用複雜,就像一個好的產品不用太花俏。
只要它能解決生活中不起眼的小摩擦,就能大幅提高工作效率。
QA 精選
Q1:為什麼不只讓 Claude 自檢查,而要引入 Codex?
因為模型訓練時的側重點不同,同一個模型用自己的腦袋和假設檢查自己一定有盲點。
就像自己寫的文章讀三遍還有錯字,拿給別人一眼就看到。
不同的模型用不同的思維框架審查同一份 plan,能更有效地找出實作上的遺漏。
Q2:如何避免 AI review 變成沒完沒了的過度設計?
關鍵在於從頭到尾使用同一個 Codex 對話,而不是每輪重開新 session。
同一對話中 Codex 記得上一輪講過什麼,第一輪抓出主要問題,下一輪是來驗收而不是重新發明新問題。
這樣能往共識收斂,而不是無限循環。
Q3:為什麼不設 review 輪數上限?
Gary 最初設了三輪上限,但發現到了第三輪,不管問題解決了沒,AI 都會為了結束而假裝沒問題。
這完全違背了審核的初衷,因此最終拿掉上限,只認一個標準:真正的共識。
Q4:Harness 的概念可以應用到其他場景嗎?
可以,同樣的思路能拿去包任何一件本來會做、但常常偷懶跳過的事。
Harness 不用複雜,只要能解決生活中不起眼的小摩擦,就能大幅提高效率。
核心精神是從系統層面解決問題,而不是靠人的紀律。
Q5:這套系統對 solo developer 的意義是什麼?
Solo developer 沒有同事可以 code review,所有洞都得自己扛。
透過這套系統,可以建立一個永遠不會累、永遠不會偷懶的同事,24 小時在後面幫忙把關。
一個人也可以有一整個團隊的把關品質。
結語
當 AI 一直產出不夠好的東西,與其每次都自己跳下去手動救,不如回頭問一個問題:系統為什麼會讓這種東西過關?
然後從系統的層面直接把漏洞封殺掉,讓它下次不再發生。
對於 solo developer 來說,這件事尤其重要。
與其祈禱 AI 不要出錯,不如動手建一個讓它可以出錯、但錯誤會被 harness 接住的環境。
這就是一個現代開發者為自己打造的最佳工作流程。
本文章僅作為學習與交流用途,不構成任何投資建議。 原始內容版權歸原節目製作人所有。本網站內容經 AI 輔助整理,並經人工審核後發布,可能仍包含錯誤。 詳見 版權聲明與免責條款。









