Salta ai contenuti

Comandi

Crea comandi personalizzati per attivita ripetitive.

I comandi personalizzati ti consentono di specificare un prompt che desideri eseguire quando quel comando viene eseguito nella TUI.

/my-command

I comandi personalizzati si aggiungono ai comandi integrati come /init, /undo, /redo, /share, /help. Ulteriori informazioni.


Creazione di file di comando

Crea file markdown nella directory command/ per definire comandi personalizzati.

Crea .opencode/command/test.md:

.opencode/command/test.md
---
description: Esegui test con copertura
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Esegui la suite di test completa con il rapporto di copertura e mostra eventuali errori.
Concentrati sui test falliti e suggerisci correzioni.

Il frontmatter definisce le proprieta del comando. Il contenuto diventa il modello.

Usa il comando digitando / seguito dal nome del comando.

"/test"

Configurare

Puoi aggiungere comandi personalizzati tramite la configurazione OpenCode o creando file markdown nella directory command/.


JSON

Usa l’opzione command nella tua configurazione OpenCode:

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"command": {
// Questo diventa il nome del comando
"test": {
// Questo e il prompt che verra inviato all'LLM
"template": "Esegui la suite di test completa con il rapporto di copertura e mostra eventuali errori.\nConcentrati sui test falliti e suggerisci correzioni.",
// Questo viene mostrato come descrizione nella TUI
"description": "Esegui test con copertura",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Ora puoi eseguire questo comando nella TUI:

/test

Markdown

Puoi anche definire comandi usando file markdown. Collocali in:

  • Globale: ~/.config/opencode/command/
  • Per progetto: .opencode/command/
~/.config/opencode/command/test.md
---
description: Esegui test con copertura
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Esegui la suite di test completa con il rapporto di copertura e mostra eventuali errori.
Concentrati sui test falliti e suggerisci correzioni.

Il nome del file markdown diventa il nome del comando. Ad esempio, test.md ti consente di eseguire:

/test

Configurazione del prompt

I prompt per i comandi personalizzati supportano diversi segnaposto speciali e sintassi.


Argomenti

Passa argomenti ai comandi usando il segnaposto $ARGUMENTS.

.opencode/command/component.md
---
description: Crea un nuovo componente
---
Crea un nuovo componente React chiamato $ARGUMENTS con supporto TypeScript.
Includi digitazione appropriata e struttura di base.

Esegui il comando con argomenti:

/component Button

E $ARGUMENTS verra sostituito da Button.

Puoi anche accedere a singoli argomenti usando parametri posizionali:

  • $1 - Primo argomento
  • $2 - Secondo argomento
  • $3 - Terzo argomento
  • E cosi via…

Ad esempio:

.opencode/command/create-file.md
---
description: Crea un nuovo file con contenuto
---
Crea un file chiamato $1 nella directory $2
con il seguente contenuto: $3

Esegui il comando:

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

Questo sostituisce:

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

Output della shell

Usa !comando per iniettare l’output del comando bash nel tuo prompt.

Ad esempio, per creare un comando personalizzato che analizzi la copertura dei test:

.opencode/command/analyze-coverage.md
---
description: Analizza la copertura dei test
---
Ecco i risultati dei test attuali:
!`npm test`
Sulla base di questi risultati, suggerisci miglioramenti per aumentare la copertura.

Oppure per rivedere le modifiche recenti:

.opencode/command/review-changes.md
---
description: Rivedi le modifiche recenti
---
Commit git recenti:
!`git log --oneline -10`
Rivedi queste modifiche e suggerisci eventuali miglioramenti.

I comandi vengono eseguiti nella directory radice del tuo progetto e il loro output diventa parte del prompt.


Riferimenti ai file

Includi file nel tuo comando usando @ seguito dal nome del file.

.opencode/command/review-component.md
---
description: Rivedi componente
---
Rivedi il componente in @src/components/Button.tsx.
Verifica problemi di prestazioni e suggerisci miglioramenti.

Il contenuto del file viene incluso automaticamente nel prompt.


Opzioni

Esaminiamo le opzioni di configurazione in dettaglio.


Modello

L’opzione template definisce il prompt che verra inviato all’LLM quando il comando viene eseguito.

opencode.json
{
"command": {
"test": {
"template": "Esegui la suite di test completa con il rapporto di copertura e mostra eventuali errori.\nConcentrati sui test falliti e suggerisci correzioni."
}
}
}

Questa e un’opzione di configurazione richiesta.


Descrizione

Usa l’opzione description per fornire una breve descrizione di cosa fa il comando.

opencode.json
{
"command": {
"test": {
"description": "Esegui test con copertura"
}
}
}

Questo viene mostrato come descrizione nella TUI quando digiti il comando.


Agente

Usa la configurazione agent per specificare facoltativamente quale agente deve eseguire questo comando. Se questo e un subagente, il comando attivera un’invocazione di subagente per impostazione predefinita. Per disabilitare questo comportamento, imposta subtask su false.

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

Questa e un’opzione di configurazione facoltativa. Se non specificata, il valore predefinito e il tuo agente corrente.


Sottoattivita

Usa il booleano subtask per forzare il comando ad attivare un’invocazione di subagente. Questo e utile se desideri che il comando non inquinii il tuo contesto principale e forzera l’agente ad agire come un subagente, anche se il mode e impostato su primary nella configurazione dell’agente.

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

Questa e un’opzione di configurazione facoltativa.


Modello

Usa la configurazione model per sovrascrivere il modello predefinito per questo comando.

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

Questa e un’opzione di configurazione facoltativa.


Integrato

opencode include diversi comandi integrati come /init, /undo, /redo, /share, /help; ulteriori informazioni.

Se definisci un comando personalizzato con lo stesso nome, sovrascrivera il comando integrato.