Zed
Zed подключает модели через два разных провайдера: openai_compatible для GPT, Gemini, Grok и DeepSeek, и anthropic_compatible для Claude. Оба берут api_url из настроек, ключ — один и тот же vk-. Ставить ничего не нужно, всё правится в settings.json.
Открыть настройки: Ctrl/Cmd+Shift+P → zed: open settings (файл settings.json), либо agent: open settings — панель, где вводится ключ.
GPT / Gemini / Grok / DeepSeek — блок openai_compatible. Имя провайдера (vibecode) — твоё, оно же задаёт имя переменной окружения для ключа.
{
"language_models": {
"openai_compatible": {
"vibecode": {
"api_url": "https://vibecode.moe/v1",
"available_models": [
{
"name": "gpt-6-astra",
"display_name": "GPT 6 Astra",
"max_tokens": 1000000,
"max_completion_tokens": 32000,
"reasoning_effort": "medium",
"capabilities": { "tools": true, "images": true, "parallel_tool_calls": false, "prompt_cache_key": true }
},
{
"name": "gemini-3.8-flash",
"display_name": "Gemini 3.8 Flash",
"max_tokens": 1000000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": true, "parallel_tool_calls": false, "prompt_cache_key": false }
},
{
"name": "grok-4-6",
"display_name": "Grok 4.6",
"max_tokens": 256000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": false, "parallel_tool_calls": false, "prompt_cache_key": false }
},
{
"name": "grok-4-7",
"display_name": "Grok 4.7",
"max_tokens": 256000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": false, "parallel_tool_calls": false, "prompt_cache_key": false }
},
{
"name": "deepseek-flash",
"display_name": "DeepSeek Flash",
"max_tokens": 600000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": true, "parallel_tool_calls": false, "prompt_cache_key": false }
},
{
"name": "glm-5.3-flash",
"display_name": "GLM 5.3 Flash",
"max_tokens": 800000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": false, "parallel_tool_calls": false, "prompt_cache_key": false }
},
{
"name": "glm-5.3-flashx",
"display_name": "GLM 5.3 FlashX",
"max_tokens": 800000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": false, "parallel_tool_calls": false, "prompt_cache_key": false }
}
]
}
}
}
}
Копируй capabilities целиком. Zed требует все четыре поля — tools, images, parallel_tool_calls, prompt_cache_key: если хоть одного нет, settings.json подсветит ошибку вида «missing field». "tools": true даёт агенту читать и править файлы — без него модель только разговаривает. prompt_cache_key включает кэш промпта на GPT-моделях: без него каждый запрос считается как холодный.
Claude — отдельный блок anthropic_compatible: Claude-модели говорят на своём протоколе и через openai_compatible не подключатся (вернётся ошибка «only available via /v1/messages»). Обрати внимание: тут api_url без /v1 — Zed допишет путь сам.
{
"language_models": {
"anthropic_compatible": {
"vibecode-claude": {
"api_url": "https://vibecode.moe",
"available_models": [
{
"name": "claude-opus-5-5",
"display_name": "Claude Opus 5.5",
"max_tokens": 1000000,
"max_output_tokens": 32000,
"capabilities": { "tools": true, "images": true, "prompt_caching": true }
},
{
"name": "claude-opus-5",
"display_name": "Claude Opus 5",
"max_tokens": 1000000,
"max_output_tokens": 32000,
"capabilities": { "tools": true, "images": true, "prompt_caching": true }
},
{
"name": "claude-sonnet-5",
"display_name": "Claude Sonnet 5",
"max_tokens": 1000000,
"max_output_tokens": 32000,
"capabilities": { "tools": true, "images": true, "prompt_caching": true }
}
]
}
}
}
}
Здесь в capabilities свои три поля — tools, images, prompt_caching, и Zed тоже требует все три.
Ключ — в settings.json его класть не нужно и не следует. Два рабочих способа:
- Через интерфейс:
agent: open settings→ LLM Providers → свой провайдер → вставитьvk-YOUR-KEY. Zed кладёт его в системный keychain. - Через переменную окружения: имя выводится из имени провайдера в верхнем регистре — для
vibecodeэтоVIBECODE_API_KEY, дляvibecode-claude—VIBECODE_CLAUDE_API_KEY. Непустая переменная имеет приоритет над keychain.
Переменную Zed читает из окружения, в котором он запущен — на macOS запуск из Dock не видит того, что прописано в ~/.zshrc. Если ключ «не подхватывается», это почти всегда оно: проще ввести через интерфейс.
Выбрать модель — открой Agent Panel (Ctrl/Cmd+?) и выбери модель в списке внизу: она будет подписана именем провайдера. Полный список доступных name — на странице моделей, они же отдаются по GET https://vibecode.moe/v1/models.
Если что-то не работает
- Модель не появилась в списке —
settings.jsonне перечитан или в нём синтаксическая ошибка: Zed покажет её прямо в редакторе. Проверь, что блок лежит внутриlanguage_models, а не на верхнем уровне. - Ошибка «missing field» в
settings.json— вcapabilitiesне хватает поля (чаще всегоparallel_tool_calls). Скопируй строкуcapabilitiesиз блока выше целиком. - Агент отвечает, но не трогает файлы — не задан
"tools": trueвcapabilities. - 401 — ключ не дошёл: проверь, что он вставлен именно у этого провайдера, и что переменная окружения не перебивает его пустым значением.
- «only available via /v1/messages» — Claude-модель попала в
openai_compatible. Перенеси её в блок B.