本文へスキップ
設定

ツール

ツールを使用すると、LLM がコードベースでアクションを実行できるようになります。 OpenCode には一連の組み込みツールが付属していますが、カスタムツール または MCP サーバー を使用して拡張できます。

デフォルトでは、すべてのツールは有効になっており、実行するための権限は必要ありません。 権限.


permission フィールドを使用してツールの動作を制御します。各ツールを許可、拒否、または承認を要求することができます。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

ワイルドカードを使用して複数のツールを一度に制御することもできます。たとえば、MCP サーバーからのすべてのツールの承認を要求するには、次のようにします。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "mymcp_*": "ask"
  }
}

アクセス許可の構成について詳しくは、 をご覧ください。


OpenCode で利用可能なすべての組み込みツールを次に示します。


プロジェクト環境でシェルコマンドを実行します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "bash": "allow"
  }
}

このツールを使用すると、LLM は npm install、git status、またはその他のシェルコマンドなどのターミナルコマンドを実行できます。


正確な文字列置換を使用して既存のファイルを変更します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

このツールは、完全に一致するテキストを置き換えることにより、ファイルを正確に編集します。これは、LLM がコードを変更する主な方法です。


新しいファイルを作成するか、既存のファイルを上書きします。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

これを使用して、LLM が新しいファイルを作成できるようにします。既存のファイルがすでに存在する場合は上書きされます。


コードベースからファイルの内容を読み取ります。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "read": "allow"
  }
}

このツールはファイルを読み取り、その内容を返します。大きなファイルの特定の行範囲の読み取りをサポートします。


正規表現を使用してファイルの内容を検索します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "grep": "allow"
  }
}

コードベース全体での高速コンテンツ検索。完全な正規表現構文とファイルパターンフィルタリングをサポートします。


パターンマッチングによりファイルを検索します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "glob": "allow"
  }
}

**/*.js や src/**/*.ts などの glob パターンを使用してファイルを検索します。一致するファイルパスを変更時間順に並べて返します。


構成された LSP サーバーと対話して、定義、参照、ホバー情報、呼び出し階層などのコードインテリジェンス機能を取得します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "lsp": "allow"
  }
}

サポートされている操作には、goToDefinition、findReferences、hover、documentSymbol、workspaceSymbol、goToImplementation、prepareCallHierarchy、incomingCalls、および outgoingCalls が含まれます。

プロジェクトで使用できる LSP サーバーを構成するには、「LSP Servers](/docs/lsp).


ファイルにパッチを適用します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

このツールは、コードベースにパッチファイルを適用します。さまざまなソースからの差分やパッチを適用するのに役立ちます。


skill (SKILL.md ファイル) をロードし、会話でその内容を返します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "skill": "allow"
  }
}

Web コンテンツを取得します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "webfetch": "allow"
  }
}

LLM が Web ページをフェッチして読み取ることを許可します。ドキュメントの検索やオンラインリソースの調査に役立ちます。


ウェブで情報を検索してください。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "websearch": "allow"
  }
}

Exa AI を使用して Web 検索を実行し、オンラインで関連情報を見つけます。トピックの調査、最新のイベントの検索、またはトレーニングデータのカットオフを超えた情報の収集に役立ちます。

API キーは必要ありません。ツールは認証なしで Exa AI のホストされた MCP サービスに直接接続します。


実行中にユーザーに質問します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "question": "allow"
  }
}

このツールを使用すると、LLM はタスク中にユーザーに質問できるようになります。これは次の場合に役立ちます。

  • ユーザーの好みや要件を収集する
  • 曖昧な指示を明確にする
  • 実装の選択肢について決定を下す
  • どの方向に進むべきかについての選択肢を提供する

各質問には、ヘッダー、質問テキスト、およびオプションのリストが含まれます。ユーザーは、提供されたオプションから選択するか、カスタムの回答を入力できます。複数の質問がある場合、ユーザーはすべての回答を送信する前に質問間を移動できます。


カスタムツールを使用すると、LLM が呼び出すことができる独自の関数を定義できます。これらは設定ファイルで定義されており、任意のコードを実行できます。

カスタムツールの作成について詳しくは、 をご覧ください。


MCP (Model Context Protocol) サーバーを使用すると、外部ツールとサービスを統合できます。これには、データベースアクセス、API 統合、サードパーティサービスが含まれます。

MCP サーバーの設定について詳しくは、 をご覧ください。


内部的には、grep、glob などのツールは内部で ripgrep を使用します。デフォルトでは、ripgrep は .gitignore パターンを尊重します。つまり、.gitignore にリストされているファイルとディレクトリは検索とリストから除外されます。


通常は無視されるファイルを含めるには、プロジェクトのルートに .ignore ファイルを作成します。このファイルでは、特定のパスを明示的に許可できます。

.ignore
!node_modules/
!dist/
!build/

たとえば、この .ignore ファイルを使用すると、ripgrep は、node_modules/ にリストされている場合でも、dist/、build/、および .gitignore ディレクトリ内を検索できます。