📖

【Windows】Claude CodeでGLM Coding Planを使いやすくする方法

に公開

はじめに

この記事は、金のニワトリさんの以下の記事を参考に、Windows(PowerShell)向けに手順を整理したものです。

参考: https://zenn.dev/robustonian/articles/glm_coding_plan

元記事は Mac/Linux の例が中心なので、Windowsで「コマンドで切り替える」形(claude / claude-glm)に寄せてまとめます。


この記事でやること

Claude Code で GLM Coding Plan(GLM-4.7) を使えるようにします。
普段は claude、コストを抑えたいときは claude-glm のように、同じターミナル内でも切り替えできる状態を作ります。


この記事のゴール

コマンド 使う先 用途
claude Claude(Anthropic側) 通常利用
claude-glm GLM-4.7(Z.AI経由) コスト抑えたい時

前提条件

  • Windows 10/11
  • Claude Code インストール済み
  • GLM Coding Plan 契約済み
  • APIキー取得済み

契約/キー管理:

  • 契約: https://z.ai/subscribe
  • APIキー: https://z.ai/manage-apikey/apikey-list

設定手順

STEP 0(おすすめ): APIキーはプロファイルに直書きしない

PowerShell の $PROFILE にAPIキーを直接書くのは避けたいので、ユーザー環境変数に入れます。

setx ZAI_API_KEY "YOUR_API_KEY_HERE"

注意: setx で保存した環境変数は 新しく開いたターミナルから反映されます。
すぐ試したい場合は、このセッションだけ一時的にセットしてもOKです。

$env:ZAI_API_KEY = "YOUR_API_KEY_HERE"

STEP 1: PowerShellプロファイルを開く

notepad $PROFILE

「ファイルが存在しません。作成しますか?」と出たら「はい」。

もし作れない場合は先にこれ:

New-Item -Path $PROFILE -Type File -Force

その後に notepad $PROFILE


STEP 2: 関数を追記(claude-glm

メモ帳の末尾に以下を追加します。

この関数は、claude-glm 実行中だけ環境変数を GLM(Z.AI)向けに切り替え、終了時に 元の環境変数へ復元します。
そのため 同じターミナルで claude に戻すことができます。

# ==========================================================
# GLM Coding Plan for Claude Code (Windows / PowerShell)
# - claude-glm 実行中だけ Z.AI (GLM) に向ける
# - 終了後に環境変数を復元する(同一ターミナルでも切り替えOK)
# ==========================================================
function claude-glm {

    # APIキーはユーザー環境変数から読む(setx ZAI_API_KEY ...)
    if ([string]::IsNullOrEmpty($env:ZAI_API_KEY)) {
        Write-Error "ZAI_API_KEY が未設定です。`n例: setx ZAI_API_KEY ""YOUR_API_KEY_HERE"""
        return
    }

    # 退避(元の値を覚えておく)
    $backup = @{
        ANTHROPIC_AUTH_TOKEN = $env:ANTHROPIC_AUTH_TOKEN
        ANTHROPIC_BASE_URL = $env:ANTHROPIC_BASE_URL
        API_TIMEOUT_MS = $env:API_TIMEOUT_MS
        CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = $env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
        ANTHROPIC_DEFAULT_HAIKU_MODEL  = $env:ANTHROPIC_DEFAULT_HAIKU_MODEL
        ANTHROPIC_DEFAULT_SONNET_MODEL = $env:ANTHROPIC_DEFAULT_SONNET_MODEL
        ANTHROPIC_DEFAULT_OPUS_MODEL   = $env:ANTHROPIC_DEFAULT_OPUS_MODEL
    }

    try {
        # GLM (Z.AI) 側に切り替え
        $env:ANTHROPIC_AUTH_TOKEN = $env:ZAI_API_KEY
        $env:ANTHROPIC_BASE_URL   = "https://api.z.ai/api/anthropic"
        $env:API_TIMEOUT_MS       = "3000000"

        # 任意:不要な通信を抑える(環境によっては外してOK)
        $env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = "1"

        # Claude Code の「モデル種別」→ GLM のモデル名に割り当て
        $env:ANTHROPIC_DEFAULT_HAIKU_MODEL  = "glm-4.5-air"
        $env:ANTHROPIC_DEFAULT_SONNET_MODEL = "glm-4.7"
        $env:ANTHROPIC_DEFAULT_OPUS_MODEL   = "glm-4.7"

        # 引数はそのまま渡す(PowerShellは @args が安全)
        claude @args
    }
    finally {
        # 復元(元が未設定なら削除)
        foreach ($k in $backup.Keys) {
            if ([string]::IsNullOrEmpty($backup[$k])) {
                Remove-Item "Env:\$k" -ErrorAction SilentlyContinue
            } else {
                Set-Item "Env:\$k" $backup[$k]
            }
        }
    }
}

保存してメモ帳を閉じます。


STEP 3: 設定を反映

. $PROFILE

STEP 4: 動作確認

GLM側で起動:

claude-glm

起動後、/status で Model が glm-4.7 になっていればOKです。

通常のClaudeに戻す:

claude

claude-glm は終了時に環境変数を戻しているので、同じターミナルでも切り替えできます。


トラブルシューティング

1) ZAI_API_KEY が未設定です と出る

setx は「保存」はできても、いま開いている PowerShell には反映されません
自分も setx 直後に claude-glm を叩いて「未設定」になりました。

対処A(おすすめ): PowerShellを開き直す

setx 後は、新しいタブ/ウィンドウで PowerShell を起動し直してから実行します。

claude-glm

対処B(すぐ試したい): このセッションだけ一時セット

$env:ZAI_API_KEY = "YOUR_API_KEY_HERE"
claude-glm

確認: いまのセッションに入っているか

$env:ZAI_API_KEY

2) claude-glm が見つからない

プロファイルが読み込まれていないか、編集したプロファイルが違う可能性があります。

まずは現在のプロファイルパスを確認:

$PROFILE

PowerShell 5.1(powershell.exe)と PowerShell 7(pwsh.exe)は $PROFILE の場所が別です。
Claude Code をどのシェルで起動しているかに合わせて、該当するプロファイルへ追記してください。

反映:

. $PROFILE

参考

  • Z.AI docs: https://docs.z.ai/scenario-example/develop-tools/claude
  • 参考にした記事: https://zenn.dev/robustonian/articles/glm_coding_plan

この記事の作成について(生成AIの利用)

この記事は、下書きと文章の整形に生成AIを補助的に使いました。
ただし、掲載している手順・コマンドは筆者環境(Windows / PowerShell)で動作確認したものだけを反映しています。

Discussion