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.
{
"$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:
{
"$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.
{
"$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.
{
"$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.
{
"$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 dieedit-Berechtigung gesteuert, die alle Dateiänderungen abdeckt (edit,write,apply_patch).
read
Liest Dateiinhalte aus Ihrer Codebasis.
{
"$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.
{
"$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.
{
"$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(oderOPENCODE_EXPERIMENTAL=true) gesetzt ist.
{
"$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.
{
"$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 dieedit-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.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}todowrite
Verwaltet Todo-Listen während Coding-Sitzungen.
{
"$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.
{
"$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_EXAauf einen beliebigen Wahrheitswert gesetzt ist (z. B.trueoder1).Zum Aktivieren beim Starten von OpenCode:
OPENCODE_ENABLE_EXA=1 opencode
{
"$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), undwebfetch, wenn Sie Inhalte von einer bestimmten URL abrufen müssen (Retrieval).
question
Stellt dem Benutzer während der Ausführung Fragen.
{
"$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.