Как подключить OpenCode к OpenAI-compatible API
OpenCode работает через OpenAI-compatible провайдера: три параметра, smoke-тест, затем tools и контекст. Порядок важен — каждый пропущенный шаг превращает интеграцию в отладку вслепую.
Три параметра
Агенту нужен отдельный API-ключ в переменной окружения процесса, base URL https://api.normahub.cc/v1 и model ID из текущего каталога. Не добавляйте /chat/completions к base URL вручную — путь подставит клиент.
Проверьте, что модель доступна именно этому ключу и поддерживает нужный endpoint. Названия полей provider-конфига зависят от версии OpenCode: сверяйтесь с документацией установленной версии, а не с примером месячной давности.
- отдельный ключ для агента
- base URL с /v1, без дописок
- model ID из GET /v1/models
Короткий запрос первым
Начните с короткого текста без tools и большого контекста. Зафиксируйте статус, фактическую модель и X-Request-Id: smoke-тест за минуту показывает, где ошибка — в ключе, маршруте или содержимом.
Только после зелёного smoke-теста подключайте tools и рабочий размер контекста. Прыжок сразу в боевую конфигурацию превращает отладку в гадание по трём переменным.
Агент поэтапно
Откройте небольшой проект без секретов, попросите read-only анализ, потом одну контролируемую правку. После каждого шага — diff и история запросов.
Если SDK-запрос проходит, а агент буксует, виноваты обычно системный контекст, tools или размер проекта, а не совместимость API. Это другой payload — не делайте выводов по одному curl.
Ключ и лимиты для агента
Coding-сессии с большим контекстом сжигают токены быстрее, чем кажется: агенту положен собственный ключ с modest spend limit. Ключ от продакшена или общий командный агенту не давайте.
Конфиг с model ID можно коммитить, секрет — нет. Ключ живёт в окружении процесса, а не в файле рядом с проектом.
Контекст и модель
Когда агент упирается в лимит контекста, сужайте область: один пакет вместо репозитория, read-only вместо свободной правки. Проверьте context_window в каталоге — может, нужна модель с большим окном, а не более длинные попытки.
Рост входа при одинаковых задачах означает лишний контекст, который агент тащит сам. Это одновременно медленно и дорого — режется дисциплиной области.
Что сохранить для отката
Зафиксируйте версию, дату, model ID и base URL. Откат — это возврат прежней конфигурации провайдера, распадающийся на одну команду.
При сбое сохраняйте статус и X-Request-Id, но не прикладывайте в тикет исходники и секреты. И не меняйте модель, endpoint и tools одновременно — иначе не поймёте, что сломалось.
- версия OpenCode и дата проверки
- model ID и base URL
- менять по одному параметру
Открыть эту статью в Markdown·Поделиться в Telegram
Следующий материалКак рассчитать стоимость AI API по токенам