Перейти к основному содержимому

Zed с OpenCheese

/ Документация API

← Быстрый старт с APIОткрыть как Markdown

Панель агента Zed подключается к OpenCheese через провайдер openai_compatible в файле settings.json редактора и обращается к нему через OpenAI Chat Completions API по адресу https://api.opencheese.dev/v1.

01Откройте settings.json

Zed хранит все пользовательские настройки в одном файле. Откройте его из палитры команд командой zed: open settings file или отредактируйте напрямую:

Система Файл
macOS и Linux ~/.config/zed/settings.json
Windows %APPDATA%\Zed\settings.json

Дополняйте файл, а не заменяйте его: в нём же хранятся ваша тема, сочетания клавиш, шрифты и языковые серверы.

02Добавьте провайдер

На странице Настройка в панели, на вкладке Zed, генерируется этот блок со всеми моделями вашего тарифа и лимитами каждой из них. Вручную одна модель выглядит так:

json
{
  "language_models": {
    "openai_compatible": {
      "OpenCheese": {
        "api_url": "https://api.opencheese.dev/v1",
        "available_models": [
          {
            "name": "MODEL_ID",
            "display_name": "Model name",
            "max_tokens": 1000000,
            "max_output_tokens": 131000,
            "max_completion_tokens": 126000,
            "reasoning_effort": "low",
            "capabilities": {
              "tools": true,
              "images": true,
              "parallel_tool_calls": false,
              "prompt_cache_key": true,
              "chat_completions": true,
              "interleaved_reasoning": false,
              "max_tokens_parameter": true
            }
          }
        ]
      }
    }
  }
}
  • В api_url оставьте /v1: Zed сам добавляет /chat/completions.
  • Если в файле уже есть раздел language_models, добавьте только ключ OpenCheese внутрь его объекта openai_compatible.
  • max_tokens — это контекстное окно модели, а max_output_tokens — максимальная длина её ответа: возьмите их из context_window и max_output_tokens в /v1/models. Каждой модели нужны оба значения, иначе Zed отклоняет весь провайдер.
  • reasoning_effort должен быть одним из значений none, minimal, low, medium, high, xhigh или max; из-за любого другого значения Zed отклоняет весь провайдер. Для модели без уровней не указывайте его.
  • Оставьте prompt_cache_key включённым: с ним каждый диалог Zed отображается в панели как одна сессия.
  • images равно true только для моделей, у которых modalities.input содержит image.

03Передайте Zed API-ключ

Ключ никогда не записывается в settings.json: для него там нет поля. Есть два способа:

  1. Откройте панель агента, выполните agent: open settings, найдите OpenCheese в разделе LLM Providers, вставьте ключ в его поле API key и нажмите Enter. Zed сохранит ключ в системном хранилище ключей.
  2. Или задайте переменную окружения, которую Zed читает для этого провайдера:
bash
export OPEN_CHEESE_API_KEY='YOUR_OPENCHEESE_API_KEY'

Обратите внимание на подчёркивание: Zed строит имя из ID провайдера и разбивает OpenCheese на OPEN_CHEESE. OPENCHEESE_API_KEY не читается никогда. Кроме того, переменная имеет приоритет над хранилищем ключей, поэтому, если позже смените ключ, удалите переменную и перезапустите Zed.

04Выберите модель OpenCheese (необязательно)

Zed оставляет ту модель, которая была выбрана раньше. Чтобы сделать модель OpenCheese моделью по умолчанию для новых диалогов, добавьте в файл:

json
{
  "agent": {
    "default_model": {
      "provider": "OpenCheese",
      "model": "MODEL_ID"
    }
  }
}

provider — это просто ID провайдера, без префикса openai_compatible/. После правки settings.json перезапустите Zed или перезагрузите окно.

Решение проблем

  • Моделей OpenCheese нет совсем: JSON содержит ошибку, или в записи модели нет max_tokens либо указан неизвестный reasoning_effort. Скопируйте сгенерированный блок заново, а не исправляйте его вручную.
  • Модели видны, но каждый запрос завершается ошибкой: ключ так и не дошёл до Zed; повторите шаг 3.
  • Модель не используется: ID провайдера должен быть OpenCheese в обоих блоках и написан одинаково.
В сыре есть дырки. В вашей инфраструктуре их быть не должно.