opencode/packages/web/src/content/docs/ru/commands.mdx

323 lines
9.4 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
Пользовательские команды могут переопределять встроенные команды.
:::
Если вы определите пользовательскую команду с тем же именем, она переопределит встроенную команду.