Crush
Crush で aicentos を使う —— crush.json でカスタム provider を追加
最終更新:
Crush は Charmbracelet 製のターミナル用コーディングエージェントで、Go で書かれており、crush.json に任意の OpenAI 互換カスタム provider を宣言できます。base_url を aicentos に向ければ、TUI 内で aicentos が接続しているモデルを利用できます。
準備
まずコンソールの「API キー」ページで、Crush 専用のキーを作成してください(名前は crush のようにすると使用量の追跡に便利です):
- コンソール:https://aicentos.com
- キーの作成:https://aicentos.com/keys
- 残高不足のときのチャージ:https://aicentos.com/wallet
Crush がインストール済みか確認します:
crush --version設定値
| 項目 | 値 |
|---|---|
| 設定ファイル | ~/.config/crush/crush.json |
| type | openai-compat |
| base_url | https://aicentos.com/v1 |
| api_key | $AICENTOS_API_KEY |
| モデル | コンソール「モデル広場」のモデル名 |
設定手順
1. API Key 環境変数の設定
export AICENTOS_API_KEY="sk-あなたの-API-Key"永続化するには ~/.zshrc または ~/.bashrc に書き込み、source で反映させます。
2. crush.json の編集
グローバル設定ファイルは ~/.config/crush/crush.json にあります(Windows は %USERPROFILE%\AppData\Local\crush\crush.json)。プロジェクトルートの .crush.json または crush.json はグローバル設定を上書きします。
次を書き込みます:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"aicentos": {
"type": "openai-compat",
"base_url": "https://aicentos.com/v1",
"api_key": "$AICENTOS_API_KEY",
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o",
"context_window": 128000,
"default_max_tokens": 8192,
"can_reason": true
}
]
}
}
}models[].id はエンドポイント側のモデル ID と完全に一致している必要があります。コンソール「モデル広場」を基準に、対応モデル を参考にできます。
3. モデルの選択
crush を起動したら、TUI 内で Ctrl+L を押す(または /model と入力する)と、aicentos とそのモデルが表示されていることを確認できます。
テスト
非対話モードでクイック検証を行います:
crush run "1+1 はいくつですか?一文で答えてください"リクエストログを見たいときは --debug を付けます。404 が出た場合は、base_url に /v1 が付いているか確認してください。
注意事項
typeにopenaiと入力しないでください。openaiは本当に OpenAI(または Azure OpenAI)を経由するプロキシのためのものです。サードパーティの互換エンドポイントを向ける場合は必ずopenai-compatを指定してください。そうしないとモデルの認識エラーや API エラーが発生します。base_urlは/v1まで入力し、末尾にスラッシュを付けないでください。api_keyは$VARと$(command)の展開に対応しています。キーは環境変数やシークレットファイルに保持し、平文でハードコードしないことをおすすめします。- Anthropic プロトコルのエンドポイント(
typeがanthropic)に接続する場合、base_urlは/apiまでにします。Crush が自動で/v1/messagesを追加します。また、extra_headersにanthropic-versionを追加で宣言する必要があります。 - 既知の問題:カスタム provider 使用時、TUI 内のトークン数と費用集計が 0 と表示されることがありますが、実際のリクエストと課金には影響しません。
- 思考出力を有効にしたい場合、OpenAI スタイルのモデルでは
"can_reason": trueと"reasoning_effort"を組み合わせ、Anthropic スタイルのモデルでは"think": trueを使います。
関連リンク
- カスタム Provider ドキュメント:https://github.com/charmbracelet/crush