MiniMax-M3.1-Flash and DeepSeek-V4.1-Flash-1017 are now live on CometAPI →
guide/Исследования CometAPI

Как настроить CometAPI в OpenCode

Настройте CometAPI в OpenCode с примерами для Claude, GPT и DeepSeek. Включает команды переключения моделей, задания по программированию и устранение неполадок.

CometAPI
Deon GoodwinКоманда исследователей AI-моделей и API
Обновлено Oct 22, 2026 18 мин. чтения
Как настроить CometAPI в OpenCode
Использовать этот подход

Сделайте первый вызов API.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Кратко

Один раз настройте CometAPI в OpenCode, затем выберите Claude, GPT или DeepSeek для своей программной задачи. Это руководство расширяет официальный интеграционный гид CometAPI для OpenCode до полноценной настройки проекта: один API-ключ CometAPI, файл конфигурации с тремя примерами моделей, команды переключения моделей и небольшая задача на JavaScript с повторяемой проверкой.

Основные выводы

  • Настройка OpenCode с CometAPI требует ID провайдера, базовый URL API, учетные данные и ID модели.
  • Используйте {env:COMETAPI_KEY}, чтобы ключ API не попадал в opencode.json.
  • Зарегистрируйте примеры Claude, GPT и DeepSeek в одном opencode.json; все три записи используют один и тот же ключ CometAPI и шлюз.
  • Переключайте выбранного провайдера/модель в OpenCode без получения отдельных ключей Anthropic, OpenAI и DeepSeek.
  • Обратите внимание на отсутствующие переменные окружения, несоответствие API-маршрутов и запросы на подтверждение, которые могут выглядеть как «зависшие» запросы.

Что такое OpenCode и зачем использовать его с CometAPI?

OpenCode — это опенсорсный AI-агент для программирования с интерфейсом терминала, настольным приложением и расширением для IDE. В проекте он может объяснять существующий код, планировать изменения, редактировать файлы и запускать команды в рамках настроенных разрешений. В этом руководстве используется терминальный рабочий процесс: дайте агенту небольшую программную задачу, просмотрите предлагаемые действия и проверьте полученные файлы с помощью локального теста. См. официальную документацию OpenCode для установки и использования.

CometAPI предоставляет слой доступа к моделям. Мульти-модельный процесс в противном случае подразумевает управление учетными данными, биллингом и параметрами подключения у разных поставщиков. Маршрутизация поддерживаемых моделей через одну учетную запись CometAPI дает этому проекту общий ключ и базовый URL, в то время как OpenCode сохраняет репозиторий и инструкции по задачам. Это полезно при сравнении моделей на одной задаче или при смене выбранной модели без реорганизации проекта. Агрегирующий шлюз опционален: прямой доступ к поставщику может подойти для сценария с одним провайдером или при определенных контрактных требованиях. Преимущество здесь — упрощенный доступ к нескольким провайдерам; форматы API, поведение моделей и совместимость инструментов все равно требуют отдельной валидации.

CometAPI поддерживает совместимый с OpenAI формат Chat Completions и также предоставляет другие форматы API. Официальная интеграция выбирает адаптер для каждого формата. Здесь Claude Sonnet 5 использует Messages, GPT-6.1 Sol — Responses, а DeepSeek V4.1 Flash — Chat Completions, в соответствии с примерами по ссылкам ниже. Все запросы по-прежнему отправляются в CometAPI с одним и тем же ключом. Название поставщика и формат API описывают разные вещи; не следует предполагать, что одна модель принимает каждый формат.

КонфигурацияAPI Claude Sonnet 5 в CometAPIAPI GPT-6.1 Sol в CometAPIAPI DeepSeek V4.1 Flash в CometAPI
Поставщик моделиAnthropicOpenAIDeepSeek
ID моделиclaude-sonnet-5gpt-6.1-soldeepseek-v4.1-flash
ID провайдера в OpenCodecometapi-messagescometapi-responsescometapi-chat
Используемый здесь форматMessagesResponses/ chatChat Completions
Адаптер@ai-sdk/anthropic@ai-sdk/openai@ai-sdk/openai-compatible

Что нужно до настройки CometAPI в OpenCode?

Используйте терминал, Node.js с npm, учетную запись CometAPI с доступом к API и доступным балансом и одноразовый каталог проекта. Примеры Bash применимы к macOS, Linux или WSL; помеченные примеры PowerShell используют синтаксис Windows. Node.js также должен быть доступен в той же сессии для JavaScript-проверки далее в этом руководстве.

Этот пошаговый разбор использует стиль конфигурации OpenCode 1. Официальная документация различает OpenCode 1 и OpenCode 2; обе используют команду opencode. Перед началом запишите opencode --version и используйте документацию по конфигурации для вашей основной версии. Приведенный ниже рабочий процесс с тремя моделями — это интеграционный разбор с ожидаемыми результатами, а не утверждение о завершенном сквозном тесте.

Зафиксируйте версии CLI, Node.js, npm, операционной системы и дату теста при запуске примеров. Использование API тарифицируется на вашу учетную запись CometAPI. Команды ниже — это практический разбор с ожидаемыми исходами; нет заявления о модель-генерированном выводе или успешном запуске интеграции всех трех моделей.

node --versionnpm --versionopencode --version

Как пошагово настроить CometAPI в OpenCode?

Шаг 1. Установите OpenCode

Установите официальный npm-пакет, если OpenCode еще не доступен. Непинованная установка следует текущему релизу пакета; зафиксируйте установленную версию перед использованием конфигурации. Если вам нужно воспроизвести окружение исходного руководства, указанная версия CLI — 1.18.16.

Установите CLI OpenCode и выведите его версию.

npm install -g opencode-aiopencode --version

Откройте новый терминал, если исполняемый файл не найден после установки. Продолжайте в одноразовом каталоге проекта, чтобы первая задача агента имела четкие границы.

Создайте и войдите в каталог проекта.

mkdir cometapi-opencode-democd cometapi-opencode-demo

Шаг 2. Создайте API-ключ CometAPI

Сгенерируйте ключ API в вашей учетной записи CometAPI и установите его в том же терминале, который используется для запуска OpenCode. Локально замените плейсхолдер. Не коммитьте ключ, не вставляйте его в подсказки и не включайте в общие логи.

Переменная действует для текущей оболочки и процессов, запущенных из нее. Не создавайте скриншоты реального токена. Следующие проверки сообщают о наличии переменной, не печатая ее значение.

Установите ключ CometAPI для текущей Bash-сессии.

export COMETAPI_KEY="YOUR_COMETAPI_KEY"

Установите ключ CometAPI для текущей PowerShell-сессии.

$env:COMETAPI_KEY = "YOUR_COMETAPI_KEY"test -n "$COMETAPI_KEY" && printf "COMETAPI_KEY is set\n" || printf "COMETAPI_KEY is missing\n"if ([string]::IsNullOrWhiteSpace($env:COMETAPI_KEY)) {  "COMETAPI_KEY is missing"} else {  "COMETAPI_KEY is set"}

Шаг 3. Создайте opencode.json

Создайте opencode.json в корне проекта или используйте ~/.config/opencode/opencode.json, чтобы сделать записи доступными для всех проектов. Файл проекта делает это руководство самодостаточным. Используйте один объект provider, содержащий три записи ниже; если объект provider уже существует, объедините его записи вместо создания дублирующего ключа JSON.

При конфликте полей конфигурация проекта имеет приоритет над глобальной; неконфликтующие поля сохраняются. Пользовательский файл OPENCODE_CONFIG загружается между глобальной и проектной конфигурацией. Проверьте документированную цепочку приоритета, если также присутствуют управляемые или встроенные настройки.

Сохраните следующую полную конфигурацию как opencode.json. Каждый провайдер читает COMETAPI_KEY из окружения. Модель по умолчанию намеренно опущена, чтобы вы явно выбрали одну из трех примеров.

Вариант Flash делает запрошенный пример DeepSeek V4.1 явным. Оставьте GPT на адаптере Responses для использования инструментов; в руководстве CometAPI для DeepSeek задокументирован маршрут Chat Completions, используемый здесь. Перепроверьте доступность моделей и разрешения в вашей учетной записи перед запуском примеров.

{  "$schema": "https://opencode.ai/config.json",  "provider": {    "cometapi-messages": {      "npm": "@ai-sdk/anthropic",      "name": "CometAPI Claude",      "options": {        "baseURL": "https://api.cometapi.com/v1",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "claude-sonnet-5": {          "name": "Claude Sonnet 5"        }      }    },    "cometapi-responses": {      "npm": "@ai-sdk/openai",      "name": "CometAPI GPT",      "options": {        "baseURL": "https://api.cometapi.com/v1",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "gpt-6.1-sol": {          "name": "GPT-6.1 Sol"        }      }    },    "cometapi-chat": {      "npm": "@ai-sdk/openai-compatible",      "name": "CometAPI DeepSeek",      "options": {        "baseURL": "https://api.cometapi.com/v1",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "deepseek-v4.1-flash": {          "name": "DeepSeek V4.1 Flash"        }      }    }  },  "permission": {    "edit": "ask",    "shell": "ask"  }}

Правильный baseURL: https://api.cometapi.com/v1. Неправильный baseURL: https://api.cometapi.com/v1/chat/completions. Адаптер добавляет путь конечной точки. Объедините пример с существующим opencode.json, не удаляя несвязанные настройки.

Настройки edit и shell запрашивают одобрение на изменение файлов и команды в рамках текущих правил разрешений OpenCode. Запускайте примеры программирования интерактивно и изучайте эти запросы. OpenCode также наследует доступы операционной системы от процесса, который его запускает; используйте одноразовый каталог для этого упражнения.

Шаг 4. Проверьте соединение со шлюзом

Необязательная настройка и проверка Gemini приведены после проверок подключения трех моделей ниже.

Пример HTTP ниже проверяет запись DeepSeek Chat Completions напрямую. Это полезно для изоляции соединения со шлюзом от OpenCode. Claude и GPT используют выбранные маршруты адаптера на следующем шаге; изменение ID модели в рамках этого HTTP-запроса автоматически не меняет его протокол.

Отправьте минимальный запрос Chat Completions из Bash.

curl --silent --show-error \  --output response.json \  --write-out "HTTP %{http_code}\n" \  https://api.cometapi.com/v1/chat/completions \  -H "Authorization: Bearer $COMETAPI_KEY" \  -H "Content-Type: application/json" \  -d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Reply with a short greeting."}]}'

Эта команда использует параметры curl write-out и output, чтобы отделить HTTP-статус от response.json. Успешная передача может все же содержать HTTP-ошибку, поэтому проверьте напечатанный статус и JSON-тело. Это позволяет не зависеть от --fail-with-body, который требует curl 7.76.0 или новее.

Отправьте тот же запрос из PowerShell без специфичного для оболочки экранирования JSON.

$body = @{  model = "deepseek-v4.1-flash"  messages = @(@{ role = "user"; content = "Reply with a short greeting." })} | ConvertTo-Json -Depth 4​$response = Invoke-WebRequest -UseBasicParsing -Method Post `  -Uri "https://api.cometapi.com/v1/chat/completions" `  -Headers @{ Authorization = "Bearer $env:COMETAPI_KEY" } `  -ContentType "application/json" `  -Body $body$response.Content | Set-Content -Encoding UTF8 response.json"HTTP $($response.StatusCode)"

При HTTP-ошибке PowerShell может вызвать исключение до выполнения двух последних строк. Зафиксируйте статус и редактированные детали ошибки из этого сбоя; не фиксируйте это как успешный ответ.

Ожидаемый результат для запроса DeepSeek: HTTP 200 и непустой текст в choices[0].message.content. Проверьте сохраненный response.json, а не полагайтесь только на HTTP 200. Следующие дополнения показывают форму ответа и как проверить все три настроенных маршрута. Примеры иллюстративные; эта редакция не заявляет о живых тестовых результатах CometAPI. Текстовый запрос не проверяет потоковую передачу или вызовы инструментов.

Иллюстративная форма ответа DeepSeek: приветствие, значения usage и другие поля зависят от фактического запроса. Следующий JSON — намеренно сокращенный пример, а не зафиксированный API-ответ.

{"choices":[{"message":{"role":"assistant","content":"Hello!"}}]}

После фактического успешного HTTP-запроса строка статуса должна быть HTTP 200, а response.json — содержать непустой текст ассистента. Сохраните фактические статус и тело для вашего прогона; не копируйте пример как доказательство теста.

Шаг 5. Переключайтесь между Claude, GPT и DeepSeek

Команды в этом шаге должны вернуть запрошенные маркеры ассистента. Иллюстративный текст ассистента, с опущенными баннерами терминала, таймингом и метаданными:

Claude:   CLAUDE_READYGPT:      GPT_READYDeepSeek: DEEPSEEK_READY

Эти строки показывают только ожидаемое содержимое. Это не транскрипт терминала. Зафиксируйте фактический вывод и код возврата процесса для каждого провайдера; отсутствующий маркер или неудавшийся запрос требуют исследования.

Начните в каталоге, содержащем opencode.json. Перечислите модели для каждого настроенного провайдера, затем сделайте короткий текстовый запрос к каждой записи. Эти команды меняют выбранную модель и адаптер; ключ CometAPI и базовый URL остаются прежними.

Используйте эти команды, чтобы проверить, что все три записи видны и могут возвращать текст.

opencode models cometapi-messagesopencode models cometapi-responsesopencode models cometapi-chat​opencode run --model cometapi-messages/claude-sonnet-5 "Reply exactly with: CLAUDE_READY"opencode run --model cometapi-responses/gpt-6.1-sol "Reply exactly with: GPT_READY"opencode run --model cometapi-chat/deepseek-v4.1-flash "Reply exactly with: DEEPSEEK_READY"

Для интерактивного переключения запустите opencode, введите /models и выберите CometAPI Claude, CometAPI GPT или CometAPI DeepSeek. OpenCode использует пару провайдер/модель из этой записи. Вам не нужны три учетные записи поставщиков или три ключа API. С этой конфигурацией, основанной на окружении, не используйте /connect для предоставления второго ключа; отсутствие COMETAPI_KEY нужно исправить в оболочке запуска.

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

Gemini использует отдельного провайдера и протокол. Сохраните записи Claude, GPT и DeepSeek выше; объедините следующую запись в существующий объект provider. Базовый URL ниже следует предоставленной рецензентом конфигурации CometAPI. Подтвердите текущий маршрут и доступ к модели в вашей учетной записи CometAPI перед использованием.

Адаптер Google поддерживает пользовательский baseURL и отправляет apiKey через x-goog-api-key. См. официальную справку по провайдеру Google в AI SDK. Это подтверждает настройки адаптера; это не доказывает, что конкретная модель Gemini включена на шлюзе CometAPI.

{  "provider": {    "cometapi-gemini": {      "npm": "@ai-sdk/google",      "name": "CometAPI Gemini",      "options": {        "baseURL": "https://api.cometapi.com/v1beta",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "YOUR_GEMINI_MODEL_ID": {          "name": "CometAPI Gemini (account-selected model)"        }      }    }  }}

Замените YOUR_GEMINI_MODEL_ID и в ключе JSON, и в команде ниже на точный ID модели Gemini, включенной для вашей учетной записи CometAPI. Это плейсхолдер, а не реальный ID модели. Объедините эту запись провайдера, не дублируя верхнеуровневый ключ provider, и запускайте OpenCode из той же оболочки, где установлен COMETAPI_KEY.

opencode models cometapi-geminiopencode run --model cometapi-gemini/YOUR_GEMINI_MODEL_ID "Reply exactly with: GEMINI_READY"

Ожидаемый текст ассистента: GEMINI_READY. Список модели подтверждает локальную регистрацию; получение маркера подтверждает текстовый запрос. Чтобы проверить инструменты для кодинга, запустите opencode --model cometapi-gemini/YOUR_GEMINI_MODEL_ID в новом одноразовом каталоге и повторите задачу greet.cjs/check.cjs ниже. Один только успешный текст не подтверждает потоковую передачу, редактирование или вызовы инструментов.

Как выполнить задачу программирования с Claude, GPT и DeepSeek?

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

Сохраните prepare-runs.cjs рядом с opencode.json и запустите его один раз. Он создаст три новых каталога и скопирует только общую конфигурацию. Он остановится, если любой целевой каталог уже существует, чтобы предыдущая работа не была перезаписана.

const fs = require("node:fs");const path = require("node:path");const root = __dirname;const names = ["claude-demo", "gpt-demo", "deepseek-demo"];const config = path.join(root, "opencode.json");if (!fs.existsSync(config)) throw new Error("Missing opencode.json");for (const name of names) {  if (fs.existsSync(path.join(root, name))) {    throw new Error(`Directory already exists: ${name}`);  }}for (const name of names) {  const dir = path.join(root, name);  fs.mkdirSync(dir);  fs.copyFileSync(config, path.join(dir, "opencode.json"));}node prepare-runs.cjscd claude-demoopencode --model cometapi-messages/claude-sonnet-5# After exiting OpenCode:cd ..cd gpt-demoopencode --model cometapi-responses/gpt-6.1-sol# After exiting OpenCode:cd ..cd deepseek-demoopencode --model cometapi-chat/deepseek-v4.1-flash# After exiting OpenCode:cd ..

Запускайте одну из следующих сессий за раз, начиная из родительского каталога проекта. Выйдите из сессии перед переходом к следующему примеру. В каждой сессии отправьте одну и ту же задачу ниже и просмотрите предлагаемые правки и команды. Node.js должен быть доступен процессу, запускающему OpenCode.

Попросите агента создать и проверить небольшую функцию JavaScript.

Create greet.cjs in this directory.Export a function named greet(name) that returns "Hello, " + name + "!".Create check.cjs using node:assert/strict.Assert that greet("Ada") equals "Hello, Ada!".Run node check.cjs and report its actual exit status.Do not modify opencode.json or unrelated files.

Ожидаемый результат: агент запрашивает настроенные подтверждения, создает оба файла и завершает node check.cjs с кодом выхода 0. Зафиксируйте, что действительно произошло. Изучите файлы и повторно запустите проверку самостоятельно; словесного утверждения об успехе недостаточно. Если вызов инструмента отклонен или сформирован неверно, исследуйте совместимость маршрута отдельно от ожидающего утверждения.

Эталонные файлы и локальная проверка

Следующие файлы — эталонная реализация запрошенной задачи. Они написаны напрямую для этого руководства; не представляются как артефакты, сгенерированные моделью. Соответствие их наблюдаемому поведению — условие приемки вашего запуска агента.

function greet(name) {  return "Hello, " + name + "!";}​module.exports = { greet };const assert = require("node:assert/strict");const { greet } = require("./greet.cjs");​assert.equal(greet("Ada"), "Hello, Ada!");node check.cjsprintf "exit=%s\n" "$?"node check.cjs"exit=$LASTEXITCODE"

Локальная эталонная проверка: Windows, Node.js v24.19.0, 22 октября 2026; node check.cjs вернул код выхода 0 без стандартного вывода. Это проверяет только два эталонных файла. Это не подтверждает установку OpenCode, доступ к CometAPI, запросы на подтверждение или вызовы инструментов модели.

ПрогонВыбранная запись моделиЧто фиксировать
Claudecometapi-messages/claude-sonnet-5Ответ, созданные файлы, подтверждения, код выхода теста
GPTcometapi-responses/gpt-6.1-solОтвет, созданные файлы, подтверждения, код выхода теста
DeepSeekcometapi-chat/deepseek-v4.1-flashОтвет, созданные файлы, подтверждения, код выхода теста

Сохраните по одному отчету результата на модель: выбранный провайдер/модель, пришел ли ответ, были ли созданы greet.cjs и check.cjs, появились ли запросы на подтверждение и код выхода node check.cjs. Фиксируйте сбои как сбои; не делайте вывод о прохождении на основе эталонной реализации.

Защищайте учетные данные и проверяйте надежность

Храните COMETAPI_KEY в переменной окружения, а не в конфигурационных файлах или общих логах. Сохраняйте включенными подтверждения на редактирование файлов и команды оболочки, а новые конфигурации тестируйте в одноразовом проекте.

Отдельно проверяйте прямой HTTP-запрос, ответ OpenCode и процесс редактирования файлов. Фиксируйте ошибки и результаты тестов, повторно запускайте только временные сбои и осматривайте рабочее пространство перед повторением прерванных задач.

CometAPI упрощает переключение между моделями, но OpenCode не обеспечивает автоматический кросс-модельный фейловер через эту конфигурацию. Если модель становится недоступной, вручную выберите другую проверенную модель и повторите приемочную проверку.

Сколько стоит использовать Opencode с CometAPI?

Цены CometAPI и структура биллинга

CometAPI предлагает оплату по факту использования без ежемесячных абонплат, взимая плату только за фактические API-запросы. Тарифы на официальные модели обычно на 20% ниже стандартных цен провайдеров, доступны дополнительные скидки за объем. Разработчики могут получить доступ к Claude, GPT, DeepSeek и другим моделям через одну учетную запись, оплачивая на основе потребления токенов выбранной моделью. Актуальные тарифы смотрите на странице цен CometAPI.

Для запросов без кеширования и дополнительных сборов:

Стоимость = (Входные токены × ставка для входа + Выходные токены × ставка для выхода) / 1,000,000

Например, при гипотетических ставках $1/M для входных токенов и $4/M для выходных токенов, использование 20,000 входных и 2,000 выходных токенов стоит $0.028. Это иллюстративные ставки, а не реальные цены моделей.

Фиксируйте использование токенов, общие расходы по API, время выполнения и результаты тестов для каждой задачи. Чтобы снизить расходы, ограничивайте ненужный контекст, используйте краткие подсказки, избегайте повторных неудачных запросов и выбирайте более дешевые модели, когда они дают одинаковое качество.

Стратегии оптимизации затрат OpenCode API

Чтобы снизить затраты OpenCode без компромиссов по качеству кода, сосредоточьтесь на выборе модели, эффективности токенов и избегайте ненужных API-запросов.

  • Выберите подходящую модель: используйте более дешевые модели, такие как DeepSeek, для рутинных задач, а Claude или GPT — для сложной отладки, рефакторинга и рассуждений.
  • Сократите потребление токенов: держите подсказки краткими, предоставляйте только релевантные файлы проекта и избегайте повторной отправки больших объемов контекста репозитория.
  • Используйте кеширование подсказок: используйте поддерживаемые возможности кеширования для повторяющегося контекста, такого как инструкции проекта и ссылки на код, чтобы уменьшить входные затраты.
  • Избегайте ненужных повторов: исправляйте ошибки конфигурации и аутентификации перед повторами и просматривайте предыдущие выводы, чтобы избежать дублирования.
  • Отслеживайте фактические расходы: отслеживайте использование токенов, расходы API и успешность задач через CometAPI. Сравнивайте стоимость на успешную задачу, а не только цены на токены.

В сочетании со скидками CometAPI и оплатой по факту эти практики помогают контролировать расходы, сохраняя надежную производительность OpenCode.

Как расширить конфигурацию CometAPI?

Чтобы добавить другую модель, поместите ее ID под провайдера, чей формат API она поддерживает, или добавьте новую запись провайдера с требуемым адаптером. Затем выберите этот провайдер/модель через /models. Храните учетные данные в COMETAPI_KEY и сохраняйте существующие записи, чтобы переключение оставалось операцией выбора.

Официальное руководство охватывает четыре формата API, включая Gemini. В этой статье используются три записи, необходимые для Claude, GPT и DeepSeek. Если несколько выбранных моделей поддерживают Chat Completions, они могут разделять одну карту моделей cometapi-chat. Не переносите маршрут, поддерживающий только Responses или только Messages, в эту карту лишь для сокращения числа записей.

Выбирайте адаптер на основе маршрута, который вы намерены вызывать, а модель — на основе задачи программирования. Смена поставщика не требует нового ключа CometAPI; смена формата API требует соответствующего настроенного адаптера.

Как устранить неполадки CometAPI в OpenCode?

Следуйте первому сбойному этапу: HTTP-запрос → провайдер OpenCode → файловые инструменты. Если HTTP терпит неудачу, проверьте учетные данные, доступ к модели и детали конечной точки. Если HTTP работает, но OpenCode — нет, проверьте конфигурацию и окружение запуска. Если оба текстовых теста работают, но действия с файлами — нет, проверьте разрешения и совместимость вызовов инструментов.

СимптомПервая проверкаСледующее действиеДиагностическая команда / свидетельство
401 ответЗначение ключа и заголовок AuthorizationУстановите ключ в текущем терминале; проверьте случайные пробелы.Проверьте наличие переменной без печати ключа; сохраните HTTP-статус и редактированную ошибку.
403 или ограничение аккаунтаТекст ошибки и разрешения учетной записиПодтвердите доступ к модели и статус учетной записи в CometAPI.Сохраните редактированную ошибку ответа и подтвердите доступ учетной записи.
404 ответХост, путь конечной точки и ID моделиСравните запрос с документацией по выбранной модели API.Сравните response.json с запрошенной моделью и конечной точкой.
Модель отсутствует в OpenCodeКаталог проекта и конфигурация провайдераПроверьте валидный JSON и совпадающие имена провайдера/модели; перезапустите после правки.Выполните opencode models cometapi-chat, opencode models cometapi-messages и opencode models cometapi-responses; запишите opencode --version.
Текст работает, инструменты нетОтвет с вызовом инструментов и совместимостьПроверьте поддержку маршрута; отличайте отклоненный вызов инструмента от запроса на подтверждение.Сравните короткий текстовый запрос с неуспешным действием инструмента; сохраните ошибку.
Команда ждет одобренияИнтерактивная сессия и настройки разрешенийПросмотрите и одобрите задуманное действие; не считайте ожидающий запрос «падением» API.Используйте интерактивную сессию; зафиксируйте запрошенное действие и результат подтверждения.
429 или временная ошибка сервераДетали ошибки и лимиты использованияУменьшите конкурентность запросов; следуйте рекомендациям по повторам вместо непрерывных повторов.Сохраните HTTP-статус и рекомендации по повторам; уменьшите конкурентность.

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

Вопросы и ответы

Почему OpenCode «теряет» мой ключ CometAPI в новом терминале?

Команды export и PowerShell выше устанавливают переменную окружения для текущей сессии и ее дочерних процессов. Отдельно открытый терминал или уже запущенный редактор могут не наследовать ее. Установите ключ в окружении, из которого запускается OpenCode, и перезапустите процесс. Для постоянной настройки используйте менеджер учетных данных вашей системы, а не внедряйте секрет в файл репозитория.

Загружает ли OpenCode COMETAPI_KEY из .env автоматически?

Выражение {env:COMETAPI_KEY} читает окружение процесса. Простое создание .env не гарантирует, что переменная была загружена. Используйте вашу оболочку или явно настроенный загрузчик окружения перед запуском OpenCode. Диагностируйте пустое значение в процессе запуска, а не предполагайте недоступность провайдера.

Может ли глобальная конфигурация OpenCode изменить эту настройку проекта?

OpenCode объединяет конфигурации, а не заменяет каждый предыдущий файл. Файл проекта переопределяет пересекающиеся поля в глобальном файле, в то время как несвязанные глобальные настройки сохраняются. Пользовательский файл OPENCODE_CONFIG загружается между ними. Если поведение отличается между репозиториями, сравните эти источники и любые управляемые или встроенные настройки, а не предполагайте, что локальный файл — единственный вход.

Включает ли обновление списка моделей доступ CometAPI?

Нет. Опция обновления моделей обновляет кеш models.dev; она не предоставляет доступ к учетной записи и не доказывает, что конечная точка принимает ID модели. Ручная запись может быть видна до любого успешного запроса. Используйте фактический запрос для проверки маршрута и ознакомьтесь с настройками доступа учетной записи CometAPI для ограничений.

Почему curl работает, а OpenCode не может вызвать CometAPI?

Эти процессы могут загружать разные учетные данные, использовать разные ID моделей или отправлять разные формы запросов. Сначала повторите короткую текстовую подсказку из того же терминала, что и успешный HTTP-запрос. Затем сравните базовый URL провайдера, адаптер и выбранную модель. Если простой текст работает, а задача агента нет, сохраните ошибку, связанную с инструментами, отдельно; одна только HTTP-связь не доказывает совместимость инструментов.

Заключение

Теперь у вас есть один opencode.json с примерами для Claude, GPT и DeepSeek, общий учетный ключ CometAPI и команды для переключения активной модели. Используйте короткие текстовые запросы для проверки доступа, затем выполните одну и ту же задачу по созданию файлов в отдельных каталогах, чтобы подтвердить рабочий процесс программирования. Сохраните наблюдаемые результаты с деталями вашего окружения, прежде чем применять эту настройку к большому репозиторию.

Продолжить обучение

Свяжите эту статью со следующим решением.

Посмотреть все темы
Опубликовано Oct 22, 2026
Последнее обновление Oct 22, 2026
0 просмотров
Проверено на ясность, указание источников и актуальную терминологию API.

Читать далее