| |

Codex、WorkBuddy 用 Claude 報錯:3 類原因排查與 2 條修復路線

Codex、WorkBuddy 用 Claude 報錯:3 類原因排查與 2 條修復路線

作者注:Codex 和 WorkBuddy 都不是專爲 Claude 設計的客戶端,報錯幾乎都出在接入層。本文按「端點、工具往返、思考塊」三類,把報錯原文和修法一一對上。

我們自己就踩過這個坑。最開始圖省事,用 OpenAI 兼容協議調 Claude,也就是把它當成一個 OpenAI 模型來用。簡單對話沒有問題,但只要開始調用工具就報錯,重試也沒用。後來把協議換回 Anthropic 原生的 /v1/messages,才跑順。

先判斷你有沒有中招:Codex 一啓動就報 wire_api 相關錯誤,或者 WorkBuddy 能正常聊天、一調用工具就 400,又或者回復內容莫名其妙是空的,那基本就是本文說的情況。

  • 模型本身沒壞,問題出在 接入層有三處對不上:端點、工具往返、思考塊。
  • 最好修的是第 3 類(思考塊與輸出預算),只需要在客戶端改讀取方式和 max_tokens。
  • 難度居中的是第 2 類(工具往返),主要靠翻譯層或網關來修正。
  • 最費勁的是第 1 類(端點),只能換客戶端,或者加一層翻譯網關。

全文的結論順序是:原生 Anthropic 協議 > 網關翻譯成 anthropic > OpenAI 兼容 chat。今天可以先做一件事:用下文的對照表確認報錯屬於哪一類。

codex-workbuddy-claude-error-3-causes-troubleshooting-zh-hant-image-0


Codex、WorkBuddy 用 Claude 報錯的 3 類原因核心要點

先解釋幾個術語。Responses、Messages、Chat Completions 可以理解爲三種點菜方式:後廚做的菜一樣,只是菜單格式不同。Codex 只會用 Responses 點菜,Claude 只接 Messages 和 Chat Completions。thinking 塊相當於模型的草稿紙,Anthropic 會校驗這張草稿有沒有被人改過。

類別 一句話機制 主要由誰修 修復難度
第 1 類 端點對不上 Codex 只發 Responses,Claude 不接這種格式 換工具或網關 最費勁
第 2 類 工具往返對不上 翻譯過程中 id、內容塊或思考塊被改動 網關爲主 中等
第 3 類 思考塊與預算對不上 模型每次都會思考,客戶端仍按老方式讀結果 客戶端 最省力

codex-workbuddy-claude-error-3-causes-troubleshooting-zh-hant-image-1


第 1 類:Codex 調用 Claude 時端點對不上

報錯長什麼樣:Error loading config.toml: wire_api = "chat" is no longer supported. How to fix: set wire_api = "responses".

這段話的意思是:配置裏 wire_api = "chat" 這種寫法已經不再支持,需要改成 responses。

爲什麼:按 Codex 官方配置參考,wire_api 現在只有 responses 一個取值。過去「把 wire_api 改成 chat 兜底」的做法已經失效,新版 Codex 會在加載配置時直接報錯。哪怕這個 provider 根本沒被用到,也會連帶 codex login status 一起跑不起來。另一邊,API易 apiyi.com 上的 Claude 型號只開放 anthropic 和 openai 兩種端點,不提供 /v1/responses。兩頭格式對不上,中間又沒有翻譯,報錯就是必然的。

怎麼修:
1. 客戶端:打開 ~/.codex/config.toml,按報錯提示刪除殘留的 chat 寫法,先讓 Codex 能正常啓動。
2. 換工具:如果只是想用 Claude 寫代碼,直接改用 Claude Code,它走的就是原生 Messages。
3. 網關:如果必須留在 Codex,就加一層能把 Responses 翻譯成 Messages 的網關。供應商地址優先填 Anthropic 原生端點。

驗收標準:codex login status 能正常執行;走網關時,下發一條需要讀文件的指令,Codex 能完整完成一次工具調用。


第 2 類:Claude 工具調用往返對不上

報錯長什麼樣:
– tool_use ids were found without tool_result blocks immediately after
– An assistant message with 'tool_calls' must be followed by tool messages...
– thinking or redacted_thinking blocks in the latest assistant message cannot be modified
– Invalid signature in thinking block. The block is bound to a different conversation.

第一條表示有 tool_use 沒有緊跟對應的 tool_result。第二條是 Chat 格式下的同類問題。第三條表示上一輪的思考塊被改動過。第四條表示思考塊簽名和當前會話對不上。

爲什麼:兼容層要把 Claude 的 text、tool_use、tool_result、thinking 這些內容塊逐塊翻譯成 tool_calls 和 role: tool,之後再翻譯回來。這個過程中只要 id 對錯、內容塊被合併、thinking 塊被挪動,就會返回 400。Responses 裏有 developer 角色,而 Messages 裏沒有,需要併入 system。另外,claude-opus-5-5 不接受以下老寫法:強制 tool_choice(any 或指定工具)、預填 assistant 消息(prefill)、temperature / top_p / top_k。

怎麼修:
1. 網關:每個 tool_use 後面緊跟同 id 的 tool_result,並且 tool_result 要放在 user 消息內容塊的最前面。
2. 網關:上一輪的 assistant 消息原樣回傳,thinking 字段爲空的塊也要帶上;developer 內容併入 system。
3. 客戶端:tool_choice 只保留 auto 或 none,刪掉 prefill 和採樣參數。
4. 客戶端:如果已經出現簽名錯誤,直接新開會話。按 API易 官方 FAQ 的說明,這類報錯有時會被包裝成 Request rejected (429),但它並不是限流,退避重試也沒用。
5. 換工具:如果 harness 把強制 tool_choice 寫死了,自己改不了,那就換客戶端。

同類 400 的排查思路可以參考 Claude Code 報錯 400 tool use concurrency,這篇講的是 tool_use 與 tool_result 配對失敗時如何逐條定位。

驗收標準:連續多輪工具調用(讀文件、改文件、再讀文件)不再出現 400,同一會話裏也不再出現簽名錯誤。


第 3 類:Claude 思考塊與輸出預算對不上

報錯長什麼樣:"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior. 也可能是 "thinking.type.disabled" is not supported for this model. 還有一種情況不報錯,但回覆是空的或被截斷。

爲什麼:claude-opus-5-5 每次請求都會思考,響應可能以 thinking 塊開頭。客戶端如果按位置讀取 content[0].text,就會讀到空值。思考 token 按輸出計費,也會佔用 max_tokens。從這一代開始,工具調用之間的旁白也放進了 thinking 塊,而默認 display 是 omitted,所以看起來是空的。

怎麼修:
1. 客戶端:thinking 參數要麼省略,要麼寫 thinking: {"type": "adaptive"},並刪掉 budget_tokens。
2. 客戶端:思考深度改用 output_config.effort 控制,可選 low / medium / high / xhigh / max,默認 medium。
3. 客戶端:讀取回復時按 type 找 text 塊,不要按位置取。
4. 客戶端:max_tokens 要同時覆蓋思考和正文;想看到旁白內容,就把 thinking.display 設爲 summarized。

想徹底理解這套新機制,可以看 解讀 Adaptive Thinking 自適應思考,它說明了 budget_tokens 應該怎麼遷移到 effort 檔位。

驗收標準:同一條提示連續發送幾次,正文都不爲空,也不再出現 thinking.type 相關報錯。


Claude 報錯原文速查對照表

報錯原文關鍵詞 屬於哪類 5 分鐘自檢動作 修完還報看哪篇
wire_api = "chat" is no longer supported 第 1 類 檢查 config.toml 裏有沒有殘留的 chat 寫法 Magpie 教程
tool_use ids were found without tool_result 第 2 類 檢查 tool_result 的 id 和位置 Claude Code 報錯 400 tool use concurrency
must be followed by tool messages 第 2 類 確認是否經過 Chat 兼容層 Claude Code 報錯 400 tool use concurrency
Invalid signature in thinking block 第 2 類 新開會話再試 解讀 Adaptive Thinking 自適應思考
thinking.type.enabled / 回覆爲空 第 3 類 刪除 budget_tokens,改爲按 type 讀取 解讀 Adaptive Thinking 自適應思考
簡單對話能通,一調用工具就報錯 第 2 類 檢查 WorkBuddy 接入協議 Workbuddy 支持 Claude 原生格式調用嗎

修復 Codex、WorkBuddy 調用 Claude 報錯的兩條路線

codex-workbuddy-claude-error-3-causes-troubleshooting-zh-hant-image-2

路線 適合誰 協議優先級
A 回到原生客戶端 只想用 Claude 寫代碼 最高,沒有翻譯損耗
B 加一層翻譯網關 必須留在 Codex 或 WorkBuddy 其次,供應商地址填 anthropic
長期停在 chat 兼容 不推薦 最低,工具調用和思考塊容易出問題

路線 A:在 Codex 裏想用 Claude,就改用 Claude Code。WorkBuddy 官方的模型配置只有 /chat/completions 和「自定義協議」開關,沒有 Anthropic 原生入口,所以在 WorkBuddy 裏別指望拿到原生 thinking。具體可以看 Workbuddy 支持 Claude 原生格式調用嗎,這篇解釋了爲什麼「對話能通、工具報錯」以及能怎麼繞過去。

WorkBuddy 直連的配置方法:進入「設置 → 模型 → 自定義」,Base URL 填 https://api.apiyi.com/v1,模型名填 claude-opus-5-5,Key 使用 API易 apiyi.com 令牌頁創建的那一把。URL 只寫到 /v1,不要自己拼上 /chat/completions。

圖注:重點看 URL 是否只寫到 /v1、模型名是否爲 claude-opus-5-5、「自定義協議」開關是否保持關閉。

路線 B:給 Codex 加網關時,Codex 這邊保持 wire_api = "responses" 不變,由網關把請求翻譯成 Messages 後轉發。WorkBuddy 的自定義模型 URL 指向本地網關,Claude 型號的供應商地址填 Anthropic 原生端點 https://api.apiyi.com。

🎯 技術建議:一個 Key 就能同時驗證原生 Messages 和兼容 chat 兩種端點。建議先在 API易 apiyi.com 用測試額度對比兩種協議下的工具調用效果,再決定走哪條路線。

用 Magpie 給 Codex、WorkBuddy 接 Claude

Magpie 是一個 MIT 協議的社區開源工具,它在本地 127.0.0.1:3425 起一個網關,能在 OpenAI Chat、Responses、Anthropic Messages 之間互相轉換,正好補上第 1 類的缺口。除了手動配置,也可以直接可視化在 Magpie 裏配置。圖形界面填好 API Key 和 Base URL,Codex、WorkBuddy 一起接到同一個網關,不用手改配置文件。完整步驟見 Magpie 教程,裏面講了如何用一個網關統一多個 Agent 的模型來源。

  1. 供應商頁:添加 Key。API易 在「中轉」分組裏,也可以點「+ 自定義供應商」手動填寫。
  2. Agent 頁:Codex、WorkBuddy 分別選擇 claude-opus-5-5。
  3. 新開一個會話,不要沿用舊會話的歷史。

圖注:重點看供應商是否在「中轉」組裏顯示爲可用、Base URL 是否爲 Anthropic 原生地址、Agent 頁兩個開關是否都已打開。


Claude 調用價格與緩存成本

以下價格單位爲美元 / 百萬 tokens,查於 2026-10-28,型號與價格以平臺型號列表爲準:

型號 輸入 輸出 緩存讀 可用平臺
claude-opus-5-5 $4 $20 $0.2 API易 apiyi.com
claude-sonnet-5-5 $2 $10 $0.1 API易 apiyi.com
claude-haiku-5-5 $0.1 $0.5 $0.01 API易 apiyi.com

Agent 每一輪都會重發完整歷史,所以 claude-opus-5-5 的思考 token 按輸出價計費。翻譯層一旦把 system、tools 或前綴的順序打亂,cache_control 斷點就會失效,成本和延遲會同時上升。如果命中率異常,可以看 Claude 緩存命中率掉到 0(diagnostics),這篇講了如何定位斷點失效的原因。


風險與封號自負

Magpie 等網關屬於社區開源工具,不是 API易 的官方組件,我們不做背書,也不提供技術支持。通過這類工具轉發請求,可能會被目標服務限流甚至封號,相關後果由使用者自行承擔。建議先用測試賬號把整條鏈路跑通,確認沒問題後再考慮放到正式賬號上。


這幾種情況別折騰

如果你只是偶爾在 Codex 裏用一次 Claude,或者公司環境不允許安裝額外軟件,又或者你本來就只需要跑 Claude,那就沒必要搭網關。直接換客戶端(改用 Claude Code),或者在 Codex 裏換成原生支持 Responses 的模型,會省事得多。


常見問題 FAQ

Q1:Codex 官方支持 Claude 嗎?

不支持。Codex 只走 Responses,Claude 不提供這種端點,必須經過翻譯層才能用。

Q2:在 API易 上的 Claude 能走 /v1/responses 嗎?

不能。API易 apiyi.com 上的 Claude 型號只開放 anthropic 和 openai 兩種端點。

Q3:報 429 是不是被限流了?

如果報錯內容裏帶 `Invalid signature in thinking block`,那不是限流,而是思考塊簽名校驗失敗,新開會話即可。

Q4:WorkBuddy 能用 Anthropic 原生協議嗎?

官方配置裏沒有 Anthropic 原生入口,只能走 OpenAI 兼容路線,或者經過網關轉換。

Q5:怎麼快速驗證修好了?

用 API易 apiyi.com 的測試額度新開一個會話,連續跑幾輪工具調用,同時確認正文不爲空。


Codex、WorkBuddy 用 Claude 報錯自查清單

  • Codex 配置裏已經沒有任何 chat 寫法。
  • Claude 請求走的是原生協議或翻譯成 anthropic 的網關,而不是 chat 兼容。
  • 每個 tool_use 都有同 id 的 tool_result 緊隨其後。
  • 上一輪的 thinking 塊原樣回傳,沒有被改動。
  • 沒有使用強制 tool_choice、prefill 或採樣參數。
  • 回覆按 type 讀取,並且 max_tokens 已爲思考預留空間。

總結

Codex、WorkBuddy 用 Claude 報錯,基本都能歸入端點、工具往返、思考塊這三類。修復順序是:先改客戶端讀取方式,再修翻譯層,最後考慮換客戶端或加網關。協議選擇上,能用原生 Anthropic 就用原生,用不了再讓網關翻譯成 anthropic,不要長期停留在 chat 兼容上。推薦通過 API易 apiyi.com 用同一個 Key 對比不同協議的效果。


📚 參考資料

  1. Codex 配置參考:wire_api 的取值說明
  2. 鏈接:developers.openai.com/codex/config-reference
  3. 說明:確認 wire_api 當前只支持 responses
  4. Codex 配置加載報錯實例
  5. 鏈接:github.com/openai/codex/issues/41816
  6. 說明:wire_api 報錯的原文出處
  7. Claude Opus 5.5 遷移指南
  8. 鏈接:platform.claude.com/docs/en/models/opus-5-5/migration-guide
  9. 說明:thinking、tool_choice、採樣參數的硬性限制
  10. Anthropic 工具調用排障
  11. 鏈接:platform.claude.com/docs/en/agents-and-tools/tool-use/troubleshooting-tool-use
  12. 說明:tool_use 與 tool_result 的配對規則
  13. WorkBuddy 模型配置
  14. 鏈接:www.workbuddy.ai/docs/zh/workbuddy/From-Beginner-to-Expert-Guide/Function-Description/Model
  15. 說明:自定義模型入口與自定義協議開關
  16. Magpie 倉庫
  17. 鏈接:github.com/yetone/magpie
  18. 說明:社區開源網關,使用前請自行評估風險

作者:APIYI 技術團隊
技術交流:歡迎在 API易 apiyi.com 首頁聯繫我們,更多資料可訪問 docs.apiyi.com 文檔中心

延伸閱讀

Similar Posts