OpenCode ツール

OpenCode のコア機能は大モデル自体だけでなく、呼び出すことができるツール(Tools)に由来します。

ツールの本質:LLM を「話すだけ」から「実際に行動する」へ変えること。

Tools = OpenCode の実行能力、そして権限 = セキュリティ境界。


一、ツール(Tools)とは

ツールは、LLM がプロジェクト内で操作を実行するための能力インターフェースです。例:

  • コードの読み取り
  • ファイルの変更
  • コマンドの実行
  • コードの検索
  • ネットワークへのアクセス

ツールなし:コードを生成するのみ

ツールあり:以下のことが可能プロジェクトを直接操作する


二、ツール権限制御(最も重要)

デフォルトでは:

  • すべてのツールが有効
  • かつ確認なしで実行可能

本番環境では権限設定が必須!

1、基本権限設定

{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}
権限値 説明
allow 直接実行を許可
deny 完全に禁止
ask 実行前に手動確認が必要

2、ワイルドカード制御

ツールを一括制御できます:

{
  "permission": {
    "mymcp_*": "ask"
  }
}

MCP からのすべてのツールは承認が必要


三、内蔵ツール詳細

OpenCode にはエンジニアリングレベルのツール一式が組み込まれています:

1、bash(コマンド実行)

{
  "permission": {
    "bash": "allow"
  }
}

機能:

  • shell コマンドを実行
  • 例:npm install、git status

リスク:高(ask に設定することを推奨)

2、edit(中核ツール)

{
  "permission": {
    "edit": "allow"
  }
}

機能:

  • 既存ファイルの変更
  • 正確なテキスト置換に基づく

説明:これは AI がコードを変更する中核能力です

3、write(ファイル作成)

機能:

  • 新規ファイルの作成
  • 既存ファイルの上書き

注意:

write は edit 権限に制御されます

4、read(ファイル読み取り)

{
  "permission": {
    "read": "allow"
  }
}

機能:

  • コードファイルの読み取り
  • 行単位での読み取りをサポート

リスク:低(always allow を推奨)

5、grep(コンテンツ検索)

{
  "permission": {
    "grep": "allow"
  }
}

機能:

  • 正規表現でコードを検索

6、glob(ファイルマッチング)

機能:

  • ファイルパスを検索(例:src/**/*.ts)

7、list(ディレクトリ閲覧)

機能:

  • ディレクトリ構造を一覧表示

8、patch(パッチ適用)

機能:

  • diff パッチを適用

説明:edit 権限に制御されます

9、lsp(実験的)

機能:

  • コードスマート分析(定義へのジャンプ、参照の検索)

有効化方法:

OPENCODE_EXPERIMENTAL_LSP_TOOL=true

10、skill(スキル読み込み)

機能:

  • SKILL.md を読み込み
  • AI の動作を強化

11、todowrite(タスク管理)

機能:

  • タスクリストの管理
  • 複雑なフローの追跡

12、webfetch(Webページ読み取り)

機能:

  • 指定された URL のコンテンツを取得

13、websearch(オンライン検索)

有効化方法:

OPENCODE_ENABLE_EXA=1 opencode

機能:

  • インターネット上の情報を検索

違い:

  • websearch:情報を探す(発見)
  • webfetch:コンテンツを読み取る(取得)

14、question(インタラクティブ質問)

機能:

  • ユーザーに質問する
  • 要件を収集する

適用場面:

  • 要件が不明確な場合
  • ユーザーの判断が必要な場合

四、カスタムツール

独自のツールを定義して、AI にカスタムロジックを実行させることができます。

例:

  • 内部 API の呼び出し
  • データベースの操作
  • ビジネスロジックの実行

本質:LLM に関数を呼び出させること


五、MCP サーバー(高度な機能)

MCP(Model Context Protocol)を使用すると、外部システムに接続できます:

  • データベース
  • サードパーティ API
  • 内部サービス

これは AI に「外部能力」を接続することに相当します


六、基盤メカニズム(重要)

OpenCode は検索エンジンとして ripgrep を使用します:

  • .gitignore に従う
  • デフォルトで node_modules などのディレクトリを無視

無視ルールを上書きする方法

ファイルを作成:

.ignore

例:

!node_modules/
!dist/
!build/

これらのディレクトリを強制的に含める


七、ベストプラクティス(強く推奨)

  • read / grep / glob → allow
  • edit → ask(開発段階)
  • bash → ask(本番環境)
  • webfetch → allow

中核となる原則:

  • 読み取りは緩めてもよい
  • 変更は必ず制御する
  • コマンド実行は慎重に
その他の拡張