Zed: настройка ИИ-ассистента на своём ключе
Zed настраивается через settings.json, и провайдер anthropic там ожидает адрес без /v1 — забытая деталь, которая превращается в постоянные 404 в панели ассистента.
4 мин · · Обновлено · IDE
Zed — редактор с текстовым конфигом settings.json, и встроенный ассистент настраивается тоже через него, без отдельной формы для базового URL. Формат простой, но одна деталь ломает всё: провайдер anthropic в Zed ожидает адрес без /v1, а в конфиге он часто оказывается с суффиксом, скопированным откуда-то ещё.
Где менять настройки
Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → zed: open settings открывает личный settings.json. Секция ассистента называется language_models или assistant, в зависимости от версии Zed — если один ключ не подхватывается, проверьте, под каким именем ассистент ищет конфиг в вашей версии через zed: open default settings для сравнения.
Anthropic-совместимая настройка
{
"language_models": {
"anthropic": {
"api_url": "https://api.zukko.pro",
"api_key": "fetch_ваш_ключ"
}
},
"assistant": {
"default_model": {
"provider": "anthropic",
"model": "claude-sonnet-5"
}
}
}api_url — без /v1. Провайдер anthropic в Zed сам обращается к /v1/messages и подставляет заголовок anthropic-version. Если приписать /v1 вручную, путь задвоится, и каждый запрос будет улетать на несуществующий адрес — это самая частая причина 404 при первом подключении здесь.
OpenAI-совместимая настройка
Если нужны GPT или GLM, используйте провайдер openai_compatible (или openai, в зависимости от версии Zed):
{
"language_models": {
"openai_compatible": {
"zukko": {
"api_url": "https://api.zukko.pro/v1",
"api_key": "fetch_ваш_ключ",
"available_models": [
{ "name": "gpt-5.6-sol" },
{ "name": "gpt-5.6-luna" },
{ "name": "glm-5.3" }
]
}
}
}
}Здесь api_url — с /v1: этот провайдер ходит на /chat/completions относительно указанного адреса.
Проверка ключа перед тем, как копаться в JSON
Прежде чем разбирать settings.json построчно, убедитесь, что ключ вообще работает:
curl https://api.zukko.pro/v1/messages \
-H "Authorization: Bearer fetch_ваш_ключ" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{"model":"claude-sonnet-5","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'Ответ пришёл — значит дело в конфиге Zed, а не в ключе или балансе. Дальше стоит проверить самое частое: лишнюю запятую в JSON. settings.json не прощает висячую запятую перед закрывающей скобкой — файл в этом случае тихо не применяется, и Zed продолжает работать со старыми (или пустыми) настройками, без явной ошибки в интерфейсе.
Как читать ошибки от API
401— ключ не принят:{"error":{"message":"Invalid API key. Use Authorization: Bearer fetch_*","type":"authentication_error"}}. Проверьте, что в JSON ключ в кавычках и без лишних пробелов.402— баланс пуст:{"error":{"message":"Недостаточно средств на балансе","code":"insufficient_balance"}}. Проверка идёт до обращения к модели, неудачный запрос ничего не стоит.404 model_not_found— имя модели не совпадает с каталогом. Точный список без ключа:curl https://api.zukko.pro/v1/models.400 model_retired— модель сняли с обслуживания, замена указана в самом сообщении об ошибке.503 model_disabled— модель выключена в каталоге; замените её вsettings.jsonна одну из актуальных.429— от Zukko это только лимит конкретного ключа (key_daily_limit_reachedсо сбросом в 00:00 UTC /key_monthly_limit_reached), если он настроен в кабинете; общего rate limit на шлюзе нет, прочие 429 приходят от провайдера модели.
Что стоит знать про модели в Zed
Сейчас в каталоге шесть моделей: claude-opus-5-5, claude-sonnet-5, gpt-5.6-sol, gpt-5.6-luna, glm-5.3 и glm-5.3-flash (актуальный список — GET https://api.zukko.pro/v1/models). Модели Claude и GPT поддерживают vision и контекст 1,000,000 токенов, так что вставка скриншотов и больших файлов в контекст ассистента Zed на них работает; у glm-5.3 и glm-5.3-flash контекст 128K и изображения они не принимают.
Лимиты, стоимость и деньги
Обычные (не потоковые) ответы API несут заголовки X-Zukko-Cost-Micros (стоимость запроса в микродолларах, 1,000,000 = $1) и X-Fetch-Balance-Cents (остаток после списания, тоже в микродолларах) — они полезны, если вы дергаете тот же ключ скриптами параллельно с редактором. Сам ассистент Zed получает ответы потоково, а у потоковых ответов этих заголовков нет — его расход смотрите в кабинете, через GET /v1/usage или GET /v1/balance.
На странице ключа в кабинете https://zukko.pro/app/api-keys можно выставить дневной или месячный лимит расхода в долларах и ограничить список разрешённых моделей. Пополнение — СБП, карта через PayPear, крипта, иностранная карта Mastercard EU через Fride (комиссия около 13%, суммы $2–$594); минимум — $1. Разовый бонус $0.50 — за подписку на @zukkopro: привязка Telegram в кабинете, подписка, кнопка «Проверить»; один раз на Telegram-аккаунт. Стартового баланса при обычной регистрации нет.
Поддержка — https://t.me/zukkopro?direct.
Бесплатный подсчёт токенов
Прежде чем вставлять в ассистента Zed большой файл или несколько сразу, можно узнать их вес в токенах без реального запроса и без списания — эндпоинт /v1/messages/count_tokens только считает:
curl https://api.zukko.pro/v1/messages/count_tokens \
-H "Authorization: Bearer fetch_ваш_ключ" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"текст запроса"}]}'Это особенно полезно для контекста в 1,000,000 токенов (у моделей Claude и GPT): сама по себе такая ёмкость не защищает от того, что конкретный собранный контекст окажется дороже, чем ожидалось.
Веб-поиск для моделей без него
Если в settings.json настроена модель без встроенного поиска в сети — например, GLM — а задаче в ассистенте Zed нужны свежие данные, тем же ключом можно вызвать POST /v1/web-search отдельно от основного диалога и вставить результат в промпт вручную.
Если settings.json синхронизируется между машинами
Zed поддерживает синхронизацию настроек, и ключ в settings.json может незаметно оказаться на второй машине или у другого разработчика. В этом случае стоит сразу задать лимиты на странице ключа в кабинете и периодически проверять GET /v1/usage — история списаний с курсорной пагинацией (общая на весь аккаунт, по всем ключам) покажет, действительно ли расход соответствует только вашей работе.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- JetBrains AI Assistant не работает: причины и обходные путиAI Assistant не активируется, молчит или недоступен в отдельных файлах. Разбираем причины по документации JetBrains и подключаем свои модели через шлюз.
- DeepSeek в VS Code: подключение через Cline, Kilo Code и ContinueПодключаем DeepSeek к Cline, Kilo Code и Continue с одним ключом, выбираем между Flash и Pro и считаем, сколько стоит рабочий день с агентом в редакторе.
- Аналоги GitHub Copilot со своим API-ключом: что выбратьCline, Kilo Code, Continue и Cursor работают со своим ключом. Сравниваем, куда они встроены, как подключаются к шлюзу и как считать расход.
- Invalid API key в opencode: почему ключ не принимается и как проверитьОшибка Invalid API key в opencode почти всегда сводится к четырём причинам. Проверяем ключ отдельно от opencode и находим, где ломается цепочка.