Перейти к содержимому

Команды

Создавайте собственные команды для повторяющихся задач.

Пользовательские команды позволяют указать подсказку, которую вы хотите запускать при выполнении этой команды в TUI.

/my-command

Пользовательские команды дополняют встроенные команды, такие как /init, /undo, /redo, /share, /help. Подробнее.


Создание командных файлов

Создайте Markdown файлы в каталоге commands/ для определения пользовательских команд.

Создайте .opencode/commands/test.md:

.opencode/commands/test.md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.

Фронтматтер (frontmatter) определяет свойства команды. Содержимое становится шаблоном.

Используйте команду, набрав /, а затем имя команды.

"/test"

Настроить

Вы можете добавлять собственные команды через конфигурацию opencode или создав файлы Markdown в каталоге commands/.


JSON

Используйте опцию command в вашем opencode config:

opencode.jsonc
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}

Теперь вы можете запустить эту команду в TUI:

/test

Markdown

Вы также можете определять команды, используя Markdown файлы. Поместите их в:

  • Глобальный: ~/.config/opencode/commands/
  • Для каждого проекта: .opencode/commands/
~/.config/opencode/commands/test.md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.

Имя Markdown файла становится именем команды. Например, test.md позволяет вам запустить:

/test

Prompt Configuration

Подсказки для пользовательских команд поддерживают несколько специальных заполнителей и синтаксиса.


Аргументы

Передавайте аргументы командам, используя заполнитель $ARGUMENTS.

.opencode/commands/component.md
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.

Запустите команду с аргументами:

/component Button

И $ARGUMENTS будет заменен на Button.

Вы также можете получить доступ к отдельным аргументам, используя позиционные параметры:

  • $1 — первый аргумент
  • $2 — Второй аргумент
  • $3 — Третий аргумент
  • И так далее…

Например:

.opencode/commands/create-file.md
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3

Запустите команду:

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

Это заменяет:

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

Shell output

Используйте !command, чтобы ввести вывод команды bash](/docs/tui#bash-commands) в приглашение.

Например, чтобы создать пользовательскую команду, которая анализирует тестовое покрытие:

.opencode/commands/analyze-coverage.md
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.

Или просмотреть последние изменения:

.opencode/commands/review-changes.md
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.

Команды выполняются в корневом каталоге вашего проекта, и их вывод становится частью приглашения.


Ссылки на файлы

Включите файлы в свою команду, используя @, за которым следует имя файла.

.opencode/commands/review-component.md
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.

Содержимое файла автоматически включается в приглашение.


Параметры

Рассмотрим варианты конфигурации подробнее.


Template

Параметр template определяет приглашение, которое будет отправлено в LLM при выполнении команды.

opencode.json
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}

Это обязательный параметр конфигурации.


Описание

Используйте опцию description, чтобы предоставить краткое описание того, что делает команда.

opencode.json
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}

Это отображается в виде описания в TUI при вводе команды.


Агент

Используйте конфигурацию agent, чтобы дополнительно указать, какой агент должен выполнить эту команду. Если это subagent, команда по умолчанию инициирует вызов субагента. Чтобы отключить это поведение, установите для subtask значение false.

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

Это необязательный параметр конфигурации. Если не указано, по умолчанию используется текущий агент.


Subtask

Используйте логическое значение subtask, чтобы заставить команду инициировать вызов subagent. Это полезно, если вы хотите, чтобы команда не загрязняла ваш основной контекст и заставляла агента действовать как субагент. даже если для mode установлено значение primary в конфигурации agent.

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

Это необязательный параметр конфигурации.


Модель

Используйте конфигурацию model, чтобы переопределить модель по умолчанию для этой команды.

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

Это необязательный параметр конфигурации.


Встроенный

opencode включает несколько встроенных команд, таких как /init, /undo, /redo, /share, /help; подробнее.

Если вы определите пользовательскую команду с тем же именем, она переопределит встроенную команду.