OpenCode в Docker с платной моделью через OpenRouter
Введение
Эта статья — часть большого руководства
OpenCode в Docker на Ubuntu 24.04.
Руководство показывает, как запускать
OpenCode с флагом
--auto внутри контейнера
Docker.
С --auto агент не спрашивает вас перед каждой
командой, поэтому контейнер ограничивает то, до чего он может достать:
агент работает только в одном git worktree, отдельной
копии проекта.
Эта статья показывает, как дать контейнеру платную модель через OpenRouter.
У бесплатной модели OpenCode есть
лимит использования (у
бесплатной модели есть лимит использования).
Учётная запись OpenRouter даёт контейнеру платные модели через один ключ.
Лаунчер читает ключ из файла на хосте и передаёт его по одному запуску за
раз; запуск без него остаётся на бесплатной модели и ключа не получает.
1. Ключ для контейнера
Создайте отдельный ключ на странице ключей OpenRouter
(создание ключа API) и задайте ему
лимит кредита (ключи, лимиты и
приватность).
Под --auto агент может прочитать ключ, поэтому
лимит — это то, что он может потратить, а утёкший ключ удаляется, не
затрагивая ваши остальные.
Сохраните его вне репозитория, доступным только вам:
mkdir -p ~/.config/opencode-agent
install -m 600 /dev/null ~/.config/opencode-agent/openrouter.key
vi ~/.config/opencode-agent/openrouter.key
Вставьте ключ, который начинается с sk-or-,
единственной строкой.
install с -m
600 создаёт файл с правами на чтение и запись только для вас ещё
до того, как в нём появится ключ.
2. Проверка, что контейнер его получает
container/tools/ai/opencode-docker.sh --openrouter-key ~/.config/opencode-agent/openrouter.key ../site-agent shell
В приглашении /work $:
opencode auth list
OpenRouter OPENROUTER_API_KEY environment
opencode models | grep -c '^openrouter/'
371
Без --openrouter-key те же две команды печатают
No authenticated integrations и
0.
Id моделей — это строки из opencode models
| grep '^openrouter/', например
openrouter/deepseek/deepseek-v4.1-flash, платная
DeepSeek V4.1 Flash. Затем
exit.
3. Запуск задачи на платной модели
container/tools/ai/opencode-docker.sh --openrouter-key ~/.config/opencode-agent/openrouter.key ../site-agent run -m openrouter/deepseek/deepseek-v4.1-flash "<task>"
-m выбирает модель только для этого запуска;
конфигурация из шага 4
(конфигурация и заметки для контейнера) оставляет бесплатную модель
для каждого запуска без ключа.
Какая модель подходит какой задаче, сказано в разделе
Модели ИИ; цены меняются, поэтому проверяйте
их на OpenRouter перед долгой задачей
(проверяйте цены до
планирования бюджета).
Что знать о ключе
- Неверный или удалённый ключ останавливает запуск на первом запросе. С выдуманным ключом: Error: User not found.
- В контейнере он нигде не сохраняется. Ключ — переменная окружения этого одного запуска. Он не пишется в том сессий и его нет в командной строке docker: пока контейнер работал с тестовым ключом, ни один процесс на хосте его не показывал.
- Никогда в репозитории. Файл ключа внутри репозитория или worktree был бы смонтирован или закоммичен, и лаунчер его не примет: ERROR: keep the key file outside the repo and the worktree.
- Каждый запуск с ключом может его прочитать, через env, как и страница, которую агент читает и которая велит отправить ключ наружу. Защищает вас лимит кредита; у запусков без этой опции ключа нет никогда.
- Куда уходит код. OpenRouter переправляет каждый запрос провайдеру модели. Какие провайдеры могут получить ваши данные и могут ли они их хранить, задаётся в настройках приватности учётной записи (ключи, лимиты и приватность).
Автор статьи: Клавдия Кондакова