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": 272000,
"max_completion_tokens": 32000,
"reasoning_effort": "medium",
"capabilities": { "tools": true, "images": true, "prompt_cache_key": true }
},
{
"name": "gpt-5.5",
"display_name": "GPT 5.5",
"max_tokens": 272000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": true, "prompt_cache_key": true }
},
{
"name": "gemini-3.1-pro-preview",
"display_name": "Gemini 3.1 Pro",
"max_tokens": 1000000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true, "images": true }
},
{
"name": "grok-4-6",
"display_name": "Grok 4.6",
"max_tokens": 256000,
"max_completion_tokens": 32000,
"capabilities": { "tools": true }
}
]
}
}
}
}
Не пропусти capabilities. В Zed tools, images и prompt_cache_key по умолчанию false — без явного "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",
"display_name": "Claude Opus 5",
"max_tokens": 200000,
"max_output_tokens": 32000,
"capabilities": { "tools": true, "images": true, "prompt_caching": true }
},
{
"name": "claude-sonnet-5",
"display_name": "Claude Sonnet 5",
"max_tokens": 200000,
"max_output_tokens": 32000,
"capabilities": { "tools": true, "images": true, "prompt_caching": true }
}
]
}
}
}
}
Ключ — в 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, а не на верхнем уровне. - Агент отвечает, но не трогает файлы — не задан
"tools": trueвcapabilities. - 401 — ключ не дошёл: проверь, что он вставлен именно у этого провайдера, и что переменная окружения не перебивает его пустым значением.
- «only available via /v1/messages» — Claude-модель попала в
openai_compatible. Перенеси её в блок B.