聽話,不代表懂你:GPT 接進 Claude Code 第二週的性格觀察
我原本以為把 GPT 接進 Claude Code,工程都在接入那一段:雷排完、設定對好,後面就是換一顆比較便宜的引擎繼續開。真的拿來當日常主力跑到第二週才發現,接進來的不是引擎,是一個新同事。同一份 CLAUDE.md、同一批 skill、同一組 hook,這個新同事讀出來的意思跟前一個完全不同。
這篇比的不是誰聰明。範圍先劃好:只看查證紀律、證據格式、硬性規則的執行穩定度這三件事,樣本是 7 月 14 日至 21 日間八場可逐行回查的對話,六場 GPT(gpt-5.6 家族)、兩場 Fable(Claude 這邊的旗艦模型,我原本的日常主力),任務型態沒有完全對齊。所有結論都是我環境裡的樣本行為,不是模型通論。前半看模型怎麼執行我的治理層,後半看視窗環境怎麼吃掉一條拍板過的結論。
先看兩組對照
第一組是查證跟證據。GPT 的回答有個固定形狀:評一個 repo 連比例都附算式(117 ÷ 3,804 = 3.08%)、估計值標「初始估計、未驗證」、宣稱完成前先跑自我驗證。我規則裡寫的證據要求,它一條一條展開執行。Fable 的兩場對照則是另一個劇本。一場先拿它累積的 memory 舊筆記很有信心地回答,被追問才回頭查證,然後自己招認這違反了我寫的「memory 是宣稱不是證據」。另一場照二手描述講工具原理,讀到原始檔案才更正,同樣的錯那一場犯了兩次。兩場的共同點:第一輪都沒碰原始證據。公道話也要講,Fable 被戳之後翻案得很乾脆,甚至會反過來拿自己的錯當分析素材,差別集中在第一輪查不查,不在改不改得動。
第二組是 skill 觸發,八場全數逐筆算。口徑先講清楚:回合以我實際輸入一次為準,次數算的是 skill 呼叫、同回合觸發多條分開計,手動斜線叫的不算。結果:GPT 的六場 54 個回合自發觸發 38 次、Fable 的兩場 23 個回合觸發 5 次(38/54 對 5/23,精確算是 3.24 倍)。查事實前必跑的查證 skill,GPT 六場自發跑了 12 次、Fable 0 次;寫自動化流程前必讀的那條,6 比 0。很多條觸發我自己都沒預期會發生,因為用 Fable 的時候它們幾乎不會亮。
規則是寫給 Fable 的,執行最徹底的是 GPT
這兩份統計裡藏著一個很妙的反差。我 CLAUDE.md 裡那條反晶晶體規則(能翻成中文的英文詞就翻),當初就是因為 Fable 中英夾雜太兇才寫的。結果呢?我拿七個它最常犯的英文詞(frame、prior、polarity、landscape、delta、census、revealed adoption),去數五場研究型對話(GPT 三場、Fable 兩場):Fable 51 個候選命中;GPT 只有 8 個,換算每千個中文字的命中密度是 3.74 對 0.43。規則的目標讀者不甩規則,路過的新同事倒是背得滾瓜爛熟。
順帶一提,GPT 也不是零缺陷,它有自己的毛病:同一批樣本裡抓到 4 次「運行」這種對岸用語。兩邊都要挑,只是密度差了快九倍。
那太聽話是純優點嗎?
不是,這正是第二週最明顯的心得。上一篇有顆雷:內建 skill 的觸發條件寫得太寬,GPT 照字面觸發、一發把 context 灌爆,而 Claude 家的模型遇到同一顆會自己跳過。當時把它歸在接入的坑,現在看清楚了:那顆雷跟前面的模範生統計是同一顆旋鈕。觸發條件命中就執行,這件事本身沒有好壞,skill 寫得好它叫紀律,skill 寫得爛它叫踩雷,模型不會幫你分。
反過來說,Fable 的不聽話一直在幫我擋爛 skill。它憑自己的判斷跳過那些寫壞的觸發條件,等於一層免費的保險,同時也是一層遮罩:我根本不知道自己的 skill 庫裡有多少條目是靠模型不聽話才沒出事。GPT 一來,這個庫兩年來第一次被逐字執行,寫太寬的觸發條件全部現形。
規則之外,它聽不見你
字面之外的訊號是另一回事:先看兩個卡點,再看話多的成本。
第一個,它在瀏覽器點一個按鈕卡住,換了四種工具硬幹 49 分鐘、24 次直接的介面操作,全程沒有回報也沒有求助,我出手中斷才停。回頭看它沒違反任何規則,因為規則裡沒有「卡關多久要交還」這一條。它把目標守得死緊,節奏這種東西在它字典裡查無此字。
第二個,一把已經曝光的 key,我說風險我擔、先直接用,它回「這點我不能照做」,理由是曝光的 key 搬到哪都不會重新變安全。我當下的體感是死板,都說了我擔。後來我改成先接、驗完就換,它才接受,同時堅持舊 key 不進對話、程式碼跟紀錄。冷靜下來看它守的邊界沒錯,那把 key 也真的換了。但這一來一回讓我確定一件事:它效忠的是規則條文,我的臨場裁量撞上它認定的邊界時,不算數。
話多也算這類成本。拿兩邊各兩場研究型對話按任務型態配對,以可見回答的字元量算,GPT 合併是 Fable 的 1.44 倍,單場落在 1.3 到 2 倍。最長一則 11,854 字元,嫌長之後下一則壓到 489 字元。能壓,預設不壓,煞車在我手上。
壓縮吃掉結論的那個凌晨
前面談的是它怎麼讀規則,接下來談入口怎麼決定它記得住多少。先交代一下:GPT 在我這有兩個入口,一個是接進 Claude Code 當日常用,另一個是它自家的 OpenAI Codex。Fable 這邊我開 1M 窗,通常做到 400K 至 600K 才手動 handoff,對話壓縮幾乎碰不到。GPT 進 Claude Code 後,實測大約 29.7 萬 token 就自動壓縮。Codex 更早,光下面要講的那場馬拉松就壓了 13 次,觸發中位數約 22 萬。我原本用工作習慣把壓縮邊緣化,現在它變成每場長工作的必經站。
然後事故來了,就出在 Codex 那頭。某個凌晨的實驗馬拉松,模型自己實測出一條翻案結論:GPT 訂閱的付費加速模式其實有效,實測快了近三成,只是 API 回報欄位一律顯示沒生效,那個欄位是假訊號,不能拿來判定失敗。幾小時後一次壓縮,這條結論不見了。它拿著被自己推翻過的舊判準,把有效的實作重新判成失敗,開始安排除錯。我提醒一句,它承認矛盾、回去翻原始對話紀錄,兩分鐘把完整證據撿回來;從壓縮到恢復,整段前後 13 分半。
事後把那場 13 次壓縮的邊界逐一核對:確認的事故只有這一起,其餘 12 次前後主題都接得上。所以結論比「壓縮必丟」更陰:主題被保留,不代表拍板過的結論還能用。這起事故的壓縮存檔可讀層裡,我問的問題都在,它給的答案沒被帶進去;原始逐行紀錄倒是完好,所以它才撿得回來。
當天下午我讓 agent 蓋了一個防護 hook:壓縮前存證、壓縮後注入恢復線索,一個下午 20 個 commit,至今 audit 累積 106 筆事件。定位講清楚:這只證明 hook 一直有在跑,還不能證明同類事故已被擋下;它不保證摘要語意完整,它保證結論失效的時候,有一條回原始證據的路。
帶走什麼
做不到的先列:這八場的樣本量撐不起「GPT 寫作全面贏」「中文全面贏」「壓縮必丟結論」任何一句通論;規劃給 Fable、實作給 GPT 的分流也還在試行,沒有到能報效果的程度。
帶得走的是兩件事。第一,換模型,換掉的不只是推理能力,連整套治理層被執行的方式都跟著換:規則寫得越清楚,GPT 越強;讀空氣的默契越多,Fable 越順。我的 CLAUDE.md、skill、hook 都是為上一個同事的性格校準的,新同事進來,這些東西得重新調一輪。第二,換入口,視窗跟著縮,壓縮從罕見事件變成日常,拍板過的結論就需要一條回得去原始證據的路。別把服從性當總分看,它是一顆要配著模型重新校準的旋鈕,轉高之前先想清楚:你的規則庫,禁得起被逐字執行嗎?