# Crush

出典: https://docs.aicentos.com/ja/clients/crush

Language: ja

> 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)
* キーの作成：[https://aicentos.com/keys](https://aicentos.com/keys)
* 残高不足のときのチャージ：[https://aicentos.com/wallet](https://aicentos.com/wallet)

Crush がインストール済みか確認します：

```bash
crush --version
```

## 設定値

| 項目        | 値                            |
| --------- | ---------------------------- |
| 設定ファイル    | `~/.config/crush/crush.json` |
| type      | `openai-compat`              |
| base\_url | `https://aicentos.com/v1`    |
| api\_key  | `$AICENTOS_API_KEY`          |
| モデル       | コンソール「モデル広場」のモデル名            |

## 設定手順

### 1. API Key 環境変数の設定

```bash
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` はグローバル設定を上書きします。

次を書き込みます：

```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 と完全に一致している必要があります。コンソール「モデル広場」を基準に、[対応モデル](https://docs.aicentos.com/ja/billing/models-list) を参考にできます。

### 3. モデルの選択

`crush` を起動したら、TUI 内で `Ctrl+L` を押す（または `/model` と入力する）と、`aicentos` とそのモデルが表示されていることを確認できます。

## テスト

非対話モードでクイック検証を行います：

```bash
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](https://github.com/charmbracelet/crush)