Deutsch
Dokumentation
Werkzeuge

Tools

Verwalten Sie die Tools, die ein LLM verwenden kann.

Tools ermöglichen es dem LLM, Aktionen in Ihrer Codebasis auszuführen. OpenCode wird mit einer Reihe integrierter Tools ausgeliefert, aber Sie können es mit benutzerdefinierten Tools oder MCP-Servern erweitern.

Standardmäßig sind alle Tools aktiviert und benötigen keine Berechtigung zur Ausführung. Sie können das Verhalten der Tools über Berechtigungen steuern.


Konfigurieren

Verwenden Sie das Feld permission, um das Verhalten der Tools zu steuern. Sie können jedes Tool zulassen, verweigern oder eine Genehmigung erfordern.

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

Sie können auch Wildcards verwenden, um mehrere Tools gleichzeitig zu steuern. Um zum Beispiel für alle Tools eines MCP-Servers eine Genehmigung zu erfordern:

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

Mehr erfahren über das Konfigurieren von Berechtigungen.


Integriert

Hier sind alle in OpenCode verfügbaren integrierten Tools.


bash

Führt Shell-Befehle in Ihrer Projektumgebung aus.

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

Dieses Tool ermöglicht es dem LLM, Terminal-Befehle wie npm install, git status oder jeden anderen Shell-Befehl auszuführen.


edit

Ändert vorhandene Dateien mithilfe exakter String-Ersetzungen.

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

Dieses Tool führt präzise Bearbeitungen an Dateien durch, indem es exakte Textübereinstimmungen ersetzt. Es ist die primäre Methode, mit der das LLM Code ändert.


write

Erstellt neue Dateien oder überschreibt vorhandene.

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

Verwenden Sie dies, um dem LLM zu erlauben, neue Dateien zu erstellen. Vorhandene Dateien werden überschrieben, falls sie bereits existieren.

Hinweis: Das write-Tool wird über die edit-Berechtigung gesteuert, die alle Dateiänderungen abdeckt (edit, write, apply_patch).


read

Liest Dateiinhalte aus Ihrer Codebasis.

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

Dieses Tool liest Dateien und gibt ihren Inhalt zurück. Es unterstützt das Lesen bestimmter Zeilenbereiche bei großen Dateien.


grep

Durchsucht Dateiinhalte mithilfe regulärer Ausdrücke.

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

Schnelle Inhaltssuche in Ihrer gesamten Codebasis. Unterstützt vollständige Regex-Syntax und die Filterung nach Dateimustern.


glob

Findet Dateien durch Musterabgleich.

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

Suchen Sie nach Dateien mithilfe von Glob-Mustern wie **/*.js oder src/**/*.ts. Gibt übereinstimmende Dateipfade zurück, sortiert nach Änderungszeit.


lsp (experimentell)

Interagiert mit Ihren konfigurierten LSP-Servern, um Code-Intelligence-Funktionen wie Definitionen, Referenzen, Hover-Informationen und Aufrufhierarchie zu erhalten.

Hinweis: Dieses Tool ist nur verfügbar, wenn OPENCODE_EXPERIMENTAL_LSP_TOOL=true (oder OPENCODE_EXPERIMENTAL=true) gesetzt ist.

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

Zu den unterstützten Operationen gehören goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls und outgoingCalls.

Um zu konfigurieren, welche LSP-Server für Ihr Projekt verfügbar sind, siehe LSP-Server.


apply_patch

Wendet Patches auf Dateien an.

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

Dieses Tool wendet Patch-Dateien auf Ihre Codebasis an. Nützlich zum Anwenden von Diffs und Patches aus verschiedenen Quellen.

Wenn Sie tool.execute.before- oder tool.execute.after-Hooks verarbeiten, prüfen Sie input.tool === "apply_patch" (nicht "patch").

apply_patch verwendet output.args.patchText anstelle von output.args.filePath. Pfade sind in Markierungszeilen innerhalb von patchText eingebettet und relativ zum Projekt-Stammverzeichnis (zum Beispiel: *** Add File: src/new-file.ts, *** Update File: src/existing.ts, *** Move to: src/renamed.ts, *** Delete File: src/obsolete.ts).

Hinweis: Das apply_patch-Tool wird über die edit-Berechtigung gesteuert, die alle Dateiänderungen abdeckt (edit, write, apply_patch).


skill

Lädt einen Skill (eine SKILL.md-Datei) und gibt dessen Inhalt in der Konversation zurück.

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

todowrite

Verwaltet Todo-Listen während Coding-Sitzungen.

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

Erstellt und aktualisiert Aufgabenlisten, um den Fortschritt bei komplexen Operationen zu verfolgen. Das LLM verwendet dies, um mehrstufige Aufgaben zu organisieren.

Hinweis: Dieses Tool ist für Subagenten standardmäßig deaktiviert, aber Sie können es manuell aktivieren. Mehr erfahren


webfetch

Ruft Webinhalte ab.

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

Ermöglicht es dem LLM, Webseiten abzurufen und zu lesen. Nützlich zum Nachschlagen von Dokumentationen oder zum Recherchieren von Online-Ressourcen.


websearch

Durchsucht das Web nach Informationen.

Hinweis: Dieses Tool ist nur verfügbar, wenn der OpenCode-Provider verwendet wird oder wenn die Umgebungsvariable OPENCODE_ENABLE_EXA auf einen beliebigen Wahrheitswert gesetzt ist (z. B. true oder 1).

Zum Aktivieren beim Starten von OpenCode:

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

Führt Websuchen mit Exa AI durch, um relevante Informationen online zu finden. Nützlich zum Recherchieren von Themen, zum Auffinden aktueller Ereignisse oder zum Sammeln von Informationen über den Trainingsdaten-Cutoff hinaus.

Es ist kein API-Schlüssel erforderlich — das Tool verbindet sich ohne Authentifizierung direkt mit dem gehosteten MCP-Dienst von Exa AI.

Tipp: Verwenden Sie websearch, wenn Sie Informationen finden müssen (Discovery), und webfetch, wenn Sie Inhalte von einer bestimmten URL abrufen müssen (Retrieval).


question

Stellt dem Benutzer während der Ausführung Fragen.

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

Dieses Tool ermöglicht es dem LLM, dem Benutzer während einer Aufgabe Fragen zu stellen. Es ist nützlich für:

  • Das Erfassen von Benutzervorlieben oder Anforderungen
  • Das Klären mehrdeutiger Anweisungen
  • Das Einholen von Entscheidungen zu Implementierungsoptionen
  • Das Anbieten von Auswahlmöglichkeiten zur einzuschlagenden Richtung

Jede Frage enthält eine Überschrift, den Fragetext und eine Liste von Optionen. Benutzer können aus den bereitgestellten Optionen auswählen oder eine eigene Antwort eingeben. Bei mehreren Fragen können Benutzer zwischen ihnen navigieren, bevor sie alle Antworten absenden.


Benutzerdefinierte Tools

Mit benutzerdefinierten Tools können Sie Ihre eigenen Funktionen definieren, die das LLM aufrufen kann. Diese werden in Ihrer Konfigurationsdatei definiert und können beliebigen Code ausführen.

Mehr erfahren über das Erstellen benutzerdefinierter Tools.


MCP-Server

MCP-Server (Model Context Protocol) ermöglichen es Ihnen, externe Tools und Dienste zu integrieren. Dazu gehören Datenbankzugriff, API-Integrationen und Drittanbieterdienste.

Mehr erfahren über das Konfigurieren von MCP-Servern.


Interna

Intern verwenden Tools wie grep und glob unter der Haube ripgrep (opens in a new tab). Standardmäßig respektiert ripgrep .gitignore-Muster, was bedeutet, dass in Ihrer .gitignore aufgeführte Dateien und Verzeichnisse von Suchen und Auflistungen ausgeschlossen werden.


Ignore-Muster

Um Dateien einzuschließen, die normalerweise ignoriert würden, erstellen Sie eine .ignore-Datei im Stammverzeichnis Ihres Projekts. Diese Datei kann bestimmte Pfade explizit zulassen.

!node_modules/
!dist/
!build/

Diese .ignore-Datei erlaubt ripgrep beispielsweise, innerhalb der Verzeichnisse node_modules/, dist/ und build/ zu suchen, selbst wenn diese in .gitignore aufgeführt sind.