Crush 接続
Charm Crush のカスタム provider に QCode.cc を設定:crush.json で type=anthropic と base_url を指定し、ターミナルで Claude を使う
Crush 接続¶
Crush は Charm 製のターミナル優先 AI コーディングエージェント(Go 製)です。カスタム provider に対応しており、QCode.cc を上流にできます。
名称に関する注意:Crush は当初 "Open Code" という名前で、OpenCode との混同を避けるため改名されました。両者は別のプロジェクトです。
どのプロトコルを使うか¶
Crush のカスタム provider は type に anthropic と openai-compat を受け付けます。Claude を使うなら anthropic です —— QCode の OpenAI エンドポイントは Claude モデルを受け付けません(エンドポイントと API パス)。
| 使いたいモデル | type |
base_url |
|---|---|---|
| Claude | anthropic |
https://api.qcode.cc/api |
| GPT 系 / 中国系 4 ファミリー | openai-compat |
https://api.qcode.cc/openai/v1 |
インストール¶
# Homebrew
brew install charmbracelet/tap/crush
# または Releases からビルド済みバイナリを取得
# https://github.com/charmbracelet/crush/releases
確認(文書中のバージョン数字ではなく実際の出力を信頼してください):
crush --version
設定¶
プロジェクト直下に crush.json を作成します(ユーザー単位の設定ディレクトリも利用可。パスは公式文書に従ってください):
{
"$schema": "https://charm.land/crush.json",
"providers": {
"qcode": {
"type": "anthropic",
"base_url": "https://api.qcode.cc/api",
"api_key": "$QCODE_KEY",
"extra_headers": { "anthropic-version": "2023-06-01" },
"models": [
{
"id": "claude-sonnet-5",
"name": "QCode Sonnet 5",
"cost_per_1m_in": 2,
"cost_per_1m_out": 10,
"context_window": 1000000,
"default_max_tokens": 8192
},
{
"id": "claude-haiku-4-5",
"name": "QCode Haiku 4.5",
"cost_per_1m_in": 1,
"cost_per_1m_out": 5,
"context_window": 200000,
"default_max_tokens": 4096
}
]
}
}
}
キーは設定ファイルに書かず環境変数で注入します:
export QCODE_KEY="cr_あなたのQCodeキー"
| フィールド | 説明 |
|---|---|
type |
anthropic = Anthropic ネイティブ Messages プロトコル |
base_url |
/api まで。Crush が /v1/messages を自分で連結します |
api_key |
$変数名 形式の環境変数展開に対応 |
extra_headers |
Anthropic プロトコルには anthropic-version が必要 |
models[] |
利用モデルを明示列挙。id は qcode.cc/models と一字一句一致させる |
中国本土からはホストを
https://asia.qcode.cc/api(香港ノード)に変えるだけ。キーは共通です。cost_per_1m_*は Crush 側の使用量表示にのみ影響し、実際の課金には影響しません。
検証¶
crush run "reply with exactly: OK"
OK が返れば接続できています。
本当に QCode へ流れているかの確認:base_url をわざと存在しないパスに変えて再実行してください。完全な URL を含む明確な 404 が出るはずです:
404 Not Found {"error":"Not Found","message":"Route /api/xxx/v1/messages not found"}
このエラーが出れば、Crush が base_url + /v1/messages を組み立てており、設定が効いている証拠です。(これは陰性対照です。成功しただけでは設定が効いた証明にはなりません——別の provider にフォールバックしている可能性があります。)
よく使う操作¶
# 対話モード
crush
# 非対話
crush run "この関数を非同期にして"
# パイプ
cat README.md | crush run "もっと分かりやすく" > README.new.md
# 作業ディレクトリ指定 + デバッグログ
crush --debug --cwd /path/to/project
# すべての権限を自動承認(注意して使用)
crush --yolo
よくある質問¶
model_not_available_on_endpoint¶
type が openai-compat なのにモデルが Claude です。type: "anthropic" に変更し、base_url を https://api.qcode.cc/api にしてください。
401 Invalid API key¶
環境変数が未注入か、キーに空白が混入しています。echo $QCODE_KEY の出力が cr_ で始まるか確認してください。
モデル選択に出てこない¶
Crush は models[] に明示列挙したモデルのみ表示します。エントリを追加して再起動してください。
関連ドキュメント¶
- エンドポイントと API パス — プロトコル × モデルファミリー対応表
- OpenCode 連携 — 別のターミナルエージェント(Crush とは別プロジェクト)
- 中国系モデル連携 — GLM / Kimi / DeepSeek / Qwen