Opencode
Делегирование кода OpenCode CLI (возможности, ревью PR).
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/autonomous-ai-agents/opencode |
| Версия | 1.2.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | Coding-Agent, OpenCode, Autonomous, Refactoring, Code-Review |
| Связанные навыки | claude-code, codex, vibeos-agent |
Справочник: полный SKILL.md
Ниже приведено полное определение навыка, которое VibeOS загружает при активации этого навыка. Это инструкции, которые видит агент, когда навык активен.
OpenCode CLI
Используйте OpenCode как автономного кодировщика, управляемого инструментами терминала/процессов VibeOS. OpenCode — это агент для написания кода с открытым исходным кодом, не привязанный к конкретному провайдеру, с TUI и CLI.
Когда использовать
- Пользователь явно просит использовать OpenCode
- Вам нужен внешний агент для реализации/рефакторинга/ревью кода
- Вам нужны длительные сессии кодирования с проверкой прогресса
- Вам нужно параллельное выполнение задач в изолированных рабочих каталогах/рабочих деревьях
Предварительные требования
- OpenCode установлен:
npm i -g opencode-ai@latestилиbrew install anomalyco/tap/opencode - Настроена аутентификация:
opencode auth loginили установлены переменные окружения провайдера (OPENROUTER_API_KEY и т.д.) - Проверка:
opencode auth listдолжна показать хотя бы одного провайдера - Git-репозиторий для задач с кодом (рекомендуется)
pty=trueдля интерактивных TUI-сессий
Разрешение бинарного файла (Важно)
Окружения оболочки могут разрешать разные бинарные файлы OpenCode. Если поведение отличается между вашим терминалом и VibeOS, проверьте:
terminal(command="which -a opencode")
terminal(command="opencode --version")
При необходимости укажите явный путь к бинарному файлу:
terminal(command="$HOME/.opencode/bin/opencode run '...'", workdir="~/project", pty=true)
Одноразовые задачи
Используйте opencode run для ограниченных, неинтерактивных задач:
terminal(command="opencode run 'Добавить логику повторных попыток для API-вызовов и обновить тесты'", workdir="~/project")
Прикрепляйте файлы контекста с помощью -f:
terminal(command="opencode run 'Проверить эту конфигурацию на проблемы безопасности' -f config.yaml -f .env.example", workdir="~/project")
Показывать размышления модели с помощью --thinking:
terminal(command="opencode run 'Отладить, почему тесты падают в CI' --thinking", workdir="~/project")
Принудительно указать конкретную модель:
terminal(command="opencode run 'Рефакторинг модуля аутентификации' --model openrouter/anthropic/claude-sonnet-4", workdir="~/project")
Интерактивные сессии (Фоновые)
Для итеративной работы, требующей нескольких обменов, запустите TUI в фоне:
terminal(command="opencode", workdir="~/project", background=true, pty=true)
# Возвращает session_id
# Отправить запрос
process(action="submit", session_id="<id>", data="Реализовать поток обновления OAuth и добавить тесты")
# Отслеживать прогресс
process(action="poll", session_id="<id>")
process(action="log", session_id="<id>")
# Отправить последующий ввод
process(action="submit", session_id="<id>", data="Теперь добавить обработку ошибок для истечения срока токена")
# Выйти корректно — Ctrl+C
process(action="write", session_id="<id>", data="\x03")
# Или просто завершить процесс
process(action="kill", session_id="<id>")
Важно: НЕ используйте /exit — это недопустимая команда OpenCode, которая вместо этого откроет диалог выбора агента. Используйте Ctrl+C (\x03) или process(action="kill") для выхода.
Сочетания клавиш TUI
| Клавиша | Действие |
|---|---|
Enter | Отправить сообщение (нажмите дважды, если необходимо) |
Tab | Переключение между агентами (build/plan) |
Ctrl+P | Открыть палитру команд |
Ctrl+X L | Переключить сессию |
Ctrl+X M | Переключить модель |
Ctrl+X N | Новая сессия |
Ctrl+X E | Открыть редактор |
Ctrl+C | Выйти из OpenCode |
Возобновление сессий
После выхода OpenCode выводит ID сессии. Возобновите с помощью:
terminal(command="opencode -c", workdir="~/project", background=true, pty=true) # Продолжить последнюю сессию
terminal(command="opencode -s ses_abc123", workdir="~/project", background=true, pty=true) # Конкретная сессия
Общие флаги
| Флаг | Использование |
|---|---|
run 'prompt' | Одноразовое выполнение и выход |
--continue / -c | Продолжить последнюю сессию OpenCode |
--session <id> / -s | Продолжить конкретную сессию |
--agent <name> | Выбрать агента OpenCode (build или plan) |
--model provider/model | Принудительно указать модель |
--format json | Машиночитаемый вывод/события |
--file <path> / -f | Прикрепить файл(ы) к сообщению |
--thinking | Показать блоки размышлений модели |
--variant <level> | Уровень усилий рассуждения (high, max, minimal) |
--title <name> | Назвать сессию |
--attach <url> | Подключиться к запущенному серверу opencode |
Процедура
- Проверьте готовность инструмента:
terminal(command="opencode --version")terminal(command="opencode auth list")
- Для ограниченных задач используйте
opencode run '...'(pty не требуется). - Для итеративных задач запустите
opencodeсbackground=true, pty=true. - Отслеживайте длительные задачи с помощью
process(action="poll"|"log"). - Если OpenCode запрашивает ввод, отвечайте через
process(action="submit", ...). - Выходите с помощью
process(action="write", data="\x03")илиprocess(action="kill"). - Сообщите пользователю об изменениях в файлах, результатах тестов и следующих шагах.
Рабочий процесс ревью PR
У OpenCode есть встроенная команда PR:
terminal(command="opencode pr 42", workdir="~/project", pty=true)
Или просмотрите во временном клоне для изоляции:
terminal(command="REVIEW=$(mktemp -d) && git clone https://github.com/user/repo.git $REVIEW && cd $REVIEW && opencode run 'Проверить этот PR относительно main. Сообщить об ошибках, рисках безопасности, пробелах в тестах и проблемах со стилем.' -f $(git diff origin/main --name-only | head -20 | tr '\n' ' ')", pty=true)
Шаблон параллельной работы
Используйте отдельные рабочие каталоги/рабочие деревья, чтобы избежать коллизий:
terminal(command="opencode run 'Исправить проблему #101 и закоммитить'", workdir="/tmp/issue-101", background=true, pty=true)
terminal(command="opencode run 'Добавить регрессионные тесты парсера и закоммитить'", workdir="/tmp/issue-102", background=true, pty=true)
process(action="list")
Управление сессиями и стоимостью
Список прошлых сессий:
terminal(command="opencode session list")
Проверьте использование токенов и стоимость:
terminal(command="opencode stats")
terminal(command="opencode stats --days 7 --models anthropic/claude-sonnet-4")
Подводные камни
- Интерактивные сессии
opencode(TUI) требуютpty=true. Командаopencode runНЕ требует pty. /exitНЕ является допустимой командой — она открывает селектор агента. Используйте Ctrl+C для выхода из TUI.- Несоответствие PATH может привести к выбору неправильного бинарного файла/конфигурации модели OpenCode.
- Если OpenCode завис, проверьте логи перед завершением:
process(action="log", session_id="<id>")
- Избегайте совместного использования одного рабочего каталога для параллельных сессий OpenCode.
- Возможно, потребуется дважды нажать Enter для отправки в TUI (один раз для завершения текста, второй раз для отправки).
Проверка
Дымовой тест:
terminal(command="opencode run 'Ответить точно: OPENCODE_SMOKE_OK'")
Критерии успеха:
- Вывод содержит
OPENCODE_SMOKE_OK - Команда завершается без ошибок провайдера/модели
- Для задач с кодом: ожидаемые файлы изменены, тесты проходят
Правила
- Отдавайте предпочтение
opencode runдля одноразовой автоматизации — это проще и не требует pty. - Используйте интерактивный фоновый режим только когда требуется итерация.
- Всегда ограничивайте сессии OpenCode одним репозиторием/рабочим каталогом.
- Для длительных задач предоставляйте обновления прогресса из логов
process. - Сообщайте о конкретных результатах (измененные файлы, тесты, оставшиеся риски).
- Завершайте интерактивные сессии с помощью Ctrl+C или kill, никогда не используйте
/exit.