ツール
LLM が使用できるツールを管理します。
ツールにより、LLM はコードベースでアクションを実行できます。OpenCode には組み込みツールのセットが付属していますが、カスタムツールや MCP サーバーで拡張できます。
デフォルトでは、すべてのツールは有効であり、実行に権限は必要ありません。権限を通じてツールの動作を制御できます。
設定
permission フィールドを使用してツールの動作を制御します。各ツールに対して許可、拒否、または承認を要求できます。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}ワイルドカードを使用して複数のツールを一度に制御することもできます。例えば、MCP サーバーのすべてのツールに承認を要求する場合:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}権限の設定について詳しくはこちらをご覧ください。
組み込みツール
OpenCode で利用可能なすべての組み込みツールは以下の通りです。
bash
プロジェクト環境でシェルコマンドを実行します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}このツールにより、LLM は npm install、git status、またはその他のシェルコマンドなどのターミナルコマンドを実行できます。
edit
正確な文字列置換を使用して既存のファイルを変更します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}このツールは、ファイル内の特定のテキストを見つけて新しいテキストに置き換えます。正確な一致が必要なため、変更が正確に適用されます。
glob
パターンマッチングを使用してファイルを検索します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}*.ts や src/**/*.json などのパターンを使用してファイルを検索します。プロジェクト構造の探索やファイルの検出に便利です。
grep
ファイルの内容を正規表現で検索します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}ファイル全体で特定のパターンやテキストを検索します。関数定義、インポート、特定のコードパターンの検索に便利です。
list
ディレクトリの内容を一覧表示します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}ディレクトリ内のファイルとフォルダを一覧表示します。プロジェクト構造の理解やファイルの検出に便利です。
patch
ファイルにパッチを適用します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"patch": "allow"
}
}unified diff 形式を使用してファイルに変更を適用します。複数の変更を一度に適用する場合に便利です。
read
ファイルの内容を読み取ります。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}ファイルの内容を読み取り、行番号付きで返します。コードの理解、設定の確認、ドキュメントの確認に便利です。
todoread
TODO リストを読み取ります。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}現在の TODO リストの内容を読み取ります。タスクの進捗確認に便利です。
todowrite
TODO リストを管理します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}TODO リストの項目を作成、更新、削除します。タスクの追跡と管理に便利です。
webfetch
Web コンテンツを取得します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}URL から Web コンテンツを取得します。ドキュメントの参照、API レスポンスの確認、Web リソースへのアクセスに便利です。
write
新しいファイルを作成します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"write": "allow"
}
}指定されたパスに新しいファイルを作成します。新しいコンポーネント、設定ファイル、ドキュメントの作成に便利です。
lsp
LSP(Language Server Protocol)ツールは、コードインテリジェンス機能を提供します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp_diagnostics": "allow",
"lsp_definition": "allow",
"lsp_references": "allow",
"lsp_hover": "allow",
"lsp_codeaction": "allow",
"lsp_rename": "allow"
}
}LSP ツールは設定された言語サーバーと連携して動作します。LSP サーバーの設定について詳しくはこちらをご覧ください。
ask
ユーザーに質問するためのツールです。LLM が以下のような場合に使用します:
- 曖昧な指示の明確化が必要な場合
- 続行前に確認が必要な場合
- 方向性についての選択肢の提示
各質問にはヘッダー、質問テキスト、オプションのリストが含まれます。ユーザーは提供されたオプションから選択するか、カスタム回答を入力できます。複数の質問がある場合、ユーザーはすべての回答を送信する前に質問間を移動できます。
カスタムツール
カスタムツールを使用すると、LLM が呼び出せる独自の関数を定義できます。これらは設定ファイルで定義され、任意のコードを実行できます。
カスタムツールの作成について詳しくはこちらをご覧ください。
MCP サーバー
MCP(Model Context Protocol)サーバーを使用すると、外部ツールやサービスを統合できます。これにはデータベースアクセス、API 統合、サードパーティサービスが含まれます。
MCP サーバーの設定について詳しくはこちらをご覧ください。
内部実装
内部的には、grep、glob、list などのツールは ripgrep (opens in a new tab) を使用しています。デフォルトでは、ripgrep は .gitignore パターンを尊重するため、.gitignore にリストされているファイルやディレクトリは検索やリストから除外されます。
無視パターン
通常無視されるファイルを含めるには、プロジェクトルートに .ignore ファイルを作成します。このファイルで特定のパスを明示的に許可できます。
!node_modules/
!dist/
!build/例えば、この .ignore ファイルにより、ripgrep は .gitignore にリストされていても node_modules/、dist/、build/ ディレクトリ内を検索できます。