blog.dopana

Back

Claude CodeやCursorを使ったことがある方なら、AIコーディングエージェントの強力さをご存知でしょう。しかし、オープンソースでプロバイダーに依存しない、ターミナルネイティブなもの — あらゆるLLMと連携し、どの環境でも動作し、単一のエコシステムに縛られないもの — を求めるなら?

それがまさに OpenCode です。

OpenCodeとは#

OpenCodeは、ターミナル上で直接動作するオープンソースのAIコーディングアシスタント兼エージェントフレームワークです。GoベースのCLIとしてスタートし、現在は2層アーキテクチャに進化しています:

  • バックエンド: 高性能HTTPサーバー(Bun + Hono + TypeScript)
  • フロントエンド: リッチなターミナルUI(Go + Bubble Tea)

OpenCodeは、AIエージェントにファイル、ターミナルシェル、Language Server Protocol(LSP)診断、Model Context Protocol(MCP)を介した外部サービスへの詳細なアクセス権を付与します。Claude Codeのようなプロプライエタリツールに代わる完全なオープンソースの代替として設計されており、任意のモデルプロバイダーを自由に選択できます。

なぜOpenCodeなのか?#

1. プロバイダーに非依存 — 75以上のLLMプロバイダー#

Claude Code(Anthropicに依存)やGitHub Copilot(OpenAI/Microsoftに依存)とは異なり、OpenCodeはVercelのAI SDKとModels.devを通じて75以上のLLMプロバイダーと連携します。好きなモデルを使えます:

  • Anthropic: Claude 3.5 Sonnet, Claude 4 Opus
  • OpenAI: GPT-4o, o3, GPT-5
  • Google: Gemini 2.5 Pro, Gemini 2.0 Flash
  • オープンソース: Llama 3, DeepSeek-V3, Qwen 3
  • ローカル: Ollama, LM Studio, vLLM
  • クラウド: AWS Bedrock, Azure, Groq

エージェントごとに異なるモデルを設定することも可能 — 計画には安くて速いモデル、実装には強力な推論モデルを使い分けられます。

2. ターミナルネイティブ + リッチなTUI#

OpenCodeはターミナルで動作し、Bubble Tea製のフルスクリーンTUIを提供します。キーボード駆動のワークフロー向けに設計されています:

ショートカットアクション
Tabエージェント切り替え(Build ↔ Plan)
@ファイル・エージェントのファジー検索
Ctrl+Kコマンドパレット
Ctrl+Oモデルセレクター
/undo / /redoAIの変更を元に戻す/再適用
/shareセッションの共有リンクを生成

3. 高度なエージェントアーキテクチャ#

OpenCodeはプライマリエージェント + サブエージェント階層を採用:

プライマリエージェント:

  • Build: 全ツールアクセス権 — ファイルの読み取り、書き込み、編集、シェルコマンドの実行、LSP診断の取得。実装を担当するエージェントです。
  • Plan: 読み取り専用+ask-only権限。コードを分析し、戦略を立案しますが、何も変更しません。

サブエージェント(@で呼び出し):

  • General: マルチステップタスクの実行
  • Explore: 高速なコードベースナビゲーション
  • Scout: 外部依存関係とドキュメントの調査

4. Model Context Protocol(MCP)統合#

OpenCodeはMCPクライアントとして機能し、StdioベースおよびSSEベースの外部MCPサーバーからツールを動的に読み込みます。すべてのMCPツールはネイティブツールと同じ権限システムを継承するため、AIがアクセスできるものを正確に制御できます。

5. Language Server Protocol(LSP)サポート#

OpenCodeはLSPサーバー(goplstypescript-language-serverrust-analyzerなど)に接続し、リアルタイムの診断情報をLLMに提供します。AIはコード編集時にエラー、警告、ヒントをIDEのように確認できます。

6. 詳細な権限コントロール#

セキュリティはすべてのレベルで組み込まれています。OpenCodeは3つの権限モードをサポート:

  • Allow: 自動承認(git statusのような読み取り専用コマンドに安全)
  • Ask: 承認を要求(書き込みコマンドのデフォルト)
  • Deny: 常にブロック(危険な操作)

権限はグローバル、ツール単位、ファイル単位、コマンド単位で設定可能。つまり、git pushには承認を要求しつつ、git statusは自動許可する — すべてopencode.jsonで設定できます。

7. 自動コンテキスト管理#

OpenCodeはトークン使用量を自動監視します。モデルのコンテキストウィンドウの95%に近づくと、会話履歴を要約して「コンテキスト超過」エラーを防ぎます。これにより、モデル制限に引っかからずに長く生産的なセッションを維持できます。

8. プラグインシステムとカスタマイズ#

カスタムコマンド: ~/.config/opencode/commands/または.opencode/commands/にMarkdownファイルを作成し、名前付きパラメータを持つ再利用可能なマルチステップワークフローを定義。

カスタムエージェント: カスタムシステムプロンプト、温度、ステップ制限、権限境界を持つ特殊エージェントをopencode.jsonまたはMarkdownファイルで設定。

ミドルウェアフック: プラグインはツール実行ライフサイクルにフックし、ログ監査、テレメトリ管理、カスタム検証を追加可能。

プラグインエコシステム: opencode-schedulerのようなツールが、スケジューリング、バックグラウンド実行などの機能をOpenCodeに追加。

インストール方法#

OpenCodeは主要な全プラットフォームでインストール可能:

# 公式インストールスクリプト
curl -fsSL https://opencode.ai/install | bash

# npm経由
npm install -g opencode-ai

# Homebrew経由(macOS/Linux)
brew install anomalyco/tap/opencode

# Bun経由
bun install -g opencode-ai
bash

はじめに#

# プロジェクトに移動
cd /path/to/project

# OpenCodeを起動
opencode

# TUI内で:
# 1. /connect を実行してAPIプロバイダーを追加
# 2. /init を実行してAGENTS.mdを生成(プロジェクトコンテキスト付き)
# 3. コーディング開始!
bash

OpenCodeはCI/CD用の非インタラクティブスクリプトモードもサポート:

# 単一プロンプトを実行してJSON出力を取得
opencode -p "このプロジェクト内のすべてのTODOコメントを検索して" --json
bash

動作の仕組み#

OpenCodeはクライアント/サーバーアーキテクチャで動作:

  1. Go TUI(クライアント)がBun/Hono HTTPサーバー(バックエンド)に接続
  2. サーバーがAI SDKを介してLLM呼び出しをオーケストレーションし、ツールコール、コンテキストウィンドウ、エージェント階層を管理
  3. クライアントSDKコードはOpenAPI仕様からStainless経由で生成 — 任意のアプリ(モバイル、Web、スクリプト)がプログラム的にOpenCodeと連携可能
  4. モデルが脳 — ネイティブツール(ファイル読み書き、bash、grep、glob、LSP診断、webfetch)がその手

OpenCode vs. 代替ツール#

機能OpenCodeClaude CodeCursor
オープンソース✅ MIT❌ プロプライエタリ❌ プロプライエタリ
プロバイダー非依存✅ 75以上❌ Anthropicのみ❌ 限定的
ターミナルネイティブ✅ TUI + headless✅ CLI❌ VS Codeフォーク
MCPサポート✅ 完全✅ 完全⚠️ 限定的
LSP診断✅ ネイティブ❌ なし✅ あり
プラグインシステム✅ コマンド+エージェント❌ なし⚠️ 拡張機能
CI/CDモード✅ JSON出力✅ テキスト出力❌ なし
ローカルモデル✅ Ollama, LM Studio❌ なし⚠️ 限定的

成長するエコシステム#

OpenCodeのプラグインアーキテクチャは成長するエコシステムを生み出しています。opencode-schedulerプラグインは、OSネイティブのスケジューラを使ったAIエージェントの定期実行を可能にします — 自動ディールハンティング、週次コード監査、アップタイム監視に最適です。

MITオープンソースライセンス、プロバイダーの柔軟性、強力なプラグインシステムにより、OpenCodeは自分たちのやり方で動作するAIコーディングエージェントを求める開発者の間で選ばれるツールになりつつあります。

参考資料#