OpenCode
Подключение GPT, Grok, DeepSeek и Gemini к OpenCode через MashaGPT API: конфигурация, выбор модели и проверка инструментов.
1. Скачайте конфиг и плагин
Скачать комплект для OpenCode — opencode.json, mashagpt-session-header.js и инструкция. В архиве нет API-ключа. Можно скачать отдельно конфиг и плагин.
2. Укажите ключ и сохраните opencode.json
Создайте ключ в разделе API-ключи и замените YOUR_MASHA_API_KEY в примере своим ключом. Для Desktop это работает и при запуске приложения из Dock или меню «Пуск». Сохраните файл в пользовательскую папку настроек:
~/.config/opencode/opencode.json%USERPROFILE%\.config\opencode\opencode.json{
"$schema": "https://opencode.ai/config.json",
"model": "mashagpt/gpt-5.5",
"small_model": "mashagpt/gpt-5.5",
"provider": {
"mashagpt": {
"npm": "@ai-sdk/openai-compatible",
"name": "MashaGPT",
"options": {
"baseURL": "https://api.mashagpt.ru/v1",
"apiKey": "YOUR_MASHA_API_KEY"
},
"models": {
"gpt-5.5": {
"name": "GPT-5.5 — MashaGPT",
"tool_call": true,
"limit": {
"context": 128000,
"output": 8192
},
"headers": {
"X-Session-Id": ""
},
"options": {
"reasoningEffort": "none"
}
},
"grok-4.7": {
"name": "Grok 4.7 — MashaGPT",
"tool_call": true,
"limit": {
"context": 128000,
"output": 4096
},
"headers": {
"X-Session-Id": ""
}
},
"deepseek-v4": {
"name": "DeepSeek V4 — MashaGPT",
"tool_call": true,
"limit": {
"context": 128000,
"output": 4096
},
"headers": {
"X-Session-Id": ""
}
},
"gemini-3.1-pro-preview": {
"name": "Gemini 3.1 Pro — MashaGPT",
"tool_call": true,
"limit": {
"context": 128000,
"output": 4096
},
"headers": {
"X-Session-Id": ""
}
}
}
}
}
}Если файл уже есть, объедините настройки, сохранив другие провайдеры. Конфиг проекта opencode.json или opencode.jsonc может переопределять глобальную настройку. Не добавляйте файл с ключом в Git и не пересылайте его.
{file:~/.config/opencode/masha-api.key} и сохранить в masha-api.key только свой ключ. На macOS/Linux ограничьте доступ командой chmod 600 ~/.config/opencode/masha-api.key. Для CLI также подходит {env:MASHA_API_KEY}, если переменная задана в терминале, из которого запускается OpenCode. Приложение, запущенное из Dock или меню «Пуск», может не получить эту переменную.3. Установите плагин для OpenCode 2.0.20
В этой версии нужен дополнительный файл: одной настройки заголовка в opencode.json недостаточно. OpenCode отправляет X-Session-Id вида ses_…, а MashaGPT API ожидает в этом заголовке UUID и отвечает HTTP 500. Плагин удаляет только этот заголовок у провайдера mashagpt. Адрес API, API-ключ и содержимое запроса он не меняет.
~/.config/opencode/plugins/mashagpt-session-header.js%USERPROFILE%\.config\opencode\plugins\mashagpt-session-header.jsСоздайте папку plugins, если её нет, и сохраните в ней следующий код. Расширение должно быть .js, а не .txt или .mjs. OpenCode загрузит файл автоматически; добавлять путь к этому файлу в поле plugin не нужно.
// OpenCode 2.0.20 compatibility: MashaGPT reserves X-Session-Id for UUIDs.
const mashaSessionHeader = {
id: "mashagpt-session-header",
async setup(context) {
await context.session.hook(
"http.request",
(event) => {
const headers = new Headers(event.request.headers);
headers.delete("x-session-id");
event.request = new Request(event.request, { headers });
},
{ providerID: "mashagpt" },
);
},
};
export default mashaSessionHeader;4. Перезапустите OpenCode и включите модели
opencode run --model mashagpt/gpt-5.5 "Ответь одним словом: готово"
opencode run --model mashagpt/grok-4.7 "Ответь одним словом: готово"
opencode run --model mashagpt/deepseek-v4 "Ответь одним словом: готово"
opencode run --model mashagpt/gemini-3.1-pro-preview "Ответь одним словом: готово"model задаёт модель по умолчанию, small_model — модель служебных задач, включая названия сессий. Эти запросы тоже расходуют API-баланс. Чтобы выбрать Gemini по умолчанию, задайте в обоих поляхmashagpt/gemini-3.1-pro-preview.
"reasoningEffort": "none": работа инструментов через этот API проверена с таким значением. Не выбирайте вариант с другим уровнем reasoning при первом тесте. limit задаёт выбранные рабочие ограничения, а не предельные возможности моделей. /v1/chat/completions. Claude требует /v1/messages. Название модели в чате может отличаться от API ID; сверяйте ID и endpoint с каталогом MashaGPT API. Наличие модели в каталоге само по себе не подтверждает работу конкретного редактора.Если подключение не работает
Для диагностики сообщите поддержке версию OpenCode, ID модели, текст ошибки и время запроса. API-ключ присылать не нужно.