ツール
Tools
ツールにより、LLM はコードベースでアクションを実行できます。OpenCode は組み込みツールのセットを付属していますが、カスタムツール または MCP サーバー で拡張できます。
デフォルトでは、すべてのツールが 有効 であり、実行に権限を必要としません。権限介してツールの動作を制御できます。
Configure
permission フィールドを使用してツールの動作を制御できます。各ツールに対して許可、拒否、または承認 要求を設定できます。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
} ワイルドカードを使用して複数のツールを一度に制御することもできます。例えば、MCP サーバーのすべてのツールに承認を要求するには:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
} 権限の設定について詳細。
Built-in
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"
}
} このツールは正確なテキスト一致を置換してファイルに精密な編集を行います。これは LLM がコードを変更する主要な方法です。
write
新しいファイルを作成するか、既存のファイルを上書きします。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
} LLM が新しいファイルを作成することを許可するために使用します。既存のファイルが既に存在する場合、上書きされます。
read
コードベースからファイル内容を読み取ります。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
} このツールはファイルを読み取りその内容を返します。大規模なファイルの場合、特定の行範囲の読み取りをサポートしています。
grep
正規表現を使用してファイル内容を検索します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
} コードベース全体の高速コンテンツ検索。完全な正規表現構文とファイルパターンフィルタリングをサポートしています。
glob
パターン一致でファイルを検索します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
} **/*.js や src/**/*.ts などの glob パターンを使用してファイルを検索。変更時間でソートされた一致ファイルパスを返します。
lsp (experimental)
構成された LSP サーバーと対話して、定義、参照、ホバー情報、呼び出し階層などのコードインテリジェンス機能を取得します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
} サポートされている操作には goToDefinition、findReferences、hover、documentSymbol、workspaceSymbol、goToImplementation、prepareCallHierarchy、incomingCalls、outgoingCalls が含まれます。
プロジェクトでどの LSP サーバーが利用可能かの設定については、LSP サーバー をご覧ください。
apply_patch
ファイルにパッチを適用します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
} このツールはパッチファイルをコードベースに適用します。Variousソースからの差分とパッチの適用に便利です。
tool.execute.before または tool.execute.after フックを処理するとき、input.tool === "apply_patch"("patch" ではなく)を確認してください。
apply_patch は output.args.patchText を output.args.filePath 代わりに使用します。パスは patchText 内のマーカー行に埋め込まれ、プロジェクトルート相対です(例如:*** Add File: src/new-file.ts、*** Update File: src/existing.ts、*** Move to: src/renamed.ts、*** Delete File: src/obsolete.ts)。
skill
skill(SKILL.md ファイル)をロードして、会話をその内容で返します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
} todowrite
コーディングセッション中の todoリストを管理します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
} 複雑な操作中の進捗を追跡するためにタスクリストを作成して更新します。LLM はこれを使用してマルチステップタスクを整理します。
webfetch
Webコンテンツを取得します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
} LLM が Web ページを取得して読むことを許可します。ドキュメントの参照やオンラインリソースの研究に便利です。
websearch
Web で情報を検索します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
} Exa AI を使用してオンラインの相关信息を見つける Web 検索を実行します。研究、トピックの検索、現在のイベントの収集、トレーニングデータカットオフを超えた情報の収集に便利です。
APIキーは不要 — ツールは認証なしで Exa AI のホストされた MCP サービスに直接接続します。
question
実行中にユーザーに質問します。
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
} このツールにより、LLM はタスク中にユーザーに質問できます。以下に便利です:
- ユーザーの設定や要件の収集
- 曖昧な指示の明確化
- 実装の選択に関する決定の取得
- どの方向に進むかの選択肢の提供
各質問にはヘッダー、質問テキスト、オプションのリストが含まれます。ユーザーは提供されたオプションから選択するか、カスタム回答をタイプできます。複数の質問がある場合、ユーザーは提出前にナビゲートできます。
Custom tools
カスタムツールを使用すると、LLM が呼び出せる独自の関数を定義できます。これらは設定ファイルで定義され、任意のコードを実行できます。
カスタムツールの作成について詳細。
MCP servers
MCP (Model Context Protocol) サーバーを使用すると、外部ツールやサービスを統合できます。これにはデータベースアクセス、API 統合、サードパーティサービスが含まれます。
MCP サーバーの設定について詳細。
Internals
内部的には、grep や glob などのツールは ripgrep を使用しています。デフォルトで ripgrep は .gitignore パターンを尊重します,这意味着 .gitignore にリストされた文件和ディレクトリは検索とリストから除外されます。
Ignore patterns
通常は無視されるファイルを含めるには、プロジェクトルートに .ignore ファイルを作成します。このファイルは特定のを明示的に許可できます。
!node_modules/
!dist/
!build/
例えば、この .ignore ファイルは node_modules/、dist/、build/ ディレクトリが .gitignore にリストされていても ripgrep がその中で検索できるようにします。