Claude Media
Claude CodeとCrushの違い — モデル切替とLSP連携を比較

Claude CodeとCrushの違い — モデル切替とLSP連携を比較

CharmのターミナルエージェントCrushとClaude Codeを、モデル切替・LSP・MCP・権限・設定ファイルの5点で比較します。crushrcの記述例と、Claude Code側の対応する設定も並べます。

Crushは、Charmが公開しているターミナル向けのコーディングエージェントです。Claude Codeとの最大の違いは、モデルの選択肢にあります。Crushは複数のLLMを選べて、セッション途中でも切り替えられます。Claude Codeは、Claudeモデルを前提にした設計です。

この記事では、設定の書き方まで含めて両者を対応づけます。取り上げるのは、モデル切替、LSP、MCP、権限、設定ファイルの5点です。同じ構図の比較はClaude CodeとOpenCodeの違いにもあります。

Crushとは何か — 複数のLLMを選べるターミナルエージェント

Crushは、Charmが公開しているターミナル向けのコーディングエージェントです。機能一覧のうち、Claude Codeとの比較に関わる6点を挙げます。

機能一覧

Crushの特徴

  • 複数モデル対応

    多数のLLMから選べます。OpenAI互換またはAnthropic互換のAPIで、自前のモデルも足せます。

  • 途中でのモデル切替

    コンテキストを保ったまま、セッション途中でLLMを切り替えられます。

  • セッション管理

    プロジェクトごとに、複数の作業セッションとコンテキストを持てます。

  • LSP連携

    人間と同じように、LSPから追加の文脈を取り込みます。

  • MCP拡張

    http、stdio、sse の3種類で、MCPサーバーを足せます。

  • 対応環境

    macOS、Linux、Windows(PowerShellとWSL)、Android、BSD系で動きます。

ライセンスはFSL-1.1-MITです。ソースコードは公開されていますが、一定期間後にMITへ移行する形式で、OSIが定義するオープンソースとは異なります。ClaudeモデルもAnthropicのAPIキーで使えます。環境変数の表には、ANTHROPIC_API_KEY と、Amazon Bedrock経由でClaudeを使うためのAWS系の変数が並びます。

つまりCrushは、Claudeを使えるが、Claudeに限定されないエージェントです。Claude Codeを使っている人が気になるのは、乗り換えたときに何が変わるかでしょう。以降で順に対応づけます。

モデル切替の違い — セッション途中の切り替えとキャッシュの扱い

Claude Codeにも、セッション中にモデルを切り替える手段があります。/model <alias|name> で即座に切り替わり、引数なしなら選択画面が開きます。エイリアスは sonnet、opus、haiku、fable などです。

/model sonnet

切り替えられるのは、Claudeのモデルの間です。ゲートウェイ経由の利用について、Claude Code側のドキュメントには「非Claudeモデルへのルーティングは、どのゲートウェイを通してもサポートしない」と書かれています。他社モデルを使いたい場面では、Crushのような別のエージェントが選択肢になります。

Claude Code側には、切り替えのコストを示す記述があります。モデルごとにキャッシュが別なので、/model で切り替えた直後のリクエストは、会話履歴の全体をキャッシュなしで読み直します。内容が同じでも変わりません。キャッシュが温かい間は、切替前に確認が出ます。

Crushは、切替時にコンテキストが保たれるとだけ説明しています。切替後のコスト面の挙動は、READMEに記載がありません。長いセッションで頻繁に切り替えるなら、利用先のプロバイダーの課金ルールを自分で確かめる必要があります。

使えるプロバイダーの追加方法

Crushは、プロバイダーとモデルをコマンドで追加します。OpenAI互換のAPIなら、--type openai-compat を指定します。

provider add deepseek --type openai-compat \
  --base-url "https://api.deepseek.com/v1" \
  --api-key "$DEEPSEEK_API_KEY"
 
model add deepseek/deepseek-chat \
  --name "Deepseek V3" \
  --context-window 64000 \
  --default-max-tokens 5000

openai と openai-compat は別の種類です。OpenAI自身を経由・中継するときは openai、OpenAI互換の他社APIには openai-compat を使います。Anthropic互換のAPIには --type anthropic を使い、--extra-header anthropic-version 2023-06-01 のようにヘッダーを足します。

ローカルモデルは、ollama、llamacpp、lmstudio、litellm、omlx の種類を指定すると、モデル一覧を自動で取得します。

Claude Code側でこれに近いのは、ANTHROPIC_BASE_URL で別のエンドポイントを指す構成です。ただし、前述のとおりClaudeモデルが前提になります。モデルの振り分けを試すなら、Claude Code Routerの設定と注意点が参考になります。

LSP連携の違い — 設定の置き場所が変わる

CrushのLSPは、crushrc に1行ずつ書いて追加します。

lsp add go --command "gopls" --env "GOTOOLCHAIN go1.24.5"
lsp add typescript --command "typescript-language-server" --args --stdio
lsp add nix --command "nil"

Claude Codeでは、LSPはプラグインの一部として設定します。プラグイン直下の .lsp.json、または plugin.json の lspServers に、サーバー名ごとの設定を書きます。command と extensionToLanguage(拡張子とLSPの言語IDの対応)が必須です。

{
  "lspServers": {
    "go": {
      "command": "gopls",
      "args": ["serve"],
      "extensionToLanguage": { ".go": "go" }
    }
  }
}

対応関係を表にします。

項目CrushClaude Code
追加方法Crushlsp add <名前> --command ...Claude Codeプラグインの .lsp.json / lspServers
拡張子との対応CrushREADMEに記載なしClaude CodeextensionToLanguage で明示
環境変数Crush--envClaude Codeenv
編集後の診断CrushREADMEに記載なしClaude Codediagnostics(既定は true)で文脈に取り込み

Claude Code側には、起動待ちの startupTimeout、クラッシュ時の restartOnCrash など、運用向けの項目もあります。LSPを使ったコードの理解を掘り下げた記事は、Claude Codeのコードインテリジェンス(LSP)活用ガイドです。

Crush側は、設定がコマンド1行で済む手軽さが強みです。Claude Code側は、プラグインとして配布・共有できる点が違いです。

MCP・権限・フックの違い

MCPは同じ3種類、ただし推奨の向きが違う

MCPの接続方式は、Crushが stdio、http、sse の3種類です。Claude Codeも stdio、http、sse に対応しますが、ドキュメントはHTTPを推奨し、SSEは非推奨としています。

Crushでの追加は、crushrc に書きます。

mcp add github --type http --url https://api.github.com/mcp/ \
  --timeout 10 --header Authorization "Bearer $GH_PAT" \
  --disabled-tools create_issue

Claude Codeでは claude mcp add --transport http <name> <url> で追加します。

claude mcp add --transport http notion https://mcp.notion.com/mcp

CrushはMCPサーバーごとに --disabled-tools でツールを個別に無効化できます。OAuthが要るサーバーは、JSON設定で "oauth": true を指定する形です。

権限は「聞く」が既定、起点の持ち方が違う

どちらも、既定ではツール実行の前に確認が出ます。Crushは、確認なしで通すツールを列挙します。

permissions allow view ls grep edit
permissions deny bash sourcegraph

permissions deny は、ツールをエージェントから見えなくします。全部の確認を飛ばすのは --yolo フラグです。

Claude Codeは /permissions で、deny、ask、allowの順にルールを評価します。最初に一致したものが結果を決めます。広いdenyルールは、狭いallowルールがあっても優先されます。ルールの置き方は/permissionsコマンドの解説にまとめています。

全確認を飛ばす手段は bypassPermissions モードです。ただしこちらも、denyルールは効き続けます。Claude Code側ではdenyが最優先なので、「許可を広げても、禁止は崩れない」構造です。

フックは両方にあるが、成熟度が違う

Crushのフックは「preliminary support(暫定的な対応)」の段階で、詳細は別のガイドに任されています。Claude Codeのフックは、PreToolUseなどのイベントに処理を挟む仕組みです。テスト自動実行への使い方は、hooksでテストを自動実行する記事にあります。

設定ファイルと指示ファイルの違い

Crushの設定は crushrc で、Bashに専用のビルトインが加わった形式です。旧来のJSON形式もサポートされますが、非推奨の扱いです。置き場所の優先順位は、./.crushrc、./crushrc、~/.config/crush/crushrc の順です。

crushrc は信頼されたコードとして実行されます。中身を確認していないディレクトリでは、Crushを起動しないよう注意書きがあります。

指示ファイルは、次のように対応します。

用途CrushClaude Code
全体共通の指示Crush~/.config/crush/CRUSH.md / ~/.config/AGENTS.mdClaude Code~/.claude/CLAUDE.md
プロジェクトの指示Crushプロジェクトの初期化時に生成。既定名は AGENTS.mdClaude Code./CLAUDE.md(AGENTS.md を代わりに読む場合もある)

スキルの置き場所は、乗り換えの障壁を下げます。Crushは ~/.claude/skills とプロジェクトの .claude/skills も読み込みます。Claude Code向けに作ったSKILL.mdを、そのままCrushでも使える構成です。

もう1点、コミットの署名があります。Crushは既定でGitコミットに Assisted-by: Crush:[ModelID] の行と Generated with Crush の行を足します。止めるときは、次のように設定します。

option attribution-trailer-style none
option attribution-generated-with false

Claude Code側のコミット文は、attribution 設定で調整します。

使い分けの目安

目安を表にします。

状況向く選択
Claudeモデルだけで足りる向く選択Claude Code
Claude以外のモデルや、ローカルモデルも同じ画面で試したい向く選択Crush
プラグインで設定を配布・共有したい向く選択Claude Code
設定を crushrc のBash数行で軽く済ませたい向く選択Crush
フックで細かく制御したい向く選択Claude Code
既存の .claude/skills を別のエージェントでも使いたい向く選択Crush(読み込み対象に含まれる)

併用も成り立ちます。スキルは共有でき、指示ファイルも AGENTS.md を軸にすれば揃えられます。MCPサーバーは、それぞれの設定に同じものを登録するだけです。

よくある質問

CrushでClaudeモデルは使えますか

使えます。起動後に ctrl+l でモデル選択画面を開き、Anthropicを選んでキーを貼る方法もあります。環境変数 ANTHROPIC_API_KEY を設定しておく方法でも動きます。

Crushのモデル一覧は誰が更新していますか

Catwalkというオープンソースのリポジトリが管理しています。既定では、最新の一覧を自動で確認して取り込みます。制限された環境では option provider-auto-update false で止められます。

使った内容は送信されますか

利用状況の匿名メトリクスが記録されます。プロンプトと応答は収集されず、環境変数でオプトアウトできます。

まとめ

CrushとClaude Codeは、ターミナルでコードを書くエージェントという点で同じです。違いは、前提にする世界にあります。Crushはモデルの幅を広げ、設定を軽く保つ設計です。Claude Codeはモデルを絞る代わりに、プラグイン・権限・フックを細かく作り込んでいます。

Claudeだけで足りるなら、乗り換える理由は多くありません。他社モデルやローカルモデルが要件に入った時点で、Crushを並べて試す価値が出ます。

この記事を共有:XはてブLinkedIn