🦁

突撃!隣のOpenCode!(概要から実践編まで)

に公開1
11

初めに

こんにちは、かめぽんです。

本記事では、オープンソースのAIコーディングエージェント「OpenCode」と、それを拡張するプラグイン「oh-my-opencode」について、導入から実践的な設定まで解説します。


概要編(OpenCode編)

OpenCodeとは

OpenCodeは、オープンソースのAIコーディングエージェントです。ターミナルベースのTUI(Terminal User Interface)、デスクトップアプリ、IDE拡張として利用できます。ざっくり言うとオープンソース版Claude Codeとも言えます。

https://opencode.ai/

主な特徴

  • オープンソース: 完全にオープンソースで開発されており、透明性が高い
  • マルチプロバイダー対応: 75以上のLLMプロバイダーに対応(OpenAI、Anthropic、Google、xAI等)
  • エージェントシステム: Build、Plan、General、Exploreなどの専門エージェントを搭載
  • AGENTS.md対応: AGENTS.md(Claude Codeにおける CLAUDE.mdのようなもの)がデフォルトで対応
  • GitHub連携: Issue/PRで/opencodeコマンドを使って直接エージェントを呼び出せる
  • MCP対応: Model Context Protocol(MCP)に対応し、外部ツールとの連携が可能

OpenCodeの導入方法

インストール

最も簡単な方法はインストールスクリプトを使う方法です。

curl -fsSL https://opencode.ai/install | bash

パッケージマネージャーを使う場合は以下の通りです。

# npm
npm install -g opencode-ai
# Homebrew (macOS/Linux)
brew install anomalyco/tap/opencode

初期設定

インストール後、プロジェクトディレクトリで以下を実行します。

opencode

以下の画面がでたら起動成功です。

初回起動時にLLMプロバイダーの設定を求められます。/connectコマンドで各プロバイダーのAPIキーを設定できます。

/connect

推奨モデル

公式ドキュメントでは、コード生成とツール呼び出しの両方に優れたモデルとして以下が推奨されています(2026年1月時点)。

  • GPT 5.2
  • GPT 5.1 Codex
  • Claude Opus 4.5
  • Claude Sonnet 4.5
  • Minimax M2.1
  • Gemini 3 Pro

opencodeの基本的な使い方

TUI(Terminal User Interface)の起動

# プロジェクトディレクトリで起動
opencode

# 前回のセッションを継続
opencode -c

# 特定のセッションを継続
opencode -s <session_id>

基本的なコマンド

TUI内で使用できる主なコマンドです。/に続けてコマンド名を入力します。

コマンド キーバインド 説明
/connect - プロバイダーのAPIキーを設定
/models ctrl+x m 使用可能なモデル一覧を表示
/init ctrl+x i AGENTS.mdファイルを作成・更新(プロジェクトルールの設定)
/new ctrl+x n 新しいセッションを開始
/session ctrl+x l セッション一覧を表示・切り替え
/compact ctrl+x c 会話を要約してコンテキストを圧縮
/undo ctrl+x u 直前のメッセージを取り消し(ファイル変更も元に戻る)
/redo ctrl+x r undoを取り消し
/share ctrl+x s セッションを共有
/help ctrl+x h ヘルプを表示

ファイル参照とシェルコマンド

TUI内ではファイル参照やシェルコマンドの実行も可能です。

# @でファイルをファジー検索して参照
@src/components/Button.tsx のコードをレビューして

CLIでの直接実行

TUIを起動せずに、コマンドラインから直接実行することもできます。

# 直接プロンプトを実行
opencode run "このプロジェクトの構造を説明して"

# 特定のモデルを使用
opencode run -m openai/gpt-5.2 "バグを修正して"

エージェントの切り替え

OpenCodeには複数のエージェントが用意されています。TUI内でTabキーを押すことでエージェントを切り替えられます。

エージェント 種類 説明
Build プライマリ 全ツールへのアクセス権を持つデフォルトエージェント
Plan プライマリ コードの分析・レビュー専用(変更を加えない)
General サブ 汎用的なタスク用
Explore サブ コードベースの探索・検索用

サブエージェントは@メンションで呼び出すこともできます。

@explore このプロジェクトで認証がどのように実装されているか調べて

VSCode拡張

vscode拡張もあるので使ってみてください。

インストール方法
# 統合ターミナルで実行すると自動インストール
opencode

# または、拡張機能マーケットプレイスで "OpenCode" を検索してインストール

エディタで選択中のコードやタブの情報が自動的にOpenCodeに共有されるので、「この選択範囲を説明して」のような指示がスムーズにできます。

opencode.jsonの設定について

プロジェクトルートにopencode.jsonを配置することで、プロジェクト固有の設定ができます。

設定ファイルの場所

スコープ パス
グローバル ~/.config/opencode/opencode.json
プロジェクト <project>/.opencode/opencode.json または <project>/opencode.json

プロジェクト設定はグローバル設定を上書きします。

実践的な設定例

以下は実際に使用している設定例です。

{
  "$schema": "https://opencode.ai/config.json",
  "theme": "opencode",
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "opencode/grok-code-fast-1",
  "instructions": ["AGENTS.md"],
  "provider": {
    "anthropic": {
      "name": "Anthropic"
    },
    "grok": {
      "name": "Grok"
    }
  },
  "tui": {
    "scroll_speed": 1,
    "scroll_acceleration": {
      "enabled": true
    },
    "diff_style": "auto"
  },
  "permission": {
    "bash": {
      "*": "allow",
      "rm -rf *": "deny",
      "git push --force*": "deny",
      "sudo *": "deny",
      "dd *": "deny",
      "mkfs*": "deny",
      "format*": "deny"
    }
  },
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

各設定項目の解説

基本設定
項目 説明
$schema JSON Schemaを指定 "https://opencode.ai/config.json"
theme TUIのテーマ "opencode", "catppuccin"
model デフォルトで使用するモデル "anthropic/claude-sonnet-4-5"
small_model 軽量タスク用のモデル(要約等) "opencode/grok-code-fast-1"
instructions エージェントに読み込ませるルールファイル ["AGENTS.md"]
プロバイダー設定(provider)

使用するLLMプロバイダーを設定します。APIキーは/connectコマンドまたは環境変数で設定します。

{
  "provider": {
    "anthropic": {
      "name": "Anthropic"
    },
    "openai": {
      "name": "OpenAI"
    },
    "grok": {
      "name": "Grok"
    }
  }
}
TUI設定(tui)

ターミナルUIの挙動をカスタマイズします。

{
  "tui": {
    "scroll_speed": 1,
    "scroll_acceleration": {
      "enabled": true
    },
    "diff_style": "auto"
  }
}
項目 説明
scroll_speed スクロール速度(1〜、デフォルトはUnix: 1, Windows: 3)
scroll_acceleration.enabled macOS風のスクロール加速を有効化(有効時はscroll_speedは無視)
diff_style 差分表示スタイル("auto", "unified", "split"
パーミッション設定(permission)

危険なコマンドの実行を制御します。セキュリティ上重要な設定です。

{
  "permission": {
    "bash": {
      "*": "allow",
      "rm -rf *": "deny",
      "git push --force*": "deny",
      "sudo *": "deny",
      "dd *": "deny",
      "mkfs*": "deny",
      "format*": "deny"
    }
  }
}
説明
"allow" 確認なしで実行を許可
"deny" 実行を拒否
"ask" 実行前に確認を求める

ワイルドカード(*)を使ってパターンマッチングができます。上記の例では、基本的にすべてのコマンドを許可しつつ、危険なコマンド(rm -rfgit push --forcesudo等)は拒否しています。

MCP設定(mcp)

Model Context Protocol(MCP)サーバーとの連携を設定します。MCPを使うと外部ツールやAPIとシームレスに連携できます。

{
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    },
    "serena": {
      "type": "local",
      "command": [
        "uvx",
        "--from",
        "git+https://github.com/oraios/serena",
        "serena-mcp-server"
      ]
    },
    "chrome-devtools": {
      "type": "local",
      "command": ["npx", "-y", "chrome-devtools-mcp"],
      "environment": {
        "CHROME_REMOTE_DEBUGGING_URL": "http://localhost:9222"
      }
    }
  }
}
タイプ 説明 設定項目
remote リモートのMCPサーバーに接続 url: エンドポイントURL
local ローカルでMCPサーバーを起動 command: 起動コマンド、environment: 環境変数

よく使われるMCPサーバー:

  • context7: ライブラリのドキュメント検索
  • serena: コード解析・リファクタリング支援
  • chrome-devtools: ブラウザのDevToolsと連携
プラグイン設定(plugin)

OpenCodeはプラグインシステムを持っており、拡張機能を追加できます。

{
  "plugin": [
    "some-extenson"
  ]
}

実践編(oh-my-opencode編)

oh-my-opencodeとは

oh-my-opencodeは、OpenCodeを拡張するエージェントオーケストレーションプラグインです。「The Best Agent Harness(最高のエージェントハーネス)」を謳っており、複数の専門エージェントを連携させて複雑なタスクを効率的に処理します。

https://ohmyopencode.com/

https://github.com/code-yeongyu/oh-my-opencode

主な特徴

  • Sisyphusオーケストレーター: 複数の専門エージェントを自動的に連携させる司令塔
  • バッテリー内蔵: エージェント、フック、MCP、LSPサポートが事前設定済み
  • 本番運用実績: Google、Microsoft、Indentなどで実際に使用されている
  • 高度なカスタマイズ: エージェント、フック、MCP、LSPサーバーを自由に設定可能

oh-my-opencodeの導入方法

インストール

# npm
npm install -g oh-my-opencode

# bun
bun install -g oh-my-opencode

初期設定

OpenCodeの設定ファイル(~/.config/opencode/opencode.json)にプラグインを追加します。

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": [
    "oh-my-opencode"
  ]
}

Sisyphusオーケストレーターと専門エージェントシステム

oh-my-opencodeの中核はSisyphusというオーケストレーターエージェントです。ギリシャ神話のシーシュポスから名前を取っており、「毎日岩を転がす」ように、開発者と共に日々のタスクをこなすパートナーとして設計されています。

専門エージェント一覧

Sisyphusが連携する専門エージェントは以下の通りです。

エージェント 役割 使いどころ
explore コードベース内の探索・検索 「この機能どこで実装されてる?」
librarian 外部ドキュメント・OSS検索 「ReactのuseEffectの使い方調べて」
oracle アーキテクチャ設計・トラブルシューティング 複雑な設計判断、2回以上失敗した問題
frontend-ui-ux-engineer フロントエンドのUI/UX実装 視覚的な変更、スタイリング
document-writer ドキュメント作成 README、APIドキュメントの作成
multimodal-looker メディアファイルの分析 PDF、画像、図の解析

oh-my-opencode.jsonの設定について

oh-my-opencodeの設定ファイルは以下の場所に配置します。

スコープ パス
グローバル ~/.config/opencode/oh-my-opencode.json
プロジェクト <project>/.opencode/oh-my-opencode.json

プロジェクト設定はグローバル設定を上書きします。

基本的な設定例

{
  "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
  "agents": {
    "Sisyphus": {
      "model": "anthropic/claude-opus-4-5-20251101"
    },
    "oracle": {
      "model": "openai/gpt-5.2"
    },
    "frontend-ui-ux-engineer": {
      "model": "anthropic/claude-sonnet-4-5-20241022"
    },
    "librarian": {
      "model": "opencode/gemini-3-pro"
    },
    "explore": {
      "model": "opencode/grok-code-fast-1"
    }
  }
}

各エージェントのモデル設定

エージェントごとに異なるモデルを設定できます。用途に応じて最適なモデルを選びましょう。

エージェント 推奨モデル 理由
Sisyphus Claude Opus 4.5 高度な推論と長いコンテキストが必要
oracle GPT 5.2 複雑なアーキテクチャ判断に強い
frontend-ui-ux-engineer Claude Sonnet 4.5 UIコード生成のバランスが良い
librarian Gemini 3 Pro 大量のドキュメント検索に適している
explore Grok Code Fast 1 高速なコード検索に特化

プロバイダーの指定方法

モデルIDはプロバイダー/モデル名の形式で指定します。

anthropic/claude-opus-4-5-20251101  # Anthropic本家
openai/gpt-5.2                       # OpenAI本家
opencode/gemini-3-pro                # OpenCode Zen経由
opencode/grok-code-fast-1            # OpenCode Zen経由

サブスクリプション契約がある場合は本家プロバイダーを直接指定し、それ以外はOpenCode Zenを経由するのがコスト効率が良いです。

設定可能なオプション

エージェントごとに以下のオプションを設定できます。

{
  "agents": {
    "oracle": {
      "model": "openai/gpt-5.2",
      "temperature": 0.7,
      "disable": false
    }
  }
}
オプション 説明 デフォルト
model 使用するモデルID エージェントにより異なる
temperature 出力のランダム性(0.0〜2.0) モデルにより異なる
disable エージェントを無効化 false

フックとMCPの設定

oh-my-opencodeには20以上の組み込みフックがあり、ワークフローを自動化できます。また、MCPサーバーとの連携も設定可能です。

{
  "disabled_hooks": ["some-hook-name"],
  "disabled_mcps": ["some-mcp-name"]
}

詳細な設定については公式ドキュメントを参照してください。


使ってみての感想

既存プロジェクトに導入しやすかった

opencodeを起動してから、/initコマンドを打つと、既存プロジェクトのディレクトリ構成やpackage.json、README、プロダクトコードなどを読み取って、プロジェクトの概要を自動でまとめたAGENTS.mdを生成してくれる。それを元にopencode.jsonに生成したAGENTS.mdを設定するだけで、細かいチューニングなどは必要なもののあらかたプロジェクトのルールに沿って実装してくれて便利だった

モデルの選択肢が豊富で柔軟に使える

OpenCodeのモデル選択は公式お手製のOpenCodeZen経由をはじめ、API key経由、Ollama、ローカルLLMなど多様な指定方法ができるので、例えば「ちょっと試してみたい・軽い作業をさせたい」くらいならOllamaやOpenCodeZenの無料モデルで事足り、本格的に使うならClaude Opus 4.5やGPT 5.2でオーケストレーションさせて複雑なタスクをこなすこともできる。ユースケースに応じてコストと性能のバランスを調整できるのがありがたい。

個人的には、Sisyphus(メインオーケストレーター)にはClaude Opus 4.5、探索系のexplore/librarianにはGrok Code Fast 1やGemini 3 Proみたいな安めのモデルを割り当てて、コストを抑えつつ複雑なタスクにも対応できるようにしてる。

注意点

  • オーケストレーションではトークン消費は多め: 複数エージェントが並列で動くので、explore/librarianには安いモデルを割り当てるのがおすすめ
  • 設定ファイルの理解は必要: 最初はちょっととっつきにくいけど、公式ドキュメントを見れば大丈夫

ちなみにこの記事もOpenCodeを活用して執筆に役立てました 😎


参考

11

Discussion

ログインするとコメントできます
11