| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- ---
- title: Tools
- description: Verwalte, welche Tools ein LLM nutzen darf.
- ---
- Tools erlauben dem LLM Aktionen in deiner Codebasis.
- OpenCode bringt eingebaute Tools mit und laesst sich ueber [Custom Tools](/docs/custom-tools) oder [MCP-Server](/docs/mcp-servers) erweitern.
- Standardmaessig sind alle Tools **aktiviert** und brauchen keine Freigabe.
- Das Verhalten steuerst du ueber [Berechtigungen](/docs/permissions).
- ---
- ## Konfiguration
- Nutze das Feld `permission`, um Tool-Verhalten zu steuern.
- Pro Tool kannst du erlauben, verbieten oder eine Rueckfrage verlangen.
- ```json title="opencode.json"
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "deny",
- "bash": "ask",
- "webfetch": "allow"
- }
- }
- ```
- Mit Wildcards kannst du mehrere Tools auf einmal steuern.
- Zum Beispiel, um fuer alle Tools eines MCP-Servers eine Freigabe zu verlangen:
- ```json title="opencode.json"
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "mymcp_*": "ask"
- }
- }
- ```
- [Mehr dazu](/docs/permissions), wie du Berechtigungen konfigurierst.
- ---
- ## Eingebaut
- Hier sind alle in OpenCode verfuegbaren eingebauten Tools.
- ---
- ### bash
- Fuehrt Shell-Befehle in deiner Projektumgebung aus.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "bash": "allow"
- }
- }
- ```
- Damit kann das LLM Terminal-Befehle wie `npm install`, `git status` oder andere Shell-Kommandos ausfuehren.
- ---
- ### edit
- Bearbeitet bestehende Dateien ueber exakte String-Ersetzungen.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- Dieses Tool fuehrt praezise Aenderungen per exakter Textsuche aus.
- Es ist der zentrale Weg, wie das LLM Code aendert.
- ---
- ### write
- Erstellt neue Dateien oder ueberschreibt bestehende Dateien.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- Damit erlaubst du dem LLM, neue Dateien anzulegen.
- Bestehende Dateien werden dabei ueberschrieben.
- :::note
- Das Tool `write` wird ueber die Berechtigung `edit` gesteuert.
- `edit` gilt fuer alle Datei-Aenderungen (`edit`, `write`, `patch`, `multiedit`).
- :::
- ---
- ### read
- Read file contents from your codebase.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "read": "allow"
- }
- }
- ```
- This tool reads files and returns their contents. It supports reading specific line ranges for large files.
- ---
- ### grep
- Search file contents using regular expressions.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "grep": "allow"
- }
- }
- ```
- Fast content search across your codebase. Supports full regex syntax and file pattern filtering.
- ---
- ### glob
- Find files by pattern matching.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "glob": "allow"
- }
- }
- ```
- Search for files using glob patterns like `**/*.js` or `src/**/*.ts`. Returns matching file paths sorted by modification time.
- ---
- ### list
- List files and directories in a given path.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "list": "allow"
- }
- }
- ```
- This tool lists directory contents. It accepts glob patterns to filter results.
- ---
- ### lsp (experimental)
- Interact with your configured LSP servers to get code intelligence features like definitions, references, hover info, and call hierarchy.
- :::note
- This tool is only available when `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (or `OPENCODE_EXPERIMENTAL=true`).
- :::
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "lsp": "allow"
- }
- }
- ```
- Supported operations include `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls`, and `outgoingCalls`.
- To configure which LSP servers are available for your project, see [LSP Servers](/docs/lsp).
- ---
- ### patch
- Apply patches to files.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "edit": "allow"
- }
- }
- ```
- This tool applies patch files to your codebase. Useful for applying diffs and patches from various sources.
- :::note
- The `patch` tool is controlled by the `edit` permission, which covers all file modifications (`edit`, `write`, `patch`, `multiedit`).
- :::
- ---
- ### skill
- Load a [skill](/docs/skills) (a `SKILL.md` file) and return its content in the conversation.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "skill": "allow"
- }
- }
- ```
- ---
- ### todowrite
- Manage todo lists during coding sessions.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "todowrite": "allow"
- }
- }
- ```
- Creates and updates task lists to track progress during complex operations. The LLM uses this to organize multi-step tasks.
- :::note
- This tool is disabled for subagents by default, but you can enable it manually. [Learn more](/docs/agents/#permissions)
- :::
- ---
- ### todoread
- Read existing todo lists.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "todoread": "allow"
- }
- }
- ```
- Reads the current todo list state. Used by the LLM to track what tasks are pending or completed.
- :::note
- This tool is disabled for subagents by default, but you can enable it manually. [Learn more](/docs/agents/#permissions)
- :::
- ---
- ### webfetch
- Fetch web content.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "webfetch": "allow"
- }
- }
- ```
- Allows the LLM to fetch and read web pages. Useful for looking up documentation or researching online resources.
- ---
- ### websearch
- Search the web for information.
- :::note
- This tool is only available when using the OpenCode provider or when the `OPENCODE_ENABLE_EXA` environment variable is set to any truthy value (e.g., `true` or `1`).
- To enable when launching OpenCode:
- ```bash
- OPENCODE_ENABLE_EXA=1 opencode
- ```
- :::
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "websearch": "allow"
- }
- }
- ```
- Performs web searches using Exa AI to find relevant information online. Useful for researching topics, finding current events, or gathering information beyond the training data cutoff.
- No API key is required — the tool connects directly to Exa AI's hosted MCP service without authentication.
- :::tip
- Use `websearch` when you need to find information (discovery), and `webfetch` when you need to retrieve content from a specific URL (retrieval).
- :::
- ---
- ### question
- Ask the user questions during execution.
- ```json title="opencode.json" {4}
- {
- "$schema": "https://opencode.ai/config.json",
- "permission": {
- "question": "allow"
- }
- }
- ```
- This tool allows the LLM to ask the user questions during a task. It's useful for:
- - Gathering user preferences or requirements
- - Clarifying ambiguous instructions
- - Getting decisions on implementation choices
- - Offering choices about what direction to take
- Each question includes a header, the question text, and a list of options. Users can select from the provided options or type a custom answer. When there are multiple questions, users can navigate between them before submitting all answers.
- ---
- ## Benutzerdefinierte Tools
- Mit Custom Tools definierst du eigene Funktionen, die das LLM aufrufen kann.
- Sie werden in der Konfigurationsdatei definiert und koennen beliebigen Code ausfuehren.
- [Mehr dazu](/docs/custom-tools), wie du Custom Tools erstellst.
- ---
- ## MCP-Server
- MCP-Server (Model Context Protocol) binden externe Tools und Dienste ein.
- Dazu gehoeren Datenbanken, API-Integrationen und Drittanbieter-Services.
- [Mehr dazu](/docs/mcp-servers), wie du MCP-Server konfigurierst.
- ---
- ## Interna
- Intern verwenden Tools wie `grep`, `glob` und `list` [ripgrep](https://github.com/BurntSushi/ripgrep).
- Standardmaessig beachtet ripgrep `.gitignore`, daher werden dort aufgefuehrte Dateien und Ordner nicht durchsucht.
- ---
- ### Ignorier-Muster
- Wenn du normalerweise ignorierte Dateien einschliessen willst, lege im Projekt-Root eine `.ignore`-Datei an.
- Dort kannst du Pfade explizit erlauben.
- ```text title=".ignore"
- !node_modules/
- !dist/
- !build/
- ```
- Dieses Beispiel erlaubt ripgrep, in `node_modules/`, `dist/` und `build/` zu suchen, auch wenn sie in `.gitignore` stehen.
|