Buckets:
| title: Comandos | |
| description: Crie comandos personalizados para tarefas repetitivas. | |
| Comandos personalizados permitem que você especifique um prompt que deseja executar quando esse comando for executado no TUI. | |
| ```bash frame="none" | |
| /my-command | |
| ``` | |
| Comandos personalizados são adicionais aos comandos integrados como `/init`, `/undo`, `/redo`, `/share`, `/help`. [Saiba mais](/docs/tui#commands). | |
| ## Criando arquivos de comando | |
| Crie arquivos markdown no diretório `commands/` para definir comandos personalizados. | |
| Crie `.opencode/commands/test.md`: | |
| ```md title=".opencode/commands/test.md" | |
| description: Execute testes com cobertura | |
| agent: build | |
| model: anthropic/claude-3-5-sonnet-20241022 | |
| Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas. | |
| Concentre-se nos testes com falha e sugira correções. | |
| ``` | |
| O frontmatter define as propriedades do comando. O conteúdo se torna o template. | |
| Use o comando digitando `/` seguido pelo nome do comando. | |
| ```bash frame="none" | |
| "/test" | |
| ``` | |
| ## Configuração | |
| Você pode adicionar comandos personalizados através da configuração do opencode ou criando arquivos markdown no diretório `commands/`. | |
| ### JSON | |
| Use a opção `command` na sua [configuração](/docs/config) do opencode: | |
| ```json title="opencode.jsonc" {4-12} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "command": { | |
| // Isso se torna o nome do comando | |
| "test": { | |
| // Este é o prompt que será enviado ao LLM | |
| "template": "Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.\nConcentre-se nos testes com falha e sugira correções.", | |
| // Isso é exibido como a descrição no TUI | |
| "description": "Execute testes com cobertura", | |
| "agent": "build", | |
| "model": "anthropic/claude-3-5-sonnet-20241022" | |
| } | |
| } | |
| } | |
| ``` | |
| Agora você pode executar este comando no TUI: | |
| ```bash frame="none" | |
| /test | |
| ``` | |
| ### Markdown | |
| Você também pode definir comandos usando arquivos markdown. Coloque-os em: | |
| - Global: `~/.config/opencode/commands/` | |
| - Por projeto: `.opencode/commands/` | |
| ```markdown title="~/.config/opencode/commands/test.md" | |
| description: Execute testes com cobertura | |
| agent: build | |
| model: anthropic/claude-3-5-sonnet-20241022 | |
| Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas. | |
| Concentre-se nos testes com falha e sugira correções. | |
| ``` | |
| O nome do arquivo markdown se torna o nome do comando. Por exemplo, `test.md` permite que você execute: | |
| ```bash frame="none" | |
| /test | |
| ``` | |
| ## Configuração do prompt | |
| Os prompts para os comandos personalizados suportam vários espaços reservados e sintaxes especiais. | |
| ### Argumentos | |
| Passe argumentos para os comandos usando o espaço reservado `$ARGUMENTS`. | |
| ```md title=".opencode/commands/component.md" | |
| description: Crie um novo componente | |
| Crie um novo componente React chamado $ARGUMENTS com suporte a TypeScript. | |
| Inclua tipagem adequada e estrutura básica. | |
| ``` | |
| Execute o comando com argumentos: | |
| ```bash frame="none" | |
| /component Button | |
| ``` | |
| E `$ARGUMENTS` será substituído por `Button`. | |
| Você também pode acessar argumentos individuais usando parâmetros posicionais: | |
| - `$1` - Primeiro argumento | |
| - `$2` - Segundo argumento | |
| - `$3` - Terceiro argumento | |
| - E assim por diante... | |
| Por exemplo: | |
| ```md title=".opencode/commands/create-file.md" | |
| description: Crie um novo arquivo com conteúdo | |
| Crie um arquivo chamado $1 no diretório $2 | |
| com o seguinte conteúdo: $3 | |
| ``` | |
| Execute o comando: | |
| ```bash frame="none" | |
| /create-file config.json src "{ \"key\": \"value\" }" | |
| ``` | |
| Isso substitui: | |
| - `$1` por `config.json` | |
| - `$2` por `src` | |
| - `$3` por `{ "key": "value" }` | |
| ### Saída do shell | |
| Use _!`command`_ para injetar a saída do [comando bash](/docs/tui#bash-commands) no seu prompt. | |
| Por exemplo, para criar um comando personalizado que analisa a cobertura de testes: | |
| ```md title=".opencode/commands/analyze-coverage.md" | |
| description: Analise cobertura de testes | |
| Aqui estão os resultados atuais dos testes: | |
| !`npm test` | |
| Com base nesses resultados, sugira melhorias para aumentar a cobertura. | |
| ``` | |
| Ou para revisar alterações recentes: | |
| ```md title=".opencode/commands/review-changes.md" | |
| description: Revise alterações recentes | |
| Commits recentes do git: | |
| !`git log --oneline -10` | |
| Revise essas alterações e sugira quaisquer melhorias. | |
| ``` | |
| Os comandos são executados no diretório raiz do seu projeto e sua saída se torna parte do prompt. | |
| ### Referências de arquivo | |
| Inclua arquivos no seu comando usando `@` seguido pelo nome do arquivo. | |
| ```md title=".opencode/commands/review-component.md" | |
| description: Revise componente | |
| Revise o componente em @src/components/Button.tsx. | |
| Verifique problemas de desempenho e sugira melhorias. | |
| ``` | |
| O conteúdo do arquivo é incluído automaticamente no prompt. | |
| ## Opções | |
| Vamos analisar as opções de configuração em detalhes. | |
| ### Template | |
| A opção `template` define o prompt que será enviado ao LLM quando o comando for executado. | |
| ```json title="opencode.json" | |
| { | |
| "command": { | |
| "test": { | |
| "template": "Execute a suíte de testes completa com relatório de cobertura e mostre quaisquer falhas.\nConcentre-se nos testes com falha e sugira correções." | |
| } | |
| } | |
| } | |
| ``` | |
| Esta é uma opção de configuração **obrigatória**. | |
| ### Descrição | |
| Use a opção `description` para fornecer uma breve descrição do que o comando faz. | |
| ```json title="opencode.json" | |
| { | |
| "command": { | |
| "test": { | |
| "description": "Execute testes com cobertura" | |
| } | |
| } | |
| } | |
| ``` | |
| Isso é exibido como a descrição no TUI quando você digita o comando. | |
| ### Agente | |
| Use a configuração `agent` para especificar opcionalmente qual [agente](/docs/agents) deve executar este comando. | |
| Se este for um [subagente](/docs/agents/#subagents), o comando acionará uma invocação de subagente por padrão. | |
| Para desativar esse comportamento, defina `subtask` como `false`. | |
| ```json title="opencode.json" | |
| { | |
| "command": { | |
| "review": { | |
| "agent": "plan" | |
| } | |
| } | |
| } | |
| ``` | |
| Esta é uma opção de configuração **opcional**. Se não especificado, o padrão é o seu agente atual. | |
| ### Subtarefa | |
| Use o booleano `subtask` para forçar o comando a acionar uma invocação de [subagente](/docs/agents/#subagents). | |
| Isso é útil se você quiser que o comando não polua seu contexto principal e **forçará** o agente a agir como um subagente, | |
| mesmo que `mode` esteja definido como `primary` na configuração do [agente](/docs/agents). | |
| ```json title="opencode.json" | |
| { | |
| "command": { | |
| "analyze": { | |
| "subtask": true | |
| } | |
| } | |
| } | |
| ``` | |
| Esta é uma opção de configuração **opcional**. | |
| ### Modelo | |
| Use a configuração `model` para substituir o modelo padrão para este comando. | |
| ```json title="opencode.json" | |
| { | |
| "command": { | |
| "analyze": { | |
| "model": "anthropic/claude-3-5-sonnet-20241022" | |
| } | |
| } | |
| } | |
| ``` | |
| Esta é uma opção de configuração **opcional**. | |
| ## Integrados | |
| opencode inclui vários comandos integrados como `/init`, `/undo`, `/redo`, `/share`, `/help`; [saiba mais](/docs/tui#commands). | |
| :::note | |
| Comandos personalizados podem substituir comandos integrados. | |
| ::: | |
| Se você definir um comando personalizado com o mesmo nome, ele substituirá o comando integrado. | |
Xet Storage Details
- Size:
- 7.38 kB
- Xet hash:
- 13fbaefbcbf4857d4c28732091746216c569504e00536212f1dbc41ea6b12c43
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.