1zblog
←記事一覧に戻る

Command Code GOATをOCで使う

Command CodeのAPIキーをOpenCodeに設定し、推論バリアントまで登録

·
OpenCodeCommand CodeAI

こんにちは。この記事では、Command Codeというところが最近出した「GOATプラン」という$10で月間$70ドル相当が使える、それはもうすごいプランの枠を無慈悲にもOpenCodeで使う方法を解説します。

前提

  • Command CodeのAPIキーを取得済み
  • OpenCodeをインストール済み

APIキーの取得方法やOpenCodeのインストール方法はここでは扱いません。

まず知っておくべきこと

Command Codeの公式ドキュメントには、GOATプランのAPI利用について次の2種類の記載があります。

Can I use the GOAT plan via API?
Yes. We recommend the Command Code CLI for the best quality, but you can also use the Provider API on the GOAT plan and integrate it with other agents.

The Provider API needs the Provider plan or higher.

Command Codeのパラドックスとでも言いましょうか。言っていることが完全に矛盾しております。
ドキュメント更新が追いついていないだけかと思われますので、おそらくProvider API経由で使えるはずです(筆者の環境で成功しました)。

1. APIキーをOpenCodeのauth.jsonへ保存する

OpenCode公式の認証方法は、TUIの/connectまたはCLIのopencode auth loginです。認証情報は通常、次のファイルへ保存されます。

~/.local/share/opencode/auth.json

このファイルはOpenCodeが管理する認証ストレージです。APIキーを手動でJSONへ追記することも技術的には可能ですが、人間及びLLMは間違いを犯す可能性があるため、OpenCodeの認証コマンドを使う方法を推奨します。

CLIから登録する

次を実行します。

opencode auth login

プロバイダー一覧が表示されたら、次の順に選択します。

  1. Other
  2. プロバイダーIDにcommand-codeと入力
  3. APIキー入力欄へCommand CodeのAPIキーを貼り付ける

登録後、認証一覧で確認します。

opencode auth list

command-codeが表示されれば、OpenCode側の認証情報として保存されています。

2. OpenCodeにカスタムプロバイダーを追加する

認証情報とプロバイダー定義は別物です。

  • auth.json: command-codeに対応するAPIキーを保存する
  • opencode.jsonc: APIのURL、SDK、モデル、推論レベルを定義する

プロジェクト単位で設定するなら、プロジェクトルートにopencode.jsoncを作成します。ユーザー全体で使うなら、OpenCodeのグローバル設定へ同じprovider設定を追加します。

グローバル設定ファイルの場所

OpenCodeのグローバル設定ファイルは、OSごとに次の場所へ作成します。

OS グローバル設定ファイル
macOS ~/.config/opencode/opencode.jsonc
Linux ~/.config/opencode/opencode.jsonc
Windows(PowerShell / Windows版OpenCode) %USERPROFILE%\.config\opencode\opencode.jsonc
Windows(WSL内でOpenCodeを実行) ~/.config/opencode/opencode.jsonc(WSL側)

~は現在のユーザーのホームディレクトリを表します。WindowsのPowerShellでは、次のように展開できます。

$HOME
Join-Path $HOME ".config\opencode\opencode.jsonc"

Windowsで実際に作成すると、例えば次のようなパスになります。

C:\Users\あなたのユーザー名\.config\opencode\opencode.jsonc

この.configは隠しディレクトリとして表示されることがあります。エクスプローラーで見つからない場合は、アドレスバーへ次を入力してください。

%USERPROFILE%\.config\opencode

ディレクトリがまだ存在しない場合は、先に作成します。

macOS / Linux:

mkdir -p ~/.config/opencode

PowerShell:

New-Item -ItemType Directory -Force "$HOME\.config\opencode" | Out-Null

WindowsでWSLを使っている場合

Windowsでは、OpenCodeをWindows側で実行するか、WSL側で実行するかによって設定ファイルの場所が変わります。

  • Windows側のOpenCodeを起動する場合: %USERPROFILE%\.config\opencode\opencode.jsonc
  • WSLのターミナルでOpenCodeを起動する場合: WSL内の~/.config/opencode/opencode.jsonc

WSL内の~はWindowsのC:\Users\...とは別のLinuxホームディレクトリです。Windows側に設定を書いたのにWSLのOpenCodeへ反映されない場合は、WSLのターミナルで次を実行して、WSL側の設定ファイルを確認してください。

printf '%s\n' "$HOME/.config/opencode/opencode.jsonc"

OpenCode公式も、WindowsではWSL上で実行する構成を推奨しています。WSLを使う場合は、APIキーの認証情報(auth.json)もWSL側へ保存されます。Windows側で登録した認証情報は、WSL側のOpenCodeからは自動的には使われません。

最小設定

1モデルだけで接続を確認したい場合はこれを追記しましょう。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "command-code": {
      "name": "Command Code",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://api.commandcode.ai/provider/v1"
      },
      "models": {
        "deepseek/deepseek-v4-flash": {
          "name": "DeepSeek V4 Flash"
        }
      }
    }
  }
}

この設定の意味

設定 意味
command-code OpenCode内で使うプロバイダーID。orenoitoshinocommandcodechanheartとかでも構いませんが、記事では統一しています
name UIに表示されるプロバイダー名
npm OpenAI互換APIを扱うAI SDKパッケージ
baseURL Command Code Provider APIのURL
models OpenCodeのモデル選択画面に表示するモデル

baseURLは必ず次の値にします。

https://api.commandcode.ai/provider/v1

3. GOAT対象モデルをすべて登録する

GOATページに掲載されている対象モデルをOpenCodeのmodelsへ登録します。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "command-code": {
      "name": "Command Code GOAT",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://api.commandcode.ai/provider/v1"
      },
      "models": {
        "meta/muse-spark-1.2": { "name": "Muse Spark 1.2" },
        "meta/muse-spark-1.2-contributor": { "name": "Muse Spark 1.2 Contributor" },
        "Qwen/Qwen3.8-Max": { "name": "Qwen 3.8 Max" },
        "deepseek/deepseek-v4-flash": { "name": "DeepSeek V4 Flash (latest)" },
        "thinkingmachines/inkling-small": { "name": "Inkling Small" },
        "Qwen/Qwen3.7-Flash": { "name": "Qwen 3.7 Flash" },
        "poolside/laguna-s-2.1-free": { "name": "Laguna S 2.1" },
        "thinkingmachines/inkling": { "name": "Inkling" },
        "moonshotai/Kimi-K3": { "name": "Kimi K3" },
        "gpt-5.6-luna": { "name": "GPT-5.6 Luna" },
        "xai/grok-4.5": { "name": "Grok 4.5" },
        "tencent/hy3-paid": { "name": "Tencent Hy3" },
        "zai-org/GLM-5.2-Fast": { "name": "GLM-5.2 Fast" },
        "zai-org/GLM-5.2": { "name": "GLM-5.2" },
        "moonshotai/Kimi-K2.7-Code-Highspeed": { "name": "Kimi K2.7 Code HighSpeed" },
        "moonshotai/Kimi-K2.7-Code": { "name": "Kimi K2.7 Code" },
        "nvidia/nemotron-3-ultra-550b-a55b": { "name": "Nemotron 3 Ultra" },
        "MiniMaxAI/MiniMax-M3": { "name": "MiniMax M3" },
        "Qwen/Qwen3.7-Plus": { "name": "Qwen 3.7 Plus" },
        "stepfun/Step-3.7-Flash": { "name": "Step 3.7 Flash" },
        "xiaomi/mimo-v2.5": { "name": "MiMo V2.5" },
        "xiaomi/mimo-v2.5-pro": { "name": "MiMo V2.5 Pro" },
        "Qwen/Qwen3.7-Max": { "name": "Qwen 3.7 Max" },
        "stepfun/Step-3.5-Flash": { "name": "Step 3.5 Flash" },
        "zai-org/GLM-5.1": { "name": "GLM-5.1" },
        "MiniMaxAI/MiniMax-M2.7": { "name": "MiniMax M2.7" },
        "Qwen/Qwen3.6-Max-Preview": { "name": "Qwen 3.6 Max Preview" },
        "Qwen/Qwen3.6-Plus": { "name": "Qwen 3.6 Plus" },
        "deepseek/deepseek-v4-pro": { "name": "DeepSeek V4 Pro" },
        "moonshotai/Kimi-K2.6": { "name": "Kimi K2.6" },
        "zai-org/GLM-5": { "name": "GLM-5" },
        "moonshotai/Kimi-K2.5": { "name": "Kimi K2.5" },
        "MiniMaxAI/MiniMax-M2.5": { "name": "MiniMax M2.5" }
      }
    }
  }
}

この設定はGOATページの2026-08-09時点の33モデルをもとにしています。対象モデルは変更される可能性があるため、最新情報は次で確認してください。

4. モデル一覧に表示されることを確認する

OpenCodeを完全に再起動してから、次を実行します。

opencode models command-code

次のような形式で表示されます。

command-code/deepseek/deepseek-v4-flash
command-code/deepseek/deepseek-v4-pro
command-code/gpt-5.6-luna
...

command-code/が先頭に付くのは正常です。

  • OpenCodeが扱うID: command-code/deepseek/deepseek-v4-flash
  • Command Code APIへ送るモデルID: deepseek/deepseek-v4-flash

5. TUI / Web UI / CLIでモデルを使う

TUI

OpenCodeを起動します。

opencode

TUI内で次を入力します。

/models

Command Code GOATからモデルを選びます。

Web UI

Web UIを起動します。

opencode web

ブラウザのモデル選択メニューからCommand Code GOATのモデルを選びます。TUIとWeb UIは同じOpenCodeの設定と認証情報を使うため、別のプロバイダー設定は不要です。

CLI

opencode runならモデルを直接指定できます。

opencode run \
  --model command-code/deepseek/deepseek-v4-flash \
  "このリポジトリの構成を説明してください"

6. 推論レベルをUIから指定する

OpenCodeのvariantsを使うと、同じモデルに異なる推論設定を登録できます。

Command CodeのOpenAI互換APIへは、OpenCodeのreasoningEffortがreasoning_effortとして送信されます。

推論レベルを登録する設定例

次のモデルは、Command Code CLIの公開モデル定義とモデルページで調整可能な値が確認できるものです。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "command-code": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://api.commandcode.ai/provider/v1"
      },
      "models": {
        "deepseek/deepseek-v4-flash": {
          "name": "DeepSeek V4 Flash",
          "reasoning": true,
          "interleaved": "reasoning_content",
          "variants": {
            "high": { "reasoningEffort": "high" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "deepseek/deepseek-v4-pro": {
          "name": "DeepSeek V4 Pro",
          "reasoning": true,
          "interleaved": "reasoning_content",
          "variants": {
            "high": { "reasoningEffort": "high" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "zai-org/GLM-5.2": {
          "name": "GLM-5.2",
          "reasoning": true,
          "interleaved": "reasoning_content",
          "variants": {
            "high": { "reasoningEffort": "high" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "gpt-5.6-luna": {
          "name": "GPT-5.6 Luna",
          "reasoning": true,
          "interleaved": "reasoning_content",
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high": { "reasoningEffort": "high" },
            "xhigh": { "reasoningEffort": "xhigh" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "Qwen/Qwen3.8-Max": {
          "name": "Qwen 3.8 Max",
          "reasoning": true,
          "interleaved": "reasoning_content",
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "xhigh": { "reasoningEffort": "xhigh" }
          }
        },
        "xai/grok-4.5": {
          "name": "Grok 4.5",
          "reasoning": true,
          "interleaved": "reasoning_content",
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high": { "reasoningEffort": "high" }
          }
        }
      }
    }
  }
}

各モデルのレベル

モデル OpenCodeに登録する推論レベル
DeepSeek V4 Flash high, max
DeepSeek V4 Pro high, max
GLM-5.2 high, max
GPT-5.6 Luna low, medium, high, xhigh, max
Qwen 3.8 Max low, medium, xhigh
Grok 4.5 low, medium, high

これ以外のGOAT対象モデルも推論を出力する場合がありますが、公開されている調整可能な推論レベルが確認できないモデルについては、無理にvariantsを追加しない方が安全です。

TUIで切り替える

モデルを選択した状態で、デフォルトのCtrl+Tを押すとモデルバリアントを切り替えられます。

または、コマンドパレットからvariantを選択します。

/variants

Web UIで切り替える

variantsを定義したモデルを選ぶと、Web UIのモデル選択・推論レベル選択に登録したバリアントが表示されます。

CLIで指定する

opencode run \
  --model command-code/gpt-5.6-luna \
  --variant high \
  "READMEを短く要約してください"

/thinkingとの違い

OpenCodeの/thinkingは、推論ブロックの表示・非表示を切り替える機能です。推論レベルの変更ではありません。

  • Ctrl+Tまたは/variants: low、medium、highなどの推論レベルを変更する
  • /thinking: 返ってきた推論ブロックを表示するか変更する

7. デフォルトモデルを設定する(任意)

毎回モデルを選ばず、Command Codeモデルをデフォルトにする場合は、設定へmodelを追加します。

{
  "$schema": "https://opencode.ai/config.json",
  "model": "command-code/deepseek/deepseek-v4-flash",
  "provider": {
    "command-code": {
      "name": "Command Code GOAT",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://api.commandcode.ai/provider/v1"
      },
      "models": {
        "deepseek/deepseek-v4-flash": {
          "name": "DeepSeek V4 Flash"
        }
      }
    }
  }
}

modelの形式は必ずprovider_id/model_idです。

command-code/deepseek/deepseek-v4-flash

8. 更新時の確認

Command Codeのモデルや推論レベルは変更される可能性があります。定期的に次を確認してください。

新しいモデルを追加するときは、次の順番で確認します。

  1. GOATページに対象モデルとして掲載されているか
  2. Provider APIのモデルIDが何か
  3. OpenCodeのmodelsキーをそのIDにする
  4. 推論レベルを変更できるモデルか
  5. 推論レベルを変更できる場合だけvariantsを追加する

まとめ

  1. opencode auth loginでOtherとしてcommand-codeを登録する。
  2. APIキーはOpenCodeの~/.local/share/opencode/auth.jsonへ保存する。
  3. opencode.jsoncには@ai-sdk/openai-compatibleとhttps://api.commandcode.ai/provider/v1を設定する。
  4. GOAT対象モデルのIDをmodelsへ追加する。
  5. opencode models command-codeで表示を確認する。
  6. TUIの/models、Web UI、またはCLIからモデルを選択する。
  7. 推論レベルはvariantsで設定し、Ctrl+Tまたは--variantで切り替える。

参考リンク