OpenCode на сервере: как заставить ИИ-агента работать, пока вы спите
OpenCode устроен как клиент-сервер: терминальный интерфейс лишь подключается к HTTP-серверу с OpenAPI-спецификацией. Поэтому агента можно запустить командой opencode serve на VPS, и он продолжит работу, когда вы закроете ноутбук. Это годится для ревью пул-реквестов, ночных аудитов и общей командной сессии, но автономность требует осторожной настройки.
AI-обработка оригинала Habr AI; редакция Hamidun News
Знакомая история: запустили ИИ-агента в терминале, он завис на самом интересном месте, а потом вы закрыли ноутбук, и вся сессия пропала. Claude Code и Codex закрыты и заточены под модели своих авторов. OpenCode, open-source harness, этого лишён: он работает с любым провайдером, а главное, его можно поселить на сервере.
Почему это вообще возможно
Под капотом у OpenCode клиент-серверная схема. TUI общается с локальным HTTP-сервером, который публикует OpenAPI-спецификацию на эндпоинте /doc. Команда opencode serve поднимает тот же сервер без интерфейса. По умолчанию он слушает 127.0.0.1:4096, адрес и порт меняются флагами --hostname и --port. К нему можно обращаться из CI, из cron или из другого скрипта, а ещё держать его прогретым, чтобы не платить за холодный старт MCP и LSP.
Если сервер доступен не только с localhost, обязательно задайте OPENCODE_SERVER_PASSWORD. Включится HTTP basic auth, имя пользователя по умолчанию opencode. Одного пароля мало: поставьте сервер за nginx или Caddy с HTTPS, иначе basic auth по открытому HTTP защищает только от случайного сканирования.
Где это пригодится
Самый простой сценарий — CI/CD и ревью пул-реквестов. Через GitHub-приложение достаточно упомянуть /opencode или /oc в комментарии, и агент стартует в GitHub Actions runner, прочитает контекст и при необходимости откроет PR с исправлением. Без приложения в workflow пишется шаг с opencode run --standalone: в CI нет запущенного TUI, и команда сама поднимет приватный сервер под задачу. Вывод моделей недетерминирован, так что оценки по шкале поручать агенту не стоит, а для ревью он вполне подходит.
Второй сценарий — ночные задачи. Плагин opencode-scheduler использует launchd на macOS и systemd на Linux, с запасным вариантом на cron. Ежедневный аудит зависимостей или отчёт по git log вешается на расписание и забывается. Третий — общий сервер для команды: IDE-плагины, веб-интерфейс или Telegram-мост подключаются к одному процессу и видят одни и те же сессии.
Systemd или Docker
На чистом VPS хватит systemd-юнита с командой opencode serve. Главная ловушка — PATH. Сервисы systemd не наследуют PATH вашей оболочки, поэтому не находится не только сам OpenCode, но и всё, что агент вызывает через bash: git, node, rg, make. Задайте Environment=PATH=... и HOME явно.
Docker даёт изоляцию файловой системы и повторяемость. Фиксируйте конкретную версию образа, монтируйте workspace отдельным volume, конфиги и сессии — ещё одним. Но это страховка от случайного rm, а не от целенаправленного побега.
Права, провайдеры, безопасность
Провайдер подключается через @ai-sdk/openai-compatible: подойдёт любой совместимый эндпоинт, от локальной Ollama до облачного шлюза. В статье в примере используется BotHub, который является спонсором материала. API-ключ лучше не хранить в конфиге, а положить через opencode auth login. Для служебных задач вроде заголовков сессий задайте дешёвую small_model.
На сервере нельзя оставлять правило ask: opencode serve может часами ждать ответа, которого не будет. Используйте точечные allow поверх deny или флаг --auto, который превращает ask в allow, но сохраняет deny.
Самое важное: в SECURITY.md прямо сказано, что OpenCode не песочница, а система разрешений — только UX. Внешние MCP-серверы лежат вне границы доверия, и недавний случай с вредоносным MCP, выполнявшим код через OAuth, это подтвердил. Отдельная боль — Bun: он нестабильно читает HTTP_PROXY, не понимает socks5://, и без NO_PROXY для localhost агент может зациклиться на собственных запросах.
Мониторинг и вывод
Есть health-check /global/health, логи в journald или Docker, а плагин opencode-otel отправляет трейсы в Jaeger, Grafana Tempo, Datadog или Langfuse. Для CI удобен opencode run --format json. Следите за расходом токенов: ночью агент работает без присмотра.
Практический вывод: поднять агента на сервере — дело одного вечера, а настоящая работа начинается потом. Изоляция, HTTPS, строгие права и наблюдаемость обязательны. Лучше всего он работает там, где встроен в процесс: ночные аудиты, ревью PR. В продакшен ему лучше не давать доступа, пусть готовит PR, а кнопку нажимаете вы.
- 8 нояб. 2026 г.Стэнфорд учит студентов отправлять патчи мейнтейнерам: как устроен курс CS146S
- 8 нояб. 2026 г.Инвесторы требуют скидку: IPO Anthropic с оценкой $1,5 трлн под вопросом
- 8 нояб. 2026 г.Три итерации промпта: как ИИ-ассистент для рассказов достраивает героев за автора
- 8 нояб. 2026 г.METR: ИИ ускорил исследования в Anthropic вдвое — порог RSP, похоже, пройден
Вопросы и ответы по материалу
Что известно по теме: почему это вообще возможно?
Под капотом у OpenCode клиент-серверная схема. TUI общается с локальным HTTP-сервером, который публикует OpenAPI-спецификацию на эндпоинте /doc. Команда opencode serve поднимает тот же сервер без интерфейса. По умолчанию он слушает 127.0.0.1:4096, адрес и порт меняются флагами --hostname и --port. К нему можно обращаться из CI, из cron или из другого скрипта, а ещё держать его прогретым, чтобы не платить за холодный старт MCP и LSP.
Что известно по теме: где это пригодится?
Самый простой сценарий — CI/CD и ревью пул-реквестов. Через GitHub-приложение достаточно упомянуть /opencode или /oc в комментарии, и агент стартует в GitHub Actions runner, прочитает контекст и при необходимости откроет PR с исправлением. Без приложения в workflow пишется шаг с opencode run --standalone: в CI нет запущенного TUI, и команда сама поднимет приватный сервер под задачу. Вывод моделей недетерминирован, так что оценки по шкале поручать агенту не стоит, а для ревью он вполне подходит.
Что известно по теме: Systemd или Docker?
На чистом VPS хватит systemd-юнита с командой opencode serve. Главная ловушка — PATH. Сервисы systemd не наследуют PATH вашей оболочки, поэтому не находится не только сам OpenCode, но и всё, что агент вызывает через bash: git, node, rg, make. Задайте Environment=PATH=... и HOME явно. Docker даёт изоляцию файловой системы и повторяемость. Фиксируйте конкретную версию образа, монтируйте workspace отдельным volume, конфиги и сессии — ещё одним. Но это страховка от случайного rm, а не от целенаправленного побега.
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.