メインコンテンツへ移動
AIチュートリアル

opencode-rust入門:Rust製AIコーディングエージェント

opencode-rustのインストール、プロバイダーの設定、TUIと実行モードの使用、エージェントの管理、MCPツールの接続、バックグラウンドタスクの排出やローテーションプロキシなどの高度な機能の操作方法を解説します。

opencode-rust入門:Rust製AIコーディングエージェント

opencode-rustとは?

opencode-rustは、Rustで実装されたオープンソースのAIコーディングエージェントです。ターミナルユーザーインターフェース、単発コマンドの実行、HTTPサーバー、Webサポート、ローカルAIエージェントワークフロー向けのACP統合を提供します。

このエンジンは、セッション、ツール実行、MCP、LSP、プロバイダールーティング、SQLiteストレージ、TypeScriptプラグインブリッジを組み合わせています。Dockerやその他のコンテナランタイムなしで動作します。Rustを採用することで、ストリーミングリクエストボディ、SQLiteベースの会話履歴、キャッシュ済みツールスキーマ、LRUおよびTTLによる破棄機能を備えたディレクトリごとの状態プールにより、リソース使用量を一定範囲に抑えています。

インストール方法を選択する

サポートされているすべてのインストール方法でoprコマンドを使用できますが、インストール方法によってコマンドの動作は異なります。

npmでインストールする

npmはLinux、macOS、Windowsをサポートし、現在のプラットフォーム向けにビルド済みバイナリパッケージをダウンロードします。インストール中にプロジェクトをコンパイルすることはありません。

npm install -g opencode-rust

npmランチャーは、コマンドをエンジンに振り分けるNodeスクリプトです。利用可能なプラットフォームパッケージには、macOS ARM64およびx64、Linux x64およびARM64 GNUビルド、Linux x64 musl、Windows x64 MSVCが含まれます。

Homebrewでインストールする

macOSまたはLinuxでは、次のコマンドでHomebrew formulaをインストールします。

brew install vakandi/tap/opencode-rust

これにより、Homebrewのprefixにopencodeバイナリを配置せずにoprをインストールできます。そのため、上流のOpenCode CLIを隠すことはありません。Homebrewはソースからビルドするため、ビルド依存関係としてRustツールチェーンもインストールされます。

ソースからビルドする

リポジトリをクローンして、インストーラーを実行します。

git clone https://github.com/vakandi/opencode-rust.git
cd opencode-rust
./install.sh

インストーラーはリリースバイナリをビルドし、エージェント用ショートカットとともにoprをインストールします。RustソースとCargoマニフェストファイルのフィンガープリントを作成するため、プロジェクトに変更がなければ再ビルドしません。無条件に再ビルドするには--forceを使用します。

Homebrewまたはソースインストーラーを使用する場合、oprはエンジンバイナリそのものです。フラグを渡すときは、明示的なサブコマンドを使用します。

opr tui --some-flag

npmでは、ランチャーがフラグをTUIに振り分けるため、opr --some-flagの解釈は異なります。

環境を準備する

インストール方法にかかわらず、プラグインブリッジとnpx経由でMCPサーバーを起動するために、Node.js 18以降が必要です。

初回実行前にプロバイダーキーも必要です。たとえば、シェルでAnthropicキーを設定します。

export ANTHROPIC_API_KEY=sk-ant-...

OpenCodeのセットアップでサポートされているプロバイダーおよび認証情報の設定を使用してください。可能な限り、キーをソース管理やシェル履歴に残さないようにします。

最初のセッションを実行する

対話型TUIを起動する

次のコマンドでターミナルインターフェースを起動します。

opr

TUIはデフォルトの対話画面です。アクティブなエージェントとモデルを表示し、アシスタントの出力をストリーミングし、/ポップアップからコマンド補完を提供します。

単一のプロンプトを実行する

完了まで自動的に実行するプロンプトには、runを使用します。

opr run "check this repo for risks"

単純なプロバイダー呼び出しとは異なり、runはセッションの完全なプロンプトループを実行します。ツールが実行され、待機中のサブエージェントが完了し、プロセス終了前にバックグラウンド処理が排出されます。

HTTPサーバーを起動する

HTTPサーバー経由でエンジンを公開するには、次のコマンドを実行します。

opr serve --port 3000

サーバーは同じセッションエンジンを使用し、プロジェクトのHTTP、ストリーミング、エージェント基盤をサポートします。

名前付きエージェントを使用する

TUIには組み込みのbuildエージェントとplanエージェントがあります。buildエージェントはデフォルトのフルアクセス開発エージェントで、planは読み取り専用の分析と探索を目的としています。TUIでTabを押すとエージェントを切り替えられます。

ソースインストーラーは、名前付きエージェント用のショートカットも作成します。

gilfoyle "fix this failing test"
setbon "write 5 ad hooks"
googlebot "audit my meta tags"

これらのショートカットは、対応する--agent値を指定して1つのプロンプトを実行します。プロンプトなしで呼び出すと、標準エラーに使用方法を表示し、ステータス2で終了します。

追加のエージェントは、OpenCode設定および~/.omo/omo.jsoncまたは~/.config/omo/omo.jsoncにあるoh-my-opencodeのエージェントストアで設定できます。これらの場所のエージェント設定はプラグインのデフォルトを上書きでき、表示名が異なる場合でも正規化されたスラッグを使用してエージェントが照合されます。

プロジェクトとセッションを設定する

設定ファイルは、作業ディレクトリから上位へ検索しながらマージされます。サポートされているプロジェクトレベルの名前は次のとおりです。

  • opencode.jsonc
  • opencode.json
  • .opencode/opencode.jsonc
  • .opencode/opencode.json

グローバルのデフォルト設定は、~/.config/opencode/opencode.jsonまたはそのJSONC版に保存されます。エージェント定義は、前述のoh-my-opencodeの場所にも保存できます。

セッションはSQLiteに保存され、作成、継続、フォーク、インポートとエクスポート、親子関係をサポートします。データベースの場所を確認するには、次を使用します。

opr db path

プロキシプールが使用するデータディレクトリなど、その他のランタイムの場所を確認するには、次を使用します。

opr debug paths

MCPツールを使用する

opencode-rustはstdioおよびHTTP経由のMCPをサポートします。MCPサーバーは設定から読み込まれ、90秒の起動上限内で並列に起動され、エージェントが使用するターンごとのツールレジストリに登録されます。

これは、MCPサーバーが公開するツールがモデルに到達し、エージェントのターンの一部として実行できることを意味します。セッションを開始する前に、Node.jsと必要なMCPサーバーパッケージが利用可能であることを確認してください。

このプロジェクトでは、MCPのstdioトランスポートに改行区切りJSONを使用します。これはLSPのContent-Lengthフレーミングとは異なるため、MCPサーバーの設定ではMCP互換のトランスポートと定義を指定してください。

バックグラウンド処理の完了を確認する

runコマンドでは、バックグラウンドタスクの排出処理にタイムアウトを指定できます。

opr run --wait-background-timeout 120 "run the requested task"

メインのターンが完了すると、エンジンはセッションがアイドル状態になるまで待機し、oh-my-opencodeが記録した子フレームをストリーミングして、継続状態を確認します。デフォルトのタイムアウトは120秒です。

排出処理はハングせずフェイルオープンします。データベースの欠落、台帳の欠落、破損したJSON、古いアクティブエントリは、残りの処理がないものとして扱われます。ワークフローに異なる制限が必要な場合は、より短い、または長いタイムアウトを使用してください。

ローテーションプロキシを設定する

エンジンには、住宅用プロキシ候補を順番に切り替えるローカルHTTPおよびCONNECTフォワーダーが含まれています。約120秒ごとに最も長く使用されていないアップストリームを選択し、使用前に候補を検査して、拒否されたエントリを隔離します。

デフォルトのプールファイルは次の場所にあります。

  • macOS: ~/Library/Application Support/opencode/proxy-pool.txt
  • Linux: ~/.local/share/opencode/proxy-pool.txt
  • Windows: %LOCALAPPDATA%\opencode\proxy-pool.txt

OPENCODE_PATHS_ROOTを設定すると、データの場所を変更できます。変更後のプールパスは$OPENCODE_PATHS_ROOT/opencode/proxy-pool.txtです。

エントリにはホストとポートを指定し、認証情報とメタデータを任意で追加できます。

198.51.100.10:8080
203.0.113.24:1080
198.51.100.31:3128:myuser:mypass
203.0.113.77:8000 | note:rotates hourly

ファイルにはエントリのみを記載してください。一部の例では#で始まる行がコメントとして示されていますが、パーサーはコメント構文を実装していないため、そのような行は不正なエントリとして無視されます。失敗した候補と所有権情報は、同じディレクトリにあるproxy-quarantine.jsonおよびproxy-claims.jsonファイルで管理されます。

プロキシの起動は、プロキシ変数を手動でエクスポートするのではなく、opencode_proxy::start()を通じて行う必要があります。プロバイダーレジストリを構築する前に、クライアントへプロキシ設定を渡してください。プールが空、または読み取れない場合は、すべてのリクエストが失敗するリスナーを起動する代わりにエラーを返します。

コマンド一覧を確認する

CLIには、対話的な利用、セッション、サービス、設定、認証、エージェント、デバッグ、MCP、データ転送、メンテナンス向けのコマンドが含まれています。

tui      attach   run      serve    web      acp      models
session  stats    db       config   auth     agent    debug
mcp      export   import   github   pr       upgrade  uninstall
generate version

runで便利なオプションには、--continue、--session、--fork、--agent、--format、--title、--dir、--port、--variant、--thinking、--wait-background-timeoutがあります。

開発と検証

リポジトリで作業している場合は、次のコマンドでワークスペースのテストとチェックを実行します。

cargo test --workspace
cargo build --release --bin opencode
cargo clippy --workspace --all-targets

リポジトリは、CLI、サーバー、セッション、エージェント、ツール、プロバイダー、MCP、プラグイン、LSP、ストレージ、TUI、権限、パス、プロキシなどのクレートと関連ユーティリティで構成されています。クレートごとのドキュメントはdocs/ディレクトリにあります。

まとめ

opencode-rustは、対話型TUI、完全なセッション実行、設定可能なエージェント、MCPおよびプラグイン統合、SQLiteストレージ、HTTPアクセスを備えたRustベースのOpenCodeエンジンを提供します。npm、Homebrew、またはソースビルドから始め、プロバイダーキーを設定したうえで、ワークフローに応じてopr、opr run、またはopr serveを使用してください。

このプロジェクトはMITライセンスで公開されており、OpenCodeチームとは無関係です。