mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-29 04:59:51 +00:00
352 lines
8.1 KiB
Text
352 lines
8.1 KiB
Text
---
|
|
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`).
|
|
:::
|
|
|
|
---
|
|
|
|
### read
|
|
|
|
Liest Dateiinhalte aus deiner Codebasis.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"read": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Dieses Tool liest Dateien und gibt deren Inhalt zurueck. Es unterstuetzt das Lesen spezifischer Zeilenbereiche bei grossen Dateien.
|
|
|
|
---
|
|
|
|
### grep
|
|
|
|
Durchsucht Dateiinhalte mit regulaeren Ausdruecken.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"grep": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Schnelle Inhaltssuche in deiner Codebasis. Unterstuetzt volle Regex-Syntax und Filterung nach Dateimustern.
|
|
|
|
---
|
|
|
|
### glob
|
|
|
|
Findet Dateien per Musterabgleich.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"glob": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Sucht nach Dateien mit Glob-Mustern wie `**/*.js` oder `src/**/*.ts`. Gibt passende Dateipfade sortiert nach Aenderungsdatum zurueck.
|
|
|
|
---
|
|
|
|
### lsp (experimentell)
|
|
|
|
Interagiere mit deinen konfigurierten LSP-Servern fuer Code-Intelligence-Features wie Definitionen, Referenzen, Hover-Infos und Call-Hierarchien.
|
|
|
|
:::note
|
|
Dieses Tool ist nur verfuegbar, wenn `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (oder `OPENCODE_EXPERIMENTAL=true`) gesetzt ist.
|
|
:::
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"lsp": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Unterstuetzte Operationen sind `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` und `outgoingCalls`.
|
|
|
|
Um verfuegbare LSP-Server fuer dein Projekt zu konfigurieren, siehe [LSP-Server](/docs/lsp).
|
|
|
|
---
|
|
|
|
### patch
|
|
|
|
Wendet Patches auf Dateien an.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"edit": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Dieses Tool wendet Patch-Dateien auf deine Codebasis an. Nuetzlich fuer Diffs und Patches aus verschiedenen Quellen.
|
|
|
|
:::note
|
|
Das Tool `patch` wird ueber die Berechtigung `edit` gesteuert, welche alle Datei-Aenderungen abdeckt (`edit`, `write`, `patch`).
|
|
:::
|
|
|
|
---
|
|
|
|
### skill
|
|
|
|
Laedt einen [Skill](/docs/skills) (eine `SKILL.md`-Datei) und gibt dessen Inhalt in der Unterhaltung zurueck.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"skill": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### todowrite
|
|
|
|
Verwaltet Todo-Listen waehrend Coding-Sessions.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"todowrite": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Erstellt und aktualisiert Aufgabenlisten, um den Fortschritt bei komplexen Operationen zu verfolgen. Das LLM nutzt dies, um mehrstufige Aufgaben zu organisieren.
|
|
|
|
:::note
|
|
Dieses Tool ist fuer Sub-Agenten standardmaessig deaktiviert, kann aber manuell aktiviert werden. [Mehr dazu](/docs/agents/#permissions)
|
|
:::
|
|
|
|
---
|
|
|
|
### webfetch
|
|
|
|
Ruft Webinhalte ab.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"webfetch": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Erlaubt dem LLM, Webseiten abzurufen und zu lesen. Nuetzlich zum Nachschlagen von Dokumentation oder fuer Online-Recherche.
|
|
|
|
---
|
|
|
|
### websearch
|
|
|
|
Durchsucht das Web nach Informationen.
|
|
|
|
:::note
|
|
Dieses Tool ist nur verfuegbar, wenn der OpenCode-Provider genutzt wird oder die Umgebungsvariable `OPENCODE_ENABLE_EXA` auf einen 'truthy' Wert (z. B. `true` oder `1`) gesetzt ist.
|
|
|
|
Zum Aktivieren beim Start von OpenCode:
|
|
|
|
```bash
|
|
OPENCODE_ENABLE_EXA=1 opencode
|
|
```
|
|
|
|
:::
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"websearch": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Fuehrt Websuchen mit Exa AI durch, um relevante Informationen online zu finden. Nuetzlich fuer Recherche, aktuelle Ereignisse oder Informationen jenseits des Trainingsdatums.
|
|
|
|
Kein API-Key erforderlich — das Tool verbindet sich direkt mit dem gehosteten MCP-Service von Exa AI ohne Authentifizierung.
|
|
|
|
:::tip
|
|
Nutze `websearch` zum Finden von Informationen (Discovery) und `webfetch` zum Abrufen von Inhalten einer spezifischen URL (Retrieval).
|
|
:::
|
|
|
|
---
|
|
|
|
### question
|
|
|
|
Stellt dem Benutzer waehrend der Ausfuehrung Fragen.
|
|
|
|
```json title="opencode.json" {4}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"permission": {
|
|
"question": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
Dieses Tool erlaubt dem LLM, dem Benutzer waehrend einer Aufgabe Fragen zu stellen. Nuetzlich fuer:
|
|
|
|
- Sammeln von Benutzerpraeferenzen oder Anforderungen
|
|
- Klaerung mehrdeutiger Anweisungen
|
|
- Entscheidungen bei Implementierungsoptionen einholen
|
|
- Auswahlmoeglichkeiten fuer das weitere Vorgehen anbieten
|
|
|
|
Jede Frage enthaelt eine Ueberschrift, den Fragetext und eine Liste von Optionen. Benutzer koennen aus den Optionen waehlen oder eine eigene Antwort eingeben. Bei mehreren Fragen koennen Benutzer zwischen ihnen navigieren, bevor sie alle Antworten absenden.
|
|
|
|
---
|
|
|
|
## 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` und `glob` [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.
|