Zed со своим API: openai_compatible в settings.json
Zed поддерживает произвольные OpenAI-совместимые эндпоинты через блок language_models.openai_compatible в settings.json. Достаточно прописать api_url: https://go2llm.tech/v1, перечислить модели в available_models и положить ключ gk_sk_… в переменную окружения — после этого агент Zed, inline-ассистент и генерация коммит-сообщений работают через go2llm.
Проверено живым запросом: нет. Инструкция составлена по документации Zed. Если что-то не сходится — напишите в @go2llm_support, поправим. Живым запросом у go2llm проверены только Claude Code и OpenCode. Zed относится к классу «клиент со своим base URL» — по документации Zed такой режим поддерживается штатно.
Источник документации: Zed — Use API Access, раздел OpenAI-Compatible Endpoints, Configuring Zed.
Дата публикации: 11 сентября 2026.
Что понадобится
- Установленный Zed.
- Ключ go2llm с префиксом
gk_sk_. При регистрации начисляется $1 на баланс, минимальное пополнение — $1. - Base URL:
https://go2llm.tech/v1для OpenAI-протокола либоhttps://go2llm.tech(без/v1) для Anthropic-протокола. - Точные public ID моделей:
curl https://go2llm.tech/v1/models— эндпоинт открыт без ключа, опубликованных моделей сейчас: 65.
Пошаговая настройка
Шаг 1. Откройте settings.json
Zed хранит пользовательские настройки здесь:
- macOS:
~/.config/zed/settings.json - Linux:
~/.config/zed/settings.json(или$XDG_CONFIG_HOME/zed/settings.json) - Windows:
%APPDATA%\Zed\settings.json
Открыть файл можно командой zed: open settings file из палитры команд. Синтаксис — JSON с поддержкой комментариев //.
Шаг 2. Добавьте провайдера openai_compatible
Вставьте в settings.json блок:
{
"language_models": {
"openai_compatible": {
"go2llm": {
"api_url": "https://go2llm.tech/v1",
"available_models": [
{
"name": "claude-sonnet-5",
"display_name": "go2llm Sonnet 5",
"max_tokens": 200000,
"max_output_tokens": 32000,
"capabilities": {
"tools": true,
"images": false,
"parallel_tool_calls": false,
"prompt_cache_key": false,
"chat_completions": true,
"interleaved_reasoning": false,
"max_tokens_parameter": true
}
},
{
"name": "gpt-5.6-sol",
"display_name": "go2llm GPT-5.6 Sol",
"max_tokens": 200000
}
]
}
}
}
}
Разбор ключей по документации Zed. go2llm — это provider ID, вы выбираете его сами. api_url — база OpenAI-совместимого API. В available_models каждый элемент обязан иметь name (точный public ID модели), опционально display_name и max_tokens (размер контекста).
Блок capabilities важен для go2llm по двум причинам. Во-первых, "images": false — текстовые эндпоинты go2llm бинарные вложения не принимают и отдают 400 unsupported_content_type. Во-вторых, "chat_completions": true — значение по умолчанию, и его нельзя переключать в false: у go2llm не опубликован эндпоинт /v1/responses, и Zed при chat_completions: false уйдёт именно туда и получит 404.
Поле "max_tokens_parameter": true заставляет Zed слать лимит вывода как max_tokens, а не max_completion_tokens. По умолчанию Zed ставит здесь false. Принимает ли go2llm max_completion_tokens наравне с max_tokens, мы отдельно не документировали — поэтому оставляйте true и шлите max_tokens: этот вариант используется во всех проверенных примерах. Если нужен именно max_completion_tokens, напишите в @go2llm_support, ответим и дополним страницу.
Шаг 3. Положите ключ в переменную окружения
Документация Zed прямо запрещает класть ключи в settings.json: «Do not put API keys in settings.json». Для openai_compatible имя переменной генерируется из provider ID — верхний snake case плюс _API_KEY. Для provider ID go2llm это:
export GO2LLM_API_KEY=gk_sk_ВАШ_КЛЮЧ
Переменную нужно экспортировать в окружении, из которого стартует Zed. Альтернатива — ввести ключ в UI: Settings → AI → LLM Providers (действие agent::OpenSettings); тогда Zed положит ключ в системный keychain. Непустая переменная окружения имеет приоритет над значением из keychain.
Шаг 4 (альтернатива). Нативный Anthropic-протокол
У go2llm есть собственный /v1/messages без прослойки-конвертера, а Zed отдельно поддерживает anthropic_compatible:
{
"language_models": {
"anthropic_compatible": {
"go2llm-anthropic": {
"api_url": "https://go2llm.tech",
"available_models": [
{
"name": "claude-opus-5",
"display_name": "go2llm Opus 5",
"max_tokens": 200000,
"max_output_tokens": 32000,
"capabilities": {
"tools": true,
"images": false,
"prompt_caching": true
}
}
]
}
}
}
}
Обратите внимание: для Anthropic-протокола api_url указывается без /v1 — go2llm сам добавляет /v1/messages. Ключ для этого провайдера Zed ждёт в переменной GO2LLM_ANTHROPIC_API_KEY (provider ID go2llm-anthropic в верхнем snake case).
Про prompt_caching: true: prompt caching на go2llm учитывается и тарифицируется на обоих протоколах — запись кэша по цене in, чтение по цене cache из прайса. Но сам шлюз кэш не включает: он работает ровно от того, что клиент положил в тело запроса, то есть от cache_control, который расставляет Zed. Конкретно связку Zed + prompt_caching: true мы живым запросом не проверяли, поэтому сверяйте фактический расход по usage.cost_usd в ответе.
Шаг 5. Перезапустите Zed
Zed инициализирует провайдеров при старте и читает переменные окружения из окружения своего процесса, поэтому после export приложение нужно перезапустить.
Проверка, что заработало
Сначала проверьте шлюз напрямую:
curl https://go2llm.tech/v1/chat/completions \
-H "Authorization: Bearer $GO2LLM_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":120,"messages":[{"role":"user","content":"Ответь одним словом: работает"}]}'
Ожидаемый результат: HTTP 200, в choices[0].message.content — «работает», в usage — поле cost_usd с фактической стоимостью запроса в долларах.
Затем в Zed откройте панель агента, выберите в пикере модель «go2llm Sonnet 5» и отправьте «Ответь одним словом: работает». Если модель не появилась в пикере — Zed не распарсил блок available_models; проверьте JSON на запятые и на то, что провайдер лежит внутри language_models, а не на верхнем уровне.
Какую модель выбрать
Актуальные ставки по каждой модели — на странице цен и в GET /api/pricing.
| Модель | Зачем в Zed |
|---|---|
claude-sonnet-5 | Агент и inline-ассистент, основная рабочая лошадь |
claude-opus-5 | Разбор незнакомой кодовой базы |
claude-haiku-4-5 | Коммит-сообщения, summary тредов |
gpt-5.6-sol | Альтернативный стек, если Claude перегружен |
gpt-5.6-luna | Мелкие правки, где цена важнее качества |
deepseek-v4-pro | Массовые операции на большом контексте |
Полный прайс — go2llm.tech/pricing.
Если не работает
- 401
no-key. Zed не нашёл ключ. Убедитесь, что имя переменной совпадает с provider ID: дляgo2llmэто ровноGO2LLM_API_KEY, дляmy-gatewayбыло быMY_GATEWAY_API_KEY. - 404 на
/v1/responses. Вcapabilitiesвыставлен"chat_completions": false. У go2llm Responses API не опубликован — вернитеtrue. - 404
model_not_found. Значениеnameвavailable_modelsне совпадает с каталогом. Копируйте точныйidизcurl https://go2llm.tech/v1/models. - 402
insufficient_balance. Пополните баланс (минимум $1) либо уменьшитеmax_output_tokens. Шлюз резервирует оценочную стоимость до вызова, и баланс не уходит ниже нуля. - 429
rate_limit. На ключ действует лимит 20 RPM по умолчанию. Учитывайте заголовокRetry-After. - 400
unsupported_content_type. В тред попало изображение или PDF. Поставьте"images": falseвcapabilities.
Разбор кодов целиком — go2llm.tech/docs/errors.
FAQ
Можно ли добавить провайдера через UI, а не руками в JSON? Да. По документации Zed: Agent Settings (agent::OpenSettings) → раздел LLM Providers → Add Provider, дальше заполняются provider name, API URL, model ID и context window. Результат тот же самый блок в settings.json.
Нужны ли кастомные заголовки? Для go2llm — нет, авторизация идёт стандартным Authorization: Bearer. Но Zed умеет custom_headers для openai_compatible-провайдеров, если вам нужно помечать трафик для своей наблюдаемости. Заголовки, которыми управляет сам Zed (Authorization, Content-Type), перекрыть нельзя.
Работает ли это в удалённых проектах (SSH, dev containers)? Провайдеры инициализируются в локальном приложении Zed: ключ читается из локального keychain, переменные окружения — из окружения локального процесса Zed. Ставить GO2LLM_API_KEY на удалённой машине не нужно.
Что дальше
Другие редакторы и агенты — в хабе go2llm.tech/docs/coding-tools. Эндпоинты, лимиты и форматы ответа — go2llm.tech/docs.