
前言
最近在使用 Anthropic 推出的終端機開發工具 Claude Code 時,你是否曾經在執行指令後,卻收到一長串紅色的報錯訊息?
特別是當你看到錯誤代碼為 400 Bad Request,且詳細訊息包含Expected 'thinking' or 'redacted_thinking', but found 'text' 時,這往往讓人感到困惑:明明只是叫它寫個 Python 模組,為什麼會格式錯誤?這篇文章將快速帶你了解這個錯誤的成因,並補充在 Linux 環境下靈活切換 Claude 模型的實用技巧。
一、 為什麼會出現 "Expected 'thinking'" 錯誤?
這個錯誤通常發生在 Claude Code 工具啟用了思考模式 (Thinking Mode) 或使用了支援思考的模型(如 Claude 3.7 或 Extended Thinking 版本)時。
錯誤的核心原因 這通常不是你的指令打錯了,而是工具端(Client)與伺服器端(API)的溝通出現了落差:
- 功能衝突:當前的 Session 啟用了思考功能。
- 驗證嚴格:API 規定,當啟用思考功能時,AI 回傳的訊息結構必須以
thinking區塊開頭。 - 格式違規:Claude Code 在建構歷史對話紀錄傳送給 API 時,某個訊息片段以普通的
text開頭,導致 API 驗證失敗並拒絕處理。
如何解決? 由於這屬於工具本身的 Bug(客戶端程式碼與後端驗證邏輯不同步),建議依照以下順序排除:
- 方法 1:更新工具(最推薦) 這類驗證錯誤通常會在官方發布的新版本中迅速修復。請嘗試更新 Claude Code:
npm install -g @anthropic-ai/claude-code - 方法 2:重置對話 (Clear Session) 有時候是因為當前的對話歷史 (Context Window) 中已經殘留了損壞的格式。試著輸入
/clear指令或重啟終端機,在一個全新的 Session 中重新執行你的 Prompt。 - 方法 3:切換模型 如果特定模型持續報錯,可以暫時切換回較穩定的標準模型(如 Sonnet),通常能繞過針對思考模式的嚴格驗證。
二、 Claude Code 在 Linux 下的三種模型切換法
為了避開錯誤,或是針對不同難度的任務節省 Token,學會如何切換模型是非常重要的。以下是在 Linux 環境下操作的三種方式:
1. 互動式切換 (最直覺)
如果你已經在執行 Claude Code,不需要跳出程式,直接使用 Slash Command 即可。
- 指令:輸入
/model - 操作:系統會跳出選單,使用鍵盤上下鍵選擇如
Claude 3.5 Sonnet或Claude 3 Opus,按 Enter 即可立即切換。
2. 啟動時指定 (單次有效)
適合針對單次任務使用。例如,你需要 Opus 的強大推理能力來寫複雜架構,但下一項任務只想用 Haiku 來處理簡單文本。
- 指令格式:
claude --model <模型名稱> - 常用範例:
- 使用最強推理:claude --model opus
- 使用平衡預設:claude --model sonnet
- 使用快速省錢:claude --model haiku
3. 永久設定預設模型 (一勞永逸)
如果你希望每次開啟 Claude Code 都固定使用某個模型,可以透過修改設定檔或環境變數來達成。
方法 A:修改設定檔 (settings.json) 你可以編輯位於家目錄下的全域設定檔:~/.claude/settings.json。 在 JSON 檔案中找到或新增 "model" 欄位,填入你偏好的模型別名(例如 "opus")。
方法 B:設定環境變數 (推薦用於腳本) 將設定寫入 Shell 的設定檔(如 .bashrc 或 .zshrc),讓環境變數控制預設值。
- 設定指令:
export ANTHROPIC_MODEL="opus" - 生效方式: 執行
source ~/.bashrc讓設定生效。設定後,每次輸入claude啟動時,系統都會自動載入你指定的模型。
結語
Claude Code 是一個強大的終端機協作工具,雖然偶爾會遇到像 400 Bad Request 這類的 Beta 階段小插曲,但透過更新工具或靈活切換模型,通常都能順利解決。希望這篇筆記能幫助你更順暢地進行開發!
















