Opencode

Делегирование кода в OpenCode CLI (фичи, ревью PR).

Метаданные навыка

ИсточникВстроенный (установлен по умолчанию)
Путьskills/autonomous-ai-agents/opencode
Версия1.2.0
АвторHermes Agent
ЛицензияMIT
Платформыlinux, macos, windows
ТегиCoding-Agent, OpenCode, Autonomous, Refactoring, Code-Review
Связанные навыкиclaude-code, codex, hermes-agent

Справочник: полный SKILL.md

инфо

Ниже — полное определение навыка, которое Hermes загружает при его срабатывании. Именно это агент получает как инструкции, когда навык активен.

OpenCode CLI

Используйте OpenCode как автономного агента для кодинга под управлением терминальных и процессных инструментов Hermes. OpenCode — открытый ИИ-агент для кодинга без привязки к провайдеру, с TUI и CLI.

Когда использовать

  • Пользователь явно просит задействовать OpenCode
  • Нужен внешний агент для написания, рефакторинга или ревью кода
  • Предстоят долгие сессии кодинга с периодической проверкой прогресса
  • Задачи нужно выполнять параллельно в изолированных рабочих каталогах или worktree

Требования

  • 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. Если поведение в терминале и в Hermes расходится, проверьте:

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 'Add retry logic to API calls and update tests'", workdir="~/project")

Прикрепляйте контекстные файлы через -f:

terminal(command="opencode run 'Review this config for security issues' -f config.yaml -f .env.example", workdir="~/project")

Вывести рассуждения модели — флаг --thinking:

terminal(command="opencode run 'Debug why tests fail in CI' --thinking", workdir="~/project")

Принудительно задать модель:

terminal(command="opencode run 'Refactor auth module' --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="Implement OAuth refresh flow and add tests")

# Следить за прогрессом
process(action="poll", session_id="<id>")
process(action="log", session_id="<id>")

# Отправить уточнение
process(action="submit", session_id="<id>", data="Now add error handling for token expiry")

# Выход — 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

Порядок действий

  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 'Review this PR vs main. Report bugs, security risks, test gaps, and style issues.' -f $(git diff origin/main --name-only | head -20 | tr '\n' ' ')", pty=true)

Шаблон параллельной работы

Чтобы избежать конфликтов, используйте отдельные рабочие каталоги или worktree:

terminal(command="opencode run 'Fix issue #101 and commit'", workdir="/tmp/issue-101", background=true, pty=true)
terminal(command="opencode run 'Add parser regression tests and commit'", 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 — не команда OpenCode, она открывает выбор агента. Для выхода из TUI используйте Ctrl+C.
  • Несовпадение PATH может привести к запуску не того бинарника или конфига модели.
  • Если OpenCode завис — загляните в логи, прежде чем убивать процесс:
    • process(action="log", session_id="<id>")
  • Не делите один рабочий каталог между параллельными сессиями OpenCode.
  • В TUI Enter иногда нужно нажать дважды: первый раз фиксирует текст, второй — отправляет.

Проверка

Smoke-тест:

terminal(command="opencode run 'Respond with exactly: OPENCODE_SMOKE_OK'")

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

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

Правила

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