Zum Inhalt springen

Befehle

Erstellen Sie benutzerdefinierte Befehle fur wiederkehrende Aufgaben.

Benutzerdefinierte Befehle erlauben es Ihnen, einen Prompt anzugeben, der ausgefuhrt werden soll, wenn dieser Befehl im TUI ausgefuhrt wird.

/my-command

Benutzerdefinierte Befehle kommen zusatzlich zu den integrierten Befehlen wie /init, /undo, /redo, /share, /help. Weitere Informationen.


Befehlsdateien erstellen

Erstellen Sie Markdown-Dateien im Verzeichnis command/, um benutzerdefinierte Befehle zu definieren.

Erstellen Sie .opencode/command/test.md:

.opencode/command/test.md
---
description: Tests mit Abdeckung ausführen
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Fuhren Sie die vollstandige Testsuite mit dem Abdeckungsbericht aus und zeigen Sie alle Fehler an.
Konzentrieren Sie sich auf die fehlgeschlagenen Tests und schlagen Sie Korrekturen vor.

Das Frontmatter definiert die Befehlseigenschaften. Der Inhalt wird zur Vorlage.

Verwenden Sie den Befehl, indem Sie / gefolgt vom Befehlsnamen eingeben.

"/test"

Konfigurieren

Sie konnen benutzerdefinierte Befehle uber die OpenCode-Konfiguration hinzufugen oder indem Sie Markdown-Dateien im Verzeichnis command/ erstellen.


JSON

Verwenden Sie die Option command in Ihrer OpenCode-Konfiguration:

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"command": {
// Dies wird zum Namen des Befehls
"test": {
// Dies ist der Prompt, der an das LLM gesendet wird
"template": "Fuhren Sie die vollstandige Testsuite mit dem Abdeckungsbericht aus und zeigen Sie alle Fehler an.\nKonzentrieren Sie sich auf die fehlgeschlagenen Tests und schlagen Sie Korrekturen vor.",
// Dies wird als Beschreibung im TUI angezeigt
"description": "Tests mit Abdeckung ausführen",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Nun konnen Sie diesen Befehl im TUI ausfuhren:

/test

Markdown

Sie konnen Befehle auch mit Markdown-Dateien definieren. Platzieren Sie sie in:

  • Global: ~/.config/opencode/command/
  • Projektbezogen: .opencode/command/
~/.config/opencode/command/test.md
---
description: Tests mit Abdeckung ausführen
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Fuhren Sie die vollstandige Testsuite mit dem Abdeckungsbericht aus und zeigen Sie alle Fehler an.
Konzentrieren Sie sich auf die fehlgeschlagenen Tests und schlagen Sie Korrekturen vor.

Der Markdown-Dateiname wird zum Befehlsnamen. Zum Beispiel lasst test.md Sie ausfuhren:

/test

Prompt-Konfiguration

Die Prompts fur die benutzerdefinierten Befehle unterstutzen mehrere spezielle Platzhalter und Syntax.


Argumente

Ubergeben Sie Argumente an Befehle mit dem Platzhalter $ARGUMENTS.

.opencode/command/component.md
---
description: Neue Komponente erstellen
---
Erstellen Sie eine neue React-Komponente namens $ARGUMENTS mit TypeScript-Unterstutzung.
Fugen Sie richtige Typisierung und grundlegende Struktur ein.

Fuhren Sie den Befehl mit Argumenten aus:

/component Button

Und $ARGUMENTS wird durch Button ersetzt.

Sie konnen auch auf einzelne Argumente mit Positionsparametern zugreifen:

  • $1 - Erstes Argument
  • $2 - Zweites Argument
  • $3 - Drittes Argument
  • Und so weiter…

Zum Beispiel:

.opencode/command/create-file.md
---
description: Neue Datei mit Inhalt erstellen
---
Erstellen Sie eine Datei namens $1 im Verzeichnis $2
mit folgendem Inhalt: $3

Fuhren Sie den Befehl aus:

/create-file config.json src "{ \"key\": \"value\" }"

Dies ersetzt:

  • $1 durch config.json
  • $2 durch src
  • $3 durch { "key": "value" }

Shell-Ausgabe

Verwenden Sie !command, um bash-Befehl-Ausgabe in Ihren Prompt einzufugen.

Zum Beispiel, um einen benutzerdefinierten Befehl zu erstellen, der die Testabdeckung analysiert:

.opencode/command/analyze-coverage.md
---
description: Testabdeckung analysieren
---
Hier sind die aktuellen Testergebnisse:
!`npm test`
Basierend auf diesen Ergebnissen, schlagen Sie Verbesserungen vor, um die Abdeckung zu erhohen.

Oder um letzte Änderungen zu uberprufen:

.opencode/command/review-changes.md
---
description: Letzte Änderungen uberprufen
---
Letzte Git-Commits:
!`git log --oneline -10`
Uberprufen Sie diese Änderungen und schlagen Sie Verbesserungen vor.

Befehle werden im Stammverzeichnis Ihres Projekts ausgefuhrt und ihre Ausgabe wird Teil des Prompts.


Dateireferenzen

Fugen Sie Dateien in Ihren Befehl ein, indem Sie @ gefolgt vom Dateinamen verwenden.

.opencode/command/review-component.md
---
description: Komponente uberprufen
---
Uberprufen Sie die Komponente in @src/components/Button.tsx.
Uberprufen Sie auf Leistungsprobleme und schlagen Sie Verbesserungen vor.

Der Dateiinhalt wird automatisch in den Prompt aufgenommen.


Optionen

Lassen Sie uns die Konfigurationsoptionen im Detail betrachten.


Vorlage

Die Option template definiert den Prompt, der an das LLM gesendet wird, wenn der Befehl ausgefuhrt wird.

opencode.json
{
"command": {
"test": {
"template": "Fuhren Sie die vollstandige Testsuite mit dem Abdeckungsbericht aus und zeigen Sie alle Fehler an.\nKonzentrieren Sie sich auf die fehlgeschlagenen Tests und schlagen Sie Korrekturen vor."
}
}
}

Dies ist eine erforderliche Konfigurationsoption.


Beschreibung

Verwenden Sie die Option description, um eine kurze Beschreibung bereitzustellen, was der Befehl tut.

opencode.json
{
"command": {
"test": {
"description": "Tests mit Abdeckung ausführen"
}
}
}

Dies wird als Beschreibung im TUI angezeigt, wenn Sie den Befehl eingeben.


Agent

Verwenden Sie die Konfiguration agent, um optional anzugeben, welcher Agent diesen Befehl ausfuhren soll. Wenn dies ein Subagent ist, lost der Befehl standardmabig eine Subagent-Invokation aus. Um dieses Verhalten zu deaktivieren, setzen Sie subtask auf false.

opencode.json
{
"command": {
"review": {
"agent": "plan"
}
}
}

Dies ist eine optionale Konfigurationsoption. Wenn nicht angegeben, wird Ihr aktueller Agent verwendet.


Unteraufgabe

Verwenden Sie den booleschen Wert subtask, um den Befehl zu zwingen, eine Subagent-Invokation auszulosen. Dies ist nutzlich, wenn Sie wollen, dass der Befehl Ihren primaren Kontost nicht verunreinigt und zwingt den Agenten, als Subagent zu agieren, auch wenn der mode auf primary in der Agent-Konfiguration eingestellt ist.

opencode.json
{
"command": {
"analyze": {
"subtask": true
}
}
}

Dies ist eine optionale Konfigurationsoption.


Modell

Verwenden Sie die Konfiguration model, um das Standardmodell fur diesen Befehl zu uberschreiben.

opencode.json
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Dies ist eine optionale Konfigurationsoption.


Integriert

opencode enthalt mehrere integrierte Befehle wie /init, /undo, /redo, /share, /help; mehr erfahren.

Wenn Sie einen benutzerdefinierten Befehl mit demselben Namen definieren, uberschreibt er den integrierten Befehl.