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

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 &lt;id&gt; / -sПродолжить конкретную сессию
--agent &lt;name&gt;Выбрать агента OpenCode (build или plan)
--model provider/modelПринудительно указать модель
--format jsonМашиночитаемый вывод/события
--file &lt;path&gt; / -fПрикрепить файл(ы) к сообщению
--thinkingПоказать блоки размышлений модели
--variant &lt;level&gt;Уровень усилий рассуждения (high, max, minimal)
--title &lt;name&gt;Назвать сессию
--attach &lt;url&gt;Подключиться к запущенному серверу opencode

Процедура​

  1. Проверьте готовность инструмента:
    • terminal(command="opencode --version")
    • terminal(command="opencode auth list")
  2. Для ограниченных задач используйте opencode run '...' (pty не требуется).
  3. Для итеративных задач запустите opencode с background=true, pty=true.
  4. Отслеживайте длительные задачи с помощью process(action="poll"|"log").
  5. Если OpenCode запрашивает ввод, отвечайте через process(action="submit", ...).
  6. Выходите с помощью process(action="write", data="\x03") или process(action="kill").
  7. Сообщите пользователю об изменениях в файлах, результатах тестов и следующих шагах.

Рабочий процесс ревью 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="&lt;id&gt;")
  • Избегайте совместного использования одного рабочего каталога для параллельных сессий OpenCode.
  • Возможно, потребуется дважды нажать Enter для отправки в TUI (один раз для завершения текста, второй раз для отправки).

Проверка​

Дымовой тест:

terminal(command="opencode run 'Ответить точно: OPENCODE_SMOKE_OK'")

Критерии успеха:

  • Вывод содержит OPENCODE_SMOKE_OK
  • Команда завершается без ошибок провайдера/модели
  • Для задач с кодом: ожидаемые файлы изменены, тесты проходят

Правила​

  1. Отдавайте предпочтение opencode run для одноразовой автоматизации — это проще и не требует pty.
  2. Используйте интерактивный фоновый режим только когда требуется итерация.
  3. Всегда ограничивайте сессии OpenCode одним репозиторием/рабочим каталогом.
  4. Для длительных задач предоставляйте обновления прогресса из логов process.
  5. Сообщайте о конкретных результатах (измененные файлы, тесты, оставшиеся риски).
  6. Завершайте интерактивные сессии с помощью Ctrl+C или kill, никогда не используйте /exit.