はじめに
「Claude Code は便利だが、サブスクやAPI課金に縛られず、任意のLLMで動く軽量なCLIエージェントが欲しい」——そう感じたことはないでしょうか。
本記事では、Rust製のOSS CLIコーディングエージェント Coro Code を、ソースからビルドして DeepSeek をバックエンド に動かすところまでをハンズオンで解説します。Coro Code は OpenAI 互換プロトコルに対応しているため、base_url を差し替えるだけで DeepSeek・ローカルLLM・各種ゲートウェイなど「OpenAI 互換エンドポイントなら何でも」バックエンドにできるのが特徴です。
この記事で学べること:
- Coro Code のセットアップ(Rust toolchain からソースビルドまで)
- DeepSeek を含む OpenAI 互換エンドポイントの設定方法(環境変数 / 設定ファイル)
- 対話モード・ワンショット実行・設定ファイル指定の使い分け
- 会話+実行コンテキストの JSON 保存・復元(セッションをまたいで作業を引き継ぐ)
- Claude Code との違いと現実的な使い分け
対象読者はターミナルでのAI開発に興味があるエンジニアです。
TL;DR:
cargo install --git https://github.com/Blushyes/coro-code --bin coroでインストールし、OPENAI_BASE_URL=https://api.deepseek.comとOPENAI_MODEL=deepseek-chatを設定すれば、DeepSeek をバックエンドにした OSS コーディングエージェントが手元で動きます。Apache-2.0/MIT のデュアルライセンスで、ベンダーロックインなしに自分で全部コントロールできます。
Coro Code とは
Coro Code は、ByteDance の OSS エージェント Trae Agent(Python 実装)のツール仕様を踏襲しつつ、Rust で書き直したコーディングエージェントです。旧称は Trae Agent Rust。速度・信頼性・UX を重視して再設計されています。
| 項目 | 内容 |
|---|---|
| 言語 | Rust(stable 1.70+ が必要) |
| ライセンス | Apache-2.0 または MIT(デュアル) |
| UI | iocraft 製のリッチなターミナルUI(リアルタイム更新) |
| ツール | bash 実行・ファイル操作・拡張可能なツールシステム |
| LLM | OpenAI 互換(✅ 利用可)/ Anthropic・Google は対応予定(🚧) |
| 特徴 | コンテキストの JSON エクスポート / リストア |
ポイントは「現時点で実用になるのは OpenAI 互換プロトコル」という点です。Anthropic(Claude)・Google(Gemini)はリポジトリ上「Coming」表記なので、本記事では確実に動く OpenAI 互換ルート、その代表として DeepSeek を使います。
なぜ OSS の CLI エージェントなのか
エンゲージメント実績でも「自分で動かせるOSS/CLI」が強いように、CLI エージェントを OSS で持つメリットは明確です。
- BYOK / ベンダー非依存: API キーとエンドポイントを自分で選べる。安価な DeepSeek や、社内のOpenAI互換ゲートウェイにも向けられる
- 設定が手元に残る: JSON 設定ファイルでプロジェクトごとに切り替えられる
- 監査可能: Rust のソースが公開されており、bash 実行・ファイル操作の挙動を自分で確認できる
セットアップ
1. Rust toolchain を用意する
Coro Code は Rust stable 1.70 以上が必要です。未インストールなら rustup で導入します。
# rustup のインストール(未導入の場合)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# シェルを再読み込み後、バージョン確認
rustc --version # 1.70 以上であることを確認
cargo --version
2. Coro Code をソースからインストールする
cargo install の --git 機能で、リポジトリから直接 coro バイナリをビルド・インストールします。
cargo install --git https://github.com/Blushyes/coro-code --bin coro
ビルドが完了すると ~/.cargo/bin/coro に実行ファイルが配置されます(~/.cargo/bin が PATH に入っていることを確認してください)。
coro --help
DeepSeek をバックエンドに設定する
設定方法は 環境変数 と 設定ファイル の2通りです。手早く試すなら環境変数、プロジェクトごとに切り替えるなら設定ファイルが便利です。
方法A: 環境変数で設定する
OpenAI 互換プロトコルでは、OPENAI_BASE_URL を DeepSeek のエンドポイントに向け、OPENAI_MODEL でモデルを指定します。
export OPENAI_API_KEY="sk-あなたのDeepSeek APIキー"
export OPENAI_BASE_URL="https://api.deepseek.com"
export OPENAI_MODEL="deepseek-chat"
Coro Code はこのほかにも、プロトコル非依存の汎用上書き変数 CORO_BASE_URL / CORO_MODEL を備えています。複数のOpenAI互換サービスを使い分けるときに役立ちます。
| 環境変数 | 用途 |
|---|---|
OPENAI_API_KEY |
OpenAI 互換サービスの認証キー |
OPENAI_BASE_URL |
OpenAI 互換サービスのエンドポイント(DeepSeek 等) |
OPENAI_MODEL |
モデル名(例: deepseek-chat) |
CORO_BASE_URL |
プロトコルを問わない汎用 base URL 上書き |
CORO_MODEL |
汎用モデル上書き |
方法B: 設定ファイル(JSON)で設定する
プロジェクト直下に coro.config.json のような設定ファイルを置き、--config で読み込ませる方法です。protocol を openai にし、base_url を DeepSeek に向けます。
{
"protocol": "openai",
"base_url": "https://api.deepseek.com",
"api_key": "sk-あなたのDeepSeek APIキー",
"model": "deepseek-chat",
"params": {
"max_tokens": 131072,
"temperature": 0.7,
"top_p": 0.9
}
}
api_keyを直書きした設定ファイルは 絶対にコミットしない でください。.gitignoreに追加するか、api_keyは省略して環境変数(OPENAI_API_KEY)から渡すのが安全です。
実際に動かす
対話モード
引数なしで起動すると、リアルタイム更新されるターミナルUIの対話モードに入ります。
coro
ワンショット実行(タスクを直接渡す)
タスクを文字列で渡すと、その1タスクを実行して終了します。シェルスクリプトや簡単な自動化に組み込みやすい形です。
coro "main.rs のバグを修正して"
coro "このコードベースの構成を解析して README にまとめて"
設定ファイルを指定して実行
coro --config coro.config.json "このリポジトリのテストを追加して"
Coro Code は bash 実行・ファイル操作のツールを内蔵しているため、上記のように「指示 → 実際のファイル変更・コマンド実行」までエージェントが行います。
差別化ポイント: コンテキストの保存と復元
Coro Code の実用的な特徴が、会話と実行コンテキストを JSON にエクスポートし、後で復元できる ことです。長いセッションを途中で止めて、別の日に続きから再開する——といった使い方ができます。
内部的には coro_core の PersistedAgentContext という構造化スナップショットを扱っており、復元時には保存済みの設定(あれば)も適用されます。CLI エージェントを「使い捨ての一回限り」ではなく「継続的な作業パートナー」として運用したいときに効いてくる設計です。
長時間タスクをスケジュール実行・CI で回すようなワークフローでは、この「途中状態を JSON で持ち回れる」点がセッション切れ対策として有効です。
Claude Code との違いと使い分け
| 観点 | Coro Code | Claude Code |
|---|---|---|
| ライセンス | OSS(Apache-2.0/MIT) | プロプライエタリ |
| バックエンド | OpenAI 互換なら自由(DeepSeek 等) | 基本 Claude モデル |
| 言語 | Rust | — |
| コスト | モデル提供元の従量課金のみ | サブスク / API |
| 成熟度 | 発展途上(Anthropic/Google は対応予定) | 成熟・多機能 |
現実的な使い分けは以下のようになります。
- Coro Code が向くケース: 安価なモデル(DeepSeek 等)でコストを抑えたい、OSS でソースを確認・改造したい、社内の OpenAI 互換ゲートウェイに繋ぎたい
- Claude Code が向くケース: 成熟した機能(サブエージェント・MCP・フック等)を本格運用したい、Claude モデルの品質を最大限使いたい
「メインは Claude Code、コスト重視の軽いタスクや実験は Coro Code」のように併用するのが落としどころです。
ハマりどころ
-
coro installが失敗する: Rust が 1.70 未満だと失敗します。rustup update stableで更新してください。 -
認証エラーになる:
OPENAI_BASE_URLの末尾やパス(/v1の有無)はサービスごとに異なります。DeepSeek ならhttps://api.deepseek.comを起点に、エラー時はドキュメントでパスを確認しましょう。 -
Anthropic キーを設定しても Claude で動かない: 環境変数(
ANTHROPIC_API_KEYなど)の受け口自体は用意されていますが、Anthropic/Google プロトコルはリポジトリ上「Coming」表記で動作保証外です。確実に動くのは OpenAI 互換ルートです。 - 設定ファイルの api_key 漏洩: 前述のとおりコミット厳禁。環境変数併用を推奨します。
まとめ
Coro Code は、Rust 製・OSS・OpenAI 互換という3点が揃った軽量 CLI コーディングエージェントです。cargo install 一発でビルドでき、OPENAI_BASE_URL を差し替えるだけで DeepSeek をはじめとする任意の OpenAI 互換バックエンドで動きます。
- ✅ ソースからビルドして手元で完全にコントロールできる
- ✅ DeepSeek 等の安価なモデルでコストを抑えられる
- ✅ コンテキストの JSON 保存・復元でセッションを引き継げる
- ⚠️ Anthropic/Google は対応予定。現状は OpenAI 互換ルートが本命
「Claude Code の思想は好きだが、もっと自由なバックエンドと OSS の安心感が欲しい」という人は、一度手元でビルドして試してみてください。