Tools
Verwalten Sie die Tools, die ein LLM verwenden kann.
Tools ermöglichen es dem LLM, Aktionen in Ihrer Codebase auszuführen. OpenCode wird mit einer Reihe von integrierten Tools geliefert, 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 Tool-Verhalten über Berechtigungen steuern.
Konfigurieren
Verwenden Sie das Feld permission, um das Tool-Verhalten zu steuern. Sie können für jedes Tool zulassen, verweigern oder eine Genehmigung anfordern.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "deny", "bash": "ask", "webfetch": "allow" }}Sie können auch Platzhalter verwenden, um mehrere Tools gleichzeitig zu steuern. Um beispielsweise eine Genehmigung für alle Tools von einem MCP-Server zu verlangen:
{ "$schema": "https://opencode.ai/config.json", "permission": { "mymcp_*": "ask" }}Weitere Informationen zum Konfigurieren von Berechtigungen.
Integriert
Hier sind alle in OpenCode verfügbaren integrierten Tools.
bash
Führen Sie Shell-Befehle in Ihrer Projektumgebung aus.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": "allow" }}Dieses Tool ermöglicht es dem LLM, Terminalbefehle wie npm install, git status oder jeden anderen Shell-Befehl auszuführen.
edit
Ändern Sie vorhandene Dateien mit genauen String-Ersetzungen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}Dieses Tool führt präzise Änderungen an Dateien durch, indem es exakte Textübereinstimmungen ersetzt. Dies ist die Hauptmethode, mit der das LLM Code ändert.
write
Erstellen Sie neue Dateien oder überschreiben Sie vorhandene.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}Verwenden Sie dies, um dem LLM das Erstellen neuer Dateien zu erlauben. Es wird vorhandene Dateien überschreiben, wenn sie bereits vorhanden sind.
read
Lesen Sie Dateiinhalte aus Ihrer Codebase.
{ "$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 für große Dateien.
grep
Durchsuchen Sie Dateiinhalte mit regulären Ausdrücken.
{ "$schema": "https://opencode.ai/config.json", "permission": { "grep": "allow" }}Schnelle Inhaltssuche in Ihrer Codebase. Unterstützt vollständige Regex-Syntax und Dateimuster-Filterung.
glob
Finden Sie Dateien durch Musterabgleich.
{ "$schema": "https://opencode.ai/config.json", "permission": { "glob": "allow" }}Suchen Sie nach Dateien mit Glob-Mustern wie **/*.js oder src/**/*.ts. Gibt übereinstimmende Dateipfade zurück, sortiert nach Änderungsdatum.
list
Listen Sie Dateien und Verzeichnisse in einem bestimmten Pfad auf.
{ "$schema": "https://opencode.ai/config.json", "permission": { "list": "allow" }}Dieses Tool listet Verzeichnisinhalte auf. Es akzeptiert Glob-Muster zum Filtern der Ergebnisse.
lsp (experimentell)
Interagieren Sie mit Ihren konfigurierten LSP-Servern, um Code-Intelligenz-Funktionen wie Definitionen, Referenzen, Hover-Info und Aufrufhierarchie zu erhalten.
{ "$schema": "https://opencode.ai/config.json", "permission": { "lsp": "allow" }}Unterstützte Operationen umfassen 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.
patch
Wenden Sie Patches auf Dateien an.
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "allow" }}Dieses Tool wendet Patch-Dateien auf Ihre Codebase an. Nützlich zum Anwenden von Diffs und Patches aus verschiedenen Quellen.
skill
Laden Sie ein Skill (eine SKILL.md-Datei) und geben Sie ihren Inhalt in der Konversation zurück.
{ "$schema": "https://opencode.ai/config.json", "permission": { "skill": "allow" }}todowrite
Verwalten Sie Todo-Listen während Codingsitzungen.
{ "$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 mehrschrittige Aufgaben zu organisieren.
todoread
Lesen Sie vorhandene Todo-Listen.
{ "$schema": "https://opencode.ai/config.json", "permission": { "todoread": "allow" }}Liest den aktuellen Status der Todo-Liste. Wird vom LLM verwendet, um zu verfolgen, welche Aufgaben ausstehend oder abgeschlossen sind.
webfetch
Rufen Sie Web-Inhalte ab.
{ "$schema": "https://opencode.ai/config.json", "permission": { "webfetch": "allow" }}Ermöglicht dem LLM, Webseiten abzurufen und zu lesen. Nützlich zum Nachschlagen von Dokumentation oder Recherche von Online-Ressourcen.
question
Stellen Sie 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:
- Erfassung von Benutzervorzügen oder -anforderungen
- Klärung mehrdeutiger Anweisungen
- Entscheidung über Implementierungswahlen
- Angebote von Optionen, welche Richtung eingeschlagen werden soll
Jede Frage enthält eine Kopfzeile, den Fragetext und eine Liste von Optionen. Benutzer können aus den bereitgestellten Optionen wählen oder eine benutzerdefinierte Antwort eingeben. Bei mehreren Fragen können Benutzer zwischen ihnen navigieren, bevor alle Antworten gesendet werden.
Benutzerdefinierte Tools
Benutzerdefinierte Tools ermöglichen es Ihnen, Ihre eigenen Funktionen zu definieren, die das LLM aufrufen kann. Diese werden in Ihrer Konfigurationsdatei definiert und können beliebigen Code ausführen.
Weitere Informationen zum Erstellen benutzerdefinierter Tools.
MCP-Server
MCP-Server (Model Context Protocol) ermöglichen es Ihnen, externe Tools und Dienste zu integrieren. Dies schließt Datenbankzugriff, API-Integrationen und Drittanbieter-Dienste ein.
Weitere Informationen zum Konfigurieren von MCP-Servern.
Internes
Intern verwenden Tools wie grep, glob und list ripgrep. Standardmäßig respektiert ripgrep .gitignore-Muster, was bedeutet, dass in Ihrer .gitignore aufgeführte Dateien und Verzeichnisse von Suchen und Listen ausgeschlossen werden.
Ignore-Muster
Um Dateien einzubeziehen, die normalerweise ignoriert würden, erstellen Sie eine .ignore-Datei im Stammverzeichnis Ihres Projekts. Diese Datei kann explizit bestimmte Pfade zulassen.
!node_modules/!dist/!build/Beispielsweise ermöglicht diese .ignore-Datei ripgrep, in den Verzeichnissen node_modules/, dist/ und build/ zu suchen, auch wenn sie in .gitignore aufgeführt sind.