mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-19 08:09:51 +00:00
323 lines
9.4 KiB
Text
323 lines
9.4 KiB
Text
---
|
||
title: Команды
|
||
description: Создавайте собственные команды для повторяющихся задач.
|
||
---
|
||
|
||
Пользовательские команды позволяют указать подсказку, которую вы хотите запускать при выполнении этой команды в TUI.
|
||
|
||
```bash frame="none"
|
||
/my-command
|
||
```
|
||
|
||
Пользовательские команды дополняют встроенные команды, такие как `/init`, `/undo`, `/redo`, `/share`, `/help`. [Подробнее](/docs/tui#commands).
|
||
|
||
---
|
||
|
||
## Создание файлов команд
|
||
|
||
Создайте Markdown файлы в каталоге `commands/` для определения пользовательских команд.
|
||
|
||
Создайте `.opencode/commands/test.md`:
|
||
|
||
```md title=".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) определяет свойства команды. Содержимое становится шаблоном.
|
||
|
||
Используйте команду, набрав `/`, а затем имя команды.
|
||
|
||
```bash frame="none"
|
||
"/test"
|
||
```
|
||
|
||
---
|
||
|
||
## Настройка
|
||
|
||
Вы можете добавлять собственные команды через конфигурацию opencode или создав файлы Markdown в каталоге `commands/`.
|
||
|
||
---
|
||
|
||
### JSON
|
||
|
||
Используйте опцию `command` в вашем opencode [config](/docs/config):
|
||
|
||
```json title="opencode.jsonc" {4-12}
|
||
{
|
||
"$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:
|
||
|
||
```bash frame="none"
|
||
/test
|
||
```
|
||
|
||
---
|
||
|
||
### Markdown
|
||
|
||
Вы также можете определять команды, используя Markdown файлы. Поместите их в:
|
||
|
||
- Глобальный: `~/.config/opencode/commands/`
|
||
- Для каждого проекта: `.opencode/commands/`
|
||
|
||
```markdown title="~/.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` позволяет
|
||
вам запустить:
|
||
|
||
```bash frame="none"
|
||
/test
|
||
```
|
||
|
||
---
|
||
|
||
## Настройка промпта
|
||
|
||
Подсказки для пользовательских команд поддерживают несколько специальных заполнителей и синтаксиса.
|
||
|
||
---
|
||
|
||
### Аргументы
|
||
|
||
Передавайте аргументы командам, используя заполнитель `$ARGUMENTS`.
|
||
|
||
```md title=".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.
|
||
```
|
||
|
||
Запустите команду с аргументами:
|
||
|
||
```bash frame="none"
|
||
/component Button
|
||
```
|
||
|
||
И `$ARGUMENTS` будет заменен на `Button`.
|
||
|
||
Вы также можете получить доступ к отдельным аргументам, используя позиционные параметры:
|
||
|
||
- `$1` — первый аргумент
|
||
- `$2` — Второй аргумент
|
||
- `$3` — Третий аргумент
|
||
- И так далее...
|
||
|
||
Например:
|
||
|
||
```md title=".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
|
||
```
|
||
|
||
Запустите команду:
|
||
|
||
```bash frame="none"
|
||
/create-file config.json src "{ \"key\": \"value\" }"
|
||
```
|
||
|
||
Это заменяет:
|
||
|
||
- `$1` с `config.json`
|
||
- `$2` с `src`
|
||
- `$3` с `{ "key": "value" }`
|
||
|
||
---
|
||
|
||
### Вывод shell
|
||
|
||
Используйте _!`command`_, чтобы ввести вывод команды bash](/docs/tui#bash-commands) в приглашение.
|
||
|
||
Например, чтобы создать пользовательскую команду, которая анализирует тестовое покрытие:
|
||
|
||
```md title=".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.
|
||
```
|
||
|
||
Или просмотреть последние изменения:
|
||
|
||
```md title=".opencode/commands/review-changes.md"
|
||
---
|
||
description: Review recent changes
|
||
---
|
||
|
||
Recent git commits:
|
||
!`git log --oneline -10`
|
||
|
||
Review these changes and suggest any improvements.
|
||
```
|
||
|
||
Команды выполняются в корневом каталоге вашего проекта, и их вывод становится частью приглашения.
|
||
|
||
---
|
||
|
||
### Ссылки на файлы
|
||
|
||
Включите файлы в свою команду, используя `@`, за которым следует имя файла.
|
||
|
||
```md title=".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 при выполнении команды.
|
||
|
||
```json title="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`, чтобы предоставить краткое описание того, что делает команда.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"command": {
|
||
"test": {
|
||
"description": "Run tests with coverage"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Это отображается в виде описания в TUI при вводе команды.
|
||
|
||
---
|
||
|
||
### Агент
|
||
|
||
Используйте конфигурацию `agent`, чтобы дополнительно указать, какой [агент](/docs/agents) должен выполнить эту команду.
|
||
Если это [subagent](/docs/agents/#subagents), команда по умолчанию инициирует вызов субагента.
|
||
Чтобы отключить это поведение, установите для `subtask` значение `false`.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"command": {
|
||
"review": {
|
||
"agent": "plan"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Это **необязательный** параметр конфигурации. Если не указано, по умолчанию используется текущий агент.
|
||
|
||
---
|
||
|
||
### Subtask
|
||
|
||
Используйте логическое значение `subtask`, чтобы заставить команду инициировать вызов [subagent](/docs/agents/#subagents).
|
||
Это полезно, если вы хотите, чтобы команда не загрязняла ваш основной контекст и **заставляла** агента действовать как субагент.
|
||
даже если для `mode` установлено значение `primary` в конфигурации [agent](/docs/agents).
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"command": {
|
||
"analyze": {
|
||
"subtask": true
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Это **необязательный** параметр конфигурации.
|
||
|
||
---
|
||
|
||
### Модель
|
||
|
||
Используйте конфигурацию `model`, чтобы переопределить модель по умолчанию для этой команды.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"command": {
|
||
"analyze": {
|
||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
Это **необязательный** параметр конфигурации.
|
||
|
||
---
|
||
|
||
## Встроенные команды
|
||
|
||
opencode включает несколько встроенных команд, таких как `/init`, `/undo`, `/redo`, `/share`, `/help`; [подробнее](/docs/tui#commands).
|
||
|
||
:::note
|
||
Пользовательские команды могут переопределять встроенные команды.
|
||
:::
|
||
|
||
Если вы определите пользовательскую команду с тем же именем, она переопределит встроенную команду.
|