在 Claude Code 中使用 GLM-5.2 / GLM-4.7-Flash 模型
Claude Code CLI(claude)不只能用 Anthropic 原生模型,透過 OpenRouter 提供的
Anthropic Messages API 相容端點(「Anthropic Skin」),也能讓任意模型作為後端運作。這次我
嘗試了將對話主模型設為 z-ai/glm-5.2、標題產生等輕量背景任務用的模型設為
z-ai/glm-4.7-flash 的設定,這裡整理一下作法。
參考: https://openrouter.ai/docs/cookbook/coding-agents/claude-code-integration
前提條件
- 已將 OpenRouter 的 API 金鑰設定於
$env:OPENROUTER_API_KEY。 - 即使已用
claude.ai帳號登入 Claude Code,只要有透過環境變數的驗證,就會優先採用該方式。 此時會出現⚠ claude.ai connectors are disabled ...的警告,但不影響實際運作。
所需的環境變數
| 變數 | 值 | 備註 |
|---|---|---|
ANTHROPIC_BASE_URL | https://openrouter.ai/api | OpenRouter 的 Anthropic 相容端點 |
ANTHROPIC_AUTH_TOKEN | OpenRouter 的 API 金鑰 | 以 Authorization: Bearer 傳送 |
ANTHROPIC_API_KEY | ""(明確設為空字串) | 若未設定或非空,驗證方式會衝突而導致錯誤 |
ANTHROPIC_MODEL | z-ai/glm-5.2 | 主要對話模型。直接指定 OpenRouter 上的模型 ID |
ANTHROPIC_SMALL_FAST_MODEL | z-ai/glm-4.7-flash | 用於標題產生等輕量背景任務的子模型 |
主模型與子模型的區分使用
ANTHROPIC_MODEL 只控制主要對話模型。Claude Code 內部用於標題產生、
auto-mode 判斷等輕量、高速任務的子模型,則由 ANTHROPIC_SMALL_FAST_MODEL 指定。
只要設定這個變數,就能確實切換輕量任務所使用的模型。
設定方法
方法A:以專案為單位啟用(推薦)
在儲存庫的 .claude/settings.local.json 中設定如下內容。
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_API_KEY": "",
"ANTHROPIC_MODEL": "z-ai/glm-5.2",
"ANTHROPIC_SMALL_FAST_MODEL": "z-ai/glm-4.7-flash"
}
}
ANTHROPIC_AUTH_TOKEN(機密資訊)不要寫入檔案,而是在 shell 端由
OPENROUTER_API_KEY 提供。只要在 PowerShell 設定檔($PROFILE)中加入以下內容一次,
之後每次開啟 shell 都會自動設定完成。
$env:ANTHROPIC_AUTH_TOKEN = $env:OPENROUTER_API_KEY
bash/zsh 的情況,則在 ~/.bashrc 或 ~/.zshrc 中加入:
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
在此狀態下於此目錄中執行 claude -p "...",就會自動讀取
.claude/settings.local.json 的設定,讓主模型與子模型都透過 OpenRouter 運作。
不會影響其他專案中 Claude Code 的執行。
方法B:僅針對特定指令暫時切換
若不想修改 shell 設定檔,可以在執行時當場指定環境變數。
PowerShell:
$env:ANTHROPIC_BASE_URL = "https://openrouter.ai/api"
$env:ANTHROPIC_AUTH_TOKEN = $env:OPENROUTER_API_KEY
$env:ANTHROPIC_API_KEY = ""
$env:ANTHROPIC_MODEL = "z-ai/glm-5.2"
$env:ANTHROPIC_SMALL_FAST_MODEL = "z-ai/glm-4.7-flash"
claude -p "1+1は?"
bash:
ANTHROPIC_BASE_URL="https://openrouter.ai/api" \
ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY" \
ANTHROPIC_API_KEY="" \
ANTHROPIC_MODEL="z-ai/glm-5.2" \
ANTHROPIC_SMALL_FAST_MODEL="z-ai/glm-4.7-flash" \
claude -p "1+1は?"
方法C:設為整台機器的預設值(不推薦)
若將上述變數持久化為 Windows 的使用者環境變數,任何終端機、任何專案都會預設透過 OpenRouter/GLM 運作。但這也會影響其他專案中原本打算使用一般 Claude(Anthropic) 的操作,因此除非確實想改變整體預設值,否則建議使用方法A/B。
動作確認
以下指令確認回應內容及計費紀錄(modelUsage)中都記錄了 z-ai/glm-5.2。
claude -p "Reply with exactly: OK-GLM-TEST" --output-format json
{
"result": "OK-GLM-TEST",
"modelUsage": {
"z-ai/glm-5.2": { "inputTokens": 3272, "outputTokens": 8, "costUSD": 0.028336 }
}
}
此外,搭配 --debug all 執行稍長的提示詞後,也確認主模型與子模型的
派送實際上都有發生。
[API:timing] dispatching to firstParty model=z-ai/glm-4.7-flash
[API:timing] dispatching to firstParty model=z-ai/glm-5.2
針對單一提示詞,輕量任務正確地交由 z-ai/glm-4.7-flash 處理,正式回應則交由
z-ai/glm-5.2,模型的區分使用是正確的。
已知注意事項:互動式工作階段中的請求增生
在互動式 claude 工作階段(無論是從 VS Code 開啟或直接在 TTY 上啟動)中,即使只是輕微
輸入,OpenRouter 的 Activity 紀錄中同一分鐘內就記錄了多達 13 次 API 呼叫。其中 12 次是
發送給子模型(GLM 4.7 Flash)的小型呼叫,只有最後 1 次是主模型(GLM 5.2)的正式回應。
總成本約在 $0.0094 以內。
另一方面,也確認了透過 claude -p(非互動、print 模式)的單次執行,幾乎不會發生這種
增生現象。若想壓低成本,使用 -p 較為安全。若經常使用互動式工作階段,建議設定
ANTHROPIC_SMALL_FAST_MODEL 讓請求流向便宜的模型,同時透過 OpenRouter 的
Activity 儀表板監控用量。
疑難排解
⚠ claude.ai connectors are disabled because ANTHROPIC_API_KEY or another auth source is set...這個警告可以忽略(只是 claude.ai 的連接器功能被停用,API 呼叫本身仍會成功)。- 若
ANTHROPIC_API_KEY未設定而非設為空字串,驗證方式可能會變得曖昧而導致錯誤。 務必明確設定為""。 - 若想切換至其他模型,只需將
ANTHROPIC_MODEL改為 OpenRouter 上的模型 ID (例如:anthropic/claude-opus-4-8、openai/gpt-5等)即可。 - 工具搜尋最佳化(
ENABLE_TOOL_SEARCH)在非 Anthropic 主機上預設為停用。 如有需要,請加入ENABLE_TOOL_SEARCH=true。