Aller au contenu

Commandes

Creer des commandes personnalises pour des taches repetitives.

Les commandes personnalises vous permettent de specifier un prompt que vous souhaitez executer lorsque cette commande est executee dans le TUI.

/my-command

Les commandes personnalises s’ajoutent aux commandes integrees comme /init, /undo, /redo, /share, /help. En savoir plus.


Creer des fichiers de commandes

Creez des fichiers markdown dans le repertoire command/ pour definir des commandes personnalises.

Creez .opencode/command/test.md:

.opencode/command/test.md
---
description: Executer les tests avec couverture
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Executer la suite de tests complete avec le rapport de couverture et afficher les echecs.
Concentrez-vous sur les tests echouants et suggerez des corrections.

Le frontmatter definit les proprietes de la commande. Le contenu devient le modele.

Utilisez la commande en tapant / suivi du nom de la commande.

"/test"

Configurer

Vous pouvez ajouter des commandes personnalises via la configuration OpenCode ou en creant des fichiers markdown dans le repertoire command/.


JSON

Utilisez l’option command dans votre configuration OpenCode :

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"command": {
// Cela devient le nom de la commande
"test": {
// C'est le prompt qui sera envoye au LLM
"template": "Executer la suite de tests complete avec le rapport de couverture et afficher les echecs.\nConcentrez-vous sur les tests echouants et suggerez des corrections.",
// C'est affiche comme la description dans le TUI
"description": "Executer les tests avec couverture",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Maintenant vous pouvez executer cette commande dans le TUI :

/test

Markdown

Vous pouvez egalement definir des commandes en utilisant des fichiers markdown. Placez-les dans :

  • Global : ~/.config/opencode/command/
  • Par projet : .opencode/command/
~/.config/opencode/command/test.md
---
description: Executer les tests avec couverture
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Executer la suite de tests complete avec le rapport de couverture et afficher les echecs.
Concentrez-vous sur les tests echouants et suggerez des corrections.

Le nom du fichier markdown devient le nom de la commande. Par exemple, test.md vous permet d’executer :

/test

Configuration du prompt

Les prompts pour les commandes personnalises prennent en charge plusieurs espaces reserves et syntaxe speciaux.


Arguments

Passez des arguments aux commandes en utilisant l’espace reserve $ARGUMENTS.

.opencode/command/component.md
---
description: Creer un nouveau composant
---
Creer un nouveau composant React nomme $ARGUMENTS avec la prise en charge de TypeScript.
Inclure la saisie appropriee et la structure de base.

Executez la commande avec des arguments :

/component Button

Et $ARGUMENTS sera remplace par Button.

Vous pouvez egalement acceder aux arguments individuels en utilisant des parametres positionnels :

  • $1 - Premier argument
  • $2 - Deuxieme argument
  • $3 - Troisieme argument
  • Et ainsi de suite…

Par exemple :

.opencode/command/create-file.md
---
description: Creer un nouveau fichier avec contenu
---
Creer un fichier nomme $1 dans le repertoire $2
avec le contenu suivant : $3

Executez la commande :

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

Cela remplace :

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

Sortie du shell

Utilisez !command pour injecter la sortie de commande bash dans votre prompt.

Par exemple, pour creer une commande personnalisee qui analyse la couverture des tests :

.opencode/command/analyze-coverage.md
---
description: Analyser la couverture des tests
---
Voici les resultats des tests actuels :
!`npm test`
Base sur ces resultats, suggerez des ameliorations pour augmenter la couverture.

Ou pour passer en revue les modifications recentes :

.opencode/command/review-changes.md
---
description: Passer en revue les modifications recentes
---
Commits git recents :
!`git log --oneline -10`
Passez en revue ces modifications et suggerez toutes ameliorations.

Les commandes s’executent dans le repertoire racine de votre projet et leur sortie devient partie du prompt.


References de fichiers

Incluez des fichiers dans votre commande en utilisant @ suivi du nom du fichier.

.opencode/command/review-component.md
---
description: Passer en revue le composant
---
Passez en revue le composant dans @src/components/Button.tsx.
Verifiez les problemes de performance et suggerez des ameliorations.

Le contenu du fichier est inclus automatiquement dans le prompt.


Options

Examinons les options de configuration en detail.


Modele

L’option template definit le prompt qui sera envoye au LLM lorsque la commande est executee.

opencode.json
{
"command": {
"test": {
"template": "Executer la suite de tests complete avec le rapport de couverture et afficher les echecs.\nConcentrez-vous sur les tests echouants et suggerez des corrections."
}
}
}

Ceci est une option de configuration requise.


Description

Utilisez l’option description pour fournir une breve description de ce que fait la commande.

opencode.json
{
"command": {
"test": {
"description": "Executer les tests avec couverture"
}
}
}

Ceci est affiche comme la description dans le TUI lorsque vous tapez la commande.


Agent

Utilisez la configuration agent pour specifier facultativement quel agent doit executer cette commande. S’il s’agit d’un subagent, la commande declenchera une invocation de subagent par defaut. Pour desactiver ce comportement, reglez subtask sur false.

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

Ceci est une option de configuration facultative. Si elle n’est pas specifiee, la valeur par defaut est votre agent actuel.


Sous-tache

Utilisez le booleen subtask pour forcer la commande a declencher une invocation de subagent. Ceci est utile si vous voulez que la commande ne pollue pas votre contexte principal et forcera l’agent a agir comme un subagent, meme si le mode est defini sur primary dans la configuration de l’agent.

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

Ceci est une option de configuration facultative.


Modele

Utilisez la configuration model pour remplacer le modele par defaut pour cette commande.

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

Ceci est une option de configuration facultative.


Integre

opencode comprend plusieurs commandes integrees comme /init, /undo, /redo, /share, /help ; en savoir plus.

Si vous definissez une commande personnalisee avec le meme nom, elle remplacera la commande integree.