OpenCode
Терминальный AI-агент. Кастомный OpenAI-совместимый провайдер в `opencode.json` не работает без блока `models`: без перечисления id провайдер молча игнорируется
Что нужно
Протокол
Chat Completions. Пакет адаптера: @ai-sdk/openai-compatible. Base URL: https://www.llmmart.ru/api/v1.
Идентификатор провайдера — без точки (llmmart, не llmmart.ru): иначе options могут не дойти до SDK.
Конфиг
Глобально: ~/.config/opencode/opencode.json (или opencode.jsonc). В проекте — opencode.json в корне.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"llmmart": {
"npm": "@ai-sdk/openai-compatible",
"name": "LLM Mart",
"options": {
"baseURL": "https://www.llmmart.ru/api/v1",
"apiKey": "{env:LLM_MART_API_KEY}"
},
"models": {
"gpt-4o-mini": { "name": "GPT-4o mini" },
"anthropic/claude-sonnet-5": { "name": "Claude Sonnet 5" },
"anthropic/claude-opus-4.6": { "name": "Claude Opus 4.6" }
}
}
}
}export LLM_MART_API_KEY="sk-…"
opencodeВ сессии /models: модели видны как llmmart/<slug>. Ключи в объекте models — точные id, которые уйдут в API.
Для моделей, которые на LLM Mart ходят только в Responses, замените npm на @ai-sdk/openai — это другой адаптер (/v1/responses). Для обычного чата оставляйте openai-compatible.
Типичные ошибки
| Симптом | Что проверить |
|---|---|
Провайдер не в /connect | блок models не пустой |
| 401 | LLM_MART_API_KEY, синтаксис {env:LLM_MART_API_KEY} |
| ProviderModelNotFound | ключ в models = slug каталога |
| options «не применяются» | id провайдера без точки |
| Подхватился настоящий OpenAI | не называйте переменные OPENAI_API_KEY / OPENAI_BASE_URL, если рядом есть дефолтный провайдер openai |
Проверено: 2026-09-01 по Providers OpenCode (кастомный провайдер требует npm, options.baseURL и непустой models).
Что дальше
Qwen Code
CLI-агент (форк Gemini CLI). Кастомный шлюз задаётся массивом `modelProviders` в `~/.qwen/settings.json`: несколько моделей, у каждой свой `id` и `baseUrl`. Клю
Aider
CLI для парного программирования в git-репозитории. Для любого OpenAI-совместимого шлюза Aider требует префикс `openai/` в имени модели.