Tool Integrations8 июля 2026 г.Flatkey

Настройка OpenAI-совместимого провайдера в OpenCode: Маршрутизация моделей для кодирования через Flatkey

Настройте OpenCode с пользовательским OpenAI-совместимым провайдером через Flatkey, затем проверьте базовый URL, выбор модели, логи и путь для отката.

Настройка OpenAI-совместимого провайдера в OpenCode: Маршрутизация моделей для кодирования через Flatkey

Настройка OpenCode OpenAI-совместимого провайдера полезна, когда вы хотите, чтобы OpenCode обращался к маршруту модели, который ведет себя как OpenAI Chat Completions API, в то время как ваша команда сохраняет владение ключами, маршрутизацию моделей и анализ использования в одном шлюзе.

Важно то, что в OpenCode есть документированный путь для пользовательских провайдеров. В документации по провайдерам OpenCode, проверенной 8 июля 2026 года, последовательность действий такова: добавьте учетные данные с помощью /connect, выберите Other для провайдера, которого еще нет в списке, дайте этому провайдеру запоминающийся ID, настройте провайдера в opencode.json, а затем выполните /models, чтобы выбрать одну из настроенных моделей.

Flatkey подходит под эту схему в качестве шлюза, стоящего за провайдером. Вы оставляете OpenCode в качестве агента для кодирования, указываете провайдеру базовый URL OpenAI-совместимого API Flatkey и проверяете, что трафик моделей OpenCode появляется в журналах использования или запросов Flatkey, прежде чем сделать его маршрутом по умолчанию.

Краткий ответ по настройке OpenAI-совместимого провайдера в OpenCode

Используйте эту схему настройки, когда конечная точка модели совместима с Chat Completions.

Решение Рекомендуемое значение Почему это важно
ID провайдера flatkey ID должен совпадать между /connect, opencode.json и выбранными моделями.
NPM-пакет @ai-sdk/openai-compatible Документация OpenCode указывает этот пакет для OpenAI-совместимых провайдеров, использующих /v1/chat/completions.
Базовый URL API OpenCode https://router.flatkey.ai/v1 Публичный сайт Flatkey направляет OpenAI-совместимых клиентов на этот корневой API.
ID моделей Текущие псевдонимы моделей Flatkey, доступные для вашего ключа OpenCode использует настроенные ID моделей в средстве выбора /models.
Проверка Ответ OpenCode плюс журнал запросов или использования Flatkey Это доказывает, что запрос агента для кодирования использовал предполагаемый маршрут шлюза.
Откат Сохраните предыдущее значение model и предыдущую конфигурацию провайдера Изменение провайдера должно быть обратимым без рефакторинга ваших промптов или рабочего процесса агента.

Это руководство по настройке OpenAI-совместимого провайдера в OpenCode использует шаблоны. Проверьте точные псевдонимы моделей и семейство конечных точек в вашем аккаунте Flatkey, прежде чем маршрутизировать рабочие задачи агента для кодирования.

Что требуется для OpenCode

OpenCode имеет два отдельных элемента состояния для пользовательского провайдера.

Уровень OpenCode Что вы настраиваете Поведение источника, которое нужно учитывать
Учетные данные API-ключ, введенный через /connect в разделе Other ID провайдера, который вы вводите здесь, должен совпадать с ID провайдера в конфигурации.
Конфигурация провайдера provider.<id> в opencode.json В конфигурации указываются пакет AI SDK, базовый URL, модели и необязательные заголовки или ссылки на API-ключ.
Выбор модели Средство выбора /models или значение model по умолчанию Настроенные модели провайдера появляются после настройки провайдера.
Значения по умолчанию во время выполнения model и необязательный small_model Конфигурация OpenCode поддерживает значения по умолчанию для провайдера/модели для обычных и легковесных задач.

Конфигурация OpenCode может быть в формате JSON или JSONC. Вы можете разместить ее глобально по пути ~/.config/opencode/opencode.json или в корне проекта как opencode.json. Конфигурация проекта имеет более высокий стандартный приоритет, поэтому используйте файл проекта, если вы хотите протестировать Flatkey в одном репозитории, не изменяя каждое рабочее пространство OpenCode.

Шаг 1: Создайте ключ Flatkey для OpenCode

Создайте ключ Flatkey для этой рабочей нагрузки и запишите три значения вне системы контроля версий.

FLATKEY_API_KEY=sk-fk-your-key
FLATKEY_BASE_URL=https://router.flatkey.ai/v1
FLATKEY_MODEL=your-current-flatkey-model-alias

Держите корневой API отдельно от пути конечной точки. В конфигурации провайдера OpenCode следует использовать https://router.flatkey.ai/v1 в качестве options.baseURL; прямые дымовые тесты HTTP добавляют /chat/completions.

Перед подключением OpenCode выполните прямой тест с тем же ключом Flatkey и псевдонимом модели.

curl "$FLATKEY_BASE_URL/chat/completions" \
  -H "Authorization: Bearer $FLATKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "'"$FLATKEY_MODEL"'",
    "messages": [
      { "role": "user", "content": "Ответьте в точности: flatkey route ok" }
    ]
  }'

Если этот прямой запрос не удался, исправьте ключ Flatkey, псевдоним модели, семейство конечных точек или маршрут учетной записи, прежде чем отлаживать OpenCode. OpenAI-совместимый провайдер OpenCode не может компенсировать псевдоним модели, который учетная запись шлюза не может вызвать.

Шаг 2: Добавьте учетные данные Flatkey в OpenCode

OpenCode хранит учетные данные провайдера через /connect. В TUI OpenCode:

/connect

Выберите Other, введите ID провайдера, например flatkey, затем вставьте API-ключ Flatkey. Не вставляйте базовый URL в поле для учетных данных. Ключ подтверждает личность; базовый URL должен находиться в opencode.json.

Используйте простой идентификатор провайдера. flatkey лучше, чем flatkey-prod-openai-compatible-gateway-v2, потому что вы будете вводить его в идентификаторах моделей и заметках по откату.

Шаг 3: Добавьте конфигурацию провайдера OpenCode

Создайте или обновите opencode.json в корне проекта, который вы хотите протестировать.

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "flatkey": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Flatkey",
      "options": {
        "baseURL": "https://router.flatkey.ai/v1"
      },
      "models": {
        "your-current-flatkey-model-alias": {
          "name": "Flatkey primary model"
        }
      }
    }
  },
  "model": "flatkey/your-current-flatkey-model-alias"
}

Это самая минимальная конфигурация для OpenAI-совместимого провайдера в OpenCode. Она предоставляет OpenCode провайдера с именем flatkey, указывает OpenCode использовать пакет AI SDK, совместимый с OpenAI, и отображает один псевдоним модели в средстве выбора моделей.

Если вы хотите, чтобы OpenCode использовал меньший маршрут для легковесных задач, добавьте small_model только после того, как основной маршрут заработает.

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "flatkey": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Flatkey",
      "options": {
        "baseURL": "https://router.flatkey.ai/v1"
      },
      "models": {
        "primary-flatkey-model-alias": {
          "name": "Flatkey primary"
        },
        "lighter-flatkey-model-alias": {
          "name": "Flatkey lightweight"
        }
      }
    }
  },
  "model": "flatkey/primary-flatkey-model-alias",
  "small_model": "flatkey/lighter-flatkey-model-alias"
}

Используйте псевдонимы моделей, которые ваш ключ Flatkey действительно может вызывать. Если ваша учетная запись предоставляет аутентифицированный маршрут /v1/models, сравните настроенные идентификаторы моделей с этим ответом. В противном случае скопируйте псевдонимы из текущей панели управления Flatkey или каталога моделей и проверьте их с помощью реального запроса.

Шаг 4: Выберите и протестируйте модель в OpenCode

После сохранения конфигурации откройте средство выбора моделей.

/models

Выберите модель провайдера Flatkey. Затем выполните небольшой запрос в OpenCode:

Reply with exactly: opencode flatkey route ok

Пока не переносите весь рабочий процесс кодирования. Сначала сохраните компактный пакет верификации.

Проверка Условие прохождения Данные для сохранения
Провайдер отображается /models показывает настроенную модель Flatkey Скриншот или заметка в терминале с выбранным ID модели.
Аутентификация работает OpenCode получает обычный ответ от модели, а не 401 или 403 Отредактированный владелец ключа, время ответа и временная метка запроса.
Базовый URL корректен Нет дублирования /v1/v1, нет отсутствующего поведения /chat/completions Итоговый options.baseURL и прямая конечная точка curl.
Flatkey видит запрос Запрос появляется в логах использования или запросов Flatkey Временная метка запроса, псевдоним модели, поля токенов или единиц, метка ключа/рабочей нагрузки.
Возможность отката существует Вы можете вернуться к предыдущему провайдеру/модели одним изменением конфигурации Предыдущая model, предыдущий ID провайдера и предыдущий владелец ключа.

Это превращает миграцию OpenAI-совместимого провайдера в OpenCode в небольшое операционное изменение вместо слепой замены провайдера.

Шаг 5: Разделяйте Chat Completions и Responses

В документации OpenCode по пользовательским провайдерам указано разграничение пакетов: используйте @ai-sdk/openai-compatible для OpenAI-совместимых провайдеров, которые используют /v1/chat/completions; если провайдер или модель используют /v1/responses, используйте @ai-sdk/openai.

Это означает, что первый маршрут Flatkey должен быть моделью в стиле Chat Completions, если у вас нет актуальных доказательств того, что выбранная вами модель и клиентский путь используют другое семейство конечных точек.

Используйте эту таблицу принятия решений перед добавлением новых моделей.

Маршрут модели Рекомендация по пакету OpenCode Что тестировать
Совместимый с Chat Completions @ai-sdk/openai-compatible Обычный чат, потоковая передача, поведение вызова инструментов при необходимости.
Маршрут в стиле Responses @ai-sdk/openai согласно документации OpenCode Создание ответа, обработка инструментов и парсинг вывода.
Смешанные маршруты в рамках одного провайдера Переопределение пакета для каждой модели, если ваша конфигурация это использует По одной модели за раз, с отдельными логами.

Для большинства настроек начинайте с одного маршрута Chat Completions. Добавляйте потоковую передачу, вызовы инструментов и вторичные псевдонимы моделей после того, как первый дымовой тест OpenAI-совместимого провайдера в OpenCode станет виден в Flatkey.

Шаг 6: Добавьте средства управления для команды после того, как маршрут заработает

Как только OpenCode сможет вызывать Flatkey, сделайте маршрут наблюдаемым.

Контроль Почему это помогает
Именование ключа Присвойте ключу метку для OpenCode, среды, команды или репозитория.
Утверждение модели Ограничьте первую конфигурацию утвержденными псевдонимами, прежде чем добавлять широкий выбор моделей.
Проверка использования Проверяйте журналы запросов или использования Flatkey по временной метке после каждого теста OpenCode.
Проверка затрат Сопоставьте использование модели, токенов и ключа с владельцем бюджета.
Политика тайм-аута Используйте опции провайдера OpenCode только после того, как убедитесь, что базовый маршрут работает.
Заметка для отката Сохраните предыдущие значения провайдера и модели, прежде чем делать Flatkey провайдером по умолчанию.

Именно здесь Flatkey становится чем-то большим, чем просто базовый URL. Рабочий OpenAI-совместимый провайдер для OpenCode также должен предоставлять командам платформы, финансов и эксплуатации место для анализа использования моделей и изменения маршрута, не требуя от каждого разработчика управления отдельными учетными записями провайдеров.

Для более широкого планирования миграции используйте это руководство вместе с руководством по миграции OpenAI-совместимого API от Flatkey. Если вы сравниваете смежные инструменты для кодирования, ознакомьтесь с руководством по настройке OpenAI-совместимого провайдера для Continue.dev и руководством по настройке OpenAI-совместимого API для Roo Code.

Устранение неполадок с OpenAI-совместимым провайдером для OpenCode

Симптом Вероятная причина Что проверить
Провайдер не отображается в /models Несоответствие ID провайдера или конфигурация не загружена Убедитесь, что ID в /connect и ключ provider оба имеют значение flatkey; убедитесь, что файл конфигурации находится в корне проекта или в ожидаемом глобальном пути конфигурации.
401 или 403 Отсутствует, отозван или неверный ключ Flatkey Повторно введите учетные данные с помощью /connect; никогда не выводите полный ключ в журналы.
404 Неверный корневой URL API или семейство конечных точек options.baseURL должен быть корневым URL API, а не полным URL, таким как /chat/completions.
Модель не найдена Псевдоним недоступен для ключа или семейства конечных точек Проверьте псевдоним модели в Flatkey и выполните один прямой тестовый запрос.
Потоковая передача зависает Проблема с возможностями маршрута, поддержкой модели или тайм-аутом фрагмента Сначала проверьте работу чата без потоковой передачи, затем при необходимости настройте chunkTimeout в OpenCode.
Данные об использовании отсутствуют в Flatkey Запрос не прошел через Flatkey или журналы отфильтрованы Выполните поиск по временной метке, метке ключа, псевдониму модели и среде.
Функции ответов не работают Неверный пакет для семейства конечных точек Перепроверьте, использует ли выбранный маршрут /v1/chat/completions или /v1/responses.

Если первый запрос не удался, пока не меняйте промпты, агентов, разрешения или код репозитория. Ограничьте область отладки OpenAI-совместимого провайдера для OpenCode до минимума: учетные данные, ID провайдера, базовый URL, пакет, псевдоним модели и один простой запрос в чат.

Итоговый чек-лист

Прежде чем использовать Flatkey в качестве маршрута по умолчанию для OpenCode, убедитесь в следующем:

  1. В /connect есть учетные данные Flatkey с тем же ID провайдера, который используется в opencode.json.
  2. provider.flatkey.npm имеет значение @ai-sdk/openai-compatible для маршрута Chat Completions.
  3. provider.flatkey.options.baseURL имеет значение https://router.flatkey.ai/v1.
  4. model указывает на настроенное значение flatkey/<model-alias>.
  5. В /models отображается настроенная модель Flatkey.
  6. Однострочный промпт в OpenCode успешно возвращает ответ.
  7. В журналах использования или запросов Flatkey отображается тестовый запрос от OpenCode.
  8. Предыдущий маршрут провайдера/модели задокументирован для возможности отката.

Настройка OpenAI-совместимого провайдера для OpenCode считается завершенной, когда провайдер настроен, доступен для выбора, проверен в журналах Flatkey и его изменения обратимы. Когда вы будете готовы маршрутизировать трафик моделей для кодирования через один ключ, получите ключ Flatkey и начните с одного низкорискового промпта в OpenCode.