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 |
Порядок действий
- Проверьте готовность инструмента:
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 '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 runpty не нужен. /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 - Команда завершается без ошибок провайдера или модели
- Для задач с кодом: изменились ожидаемые файлы, тесты проходят
Правила
- Для одноразовой автоматизации предпочитайте
opencode run— проще и без pty. - Интерактивный фоновый режим — только при итеративной работе.
- Всегда привязывайте сессии OpenCode к одному репозиторию или рабочему каталогу.
- Для долгих задач давайте обновления прогресса из логов
process. - Сообщайте конкретные итоги: какие файлы изменились, тесты, оставшиеся риски.
- Выходите из интерактивных сессий через Ctrl+C или kill, но не
/exit.