MiniMax-M3.1-Flash and DeepSeek-V4.1-Flash-1017 are now live on CometAPI →
guide/Investigación de CometAPI

Cómo configurar CometAPI en OpenCode

Configure CometAPI en OpenCode con ejemplos de Claude, GPT y DeepSeek. Incluye comandos para cambiar entre modelos, tareas de programación y solución de problemas.

CometAPI
Deon GoodwinEquipo de investigación de modelos de IA y API
Actualizado Oct 22, 2026 22 min de lectura
Cómo configurar CometAPI en OpenCode
Usa este patrón

Haz la primera llamada a la 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)

TL;DR

Configura CometAPI una vez en OpenCode y luego selecciona Claude, GPT o DeepSeek para tu tarea de programación. Esta guía amplía la guía oficial de integración de CometAPI con OpenCode hasta un montaje completo del proyecto: una sola clave de API de CometAPI, un archivo de configuración con tres ejemplos de modelos, comandos para cambiar de modelo y una pequeña tarea en JavaScript con una verificación repetible.

Conclusiones clave

  • La configuración de CometAPI en OpenCode requiere un ID de proveedor, una URL base de API, una credencial y un ID de modelo.
  • Usa {env:COMETAPI_KEY} para mantener la clave real fuera de opencode.json.
  • Registra ejemplos de Claude, GPT y DeepSeek en un único opencode.json; las tres entradas usan la misma clave y gateway de CometAPI.
  • Cambia el proveedor/modelo seleccionado en OpenCode sin obtener claves separadas de Anthropic, OpenAI y DeepSeek.
  • Atento a variables de entorno faltantes, rutas de API no coincidentes y avisos de aprobación que pueden parecer solicitudes detenidas.

¿Qué es OpenCode y por qué usarlo con CometAPI?

OpenCode es un agente de codificación de código abierto con una interfaz de terminal, aplicación de escritorio y extensión para IDE. En un proyecto, puede explicar código existente, planificar un cambio, editar archivos y ejecutar comandos bajo permisos configurados. Este tutorial usa el flujo de trabajo en terminal: asigna al agente una pequeña tarea de programación, revisa sus acciones propuestas y verifica los archivos resultantes con una prueba local. Consulta la documentación oficial de OpenCode para instalación y uso.

CometAPI proporciona la capa de acceso a modelos. Un flujo de trabajo multi-modelo, de otro modo, implica gestionar credenciales, facturación y ajustes de conexión entre proveedores. Encauzar modelos compatibles a través de una sola cuenta de CometAPI da a este proyecto una clave y URL base comunes, mientras OpenCode mantiene el repositorio e instrucciones de la tarea. Esto es útil al comparar modelos en la misma tarea o cambiar el modelo seleccionado sin reorganizar el proyecto. Un gateway de agregación es opcional: el acceso directo al proveedor puede encajar con un flujo de trabajo de un solo proveedor o requisitos contractuales específicos. El beneficio aquí es un acceso multi-proveedor simplificado; los formatos de API, el comportamiento del modelo y la compatibilidad de herramientas aún requieren validación por separado.

CometAPI admite Chat Completions compatibles con OpenAI y también expone otros formatos de API. La integración oficial selecciona un adaptador para cada formato. Aquí, Claude Sonnet 5 usa Messages, GPT-6.1 Sol usa Responses, y DeepSeek V4.1 Flash usa Chat Completions, siguiendo los ejemplos vinculados más abajo. Todas las solicitudes siguen yendo a CometAPI con la misma clave. Un nombre de proveedor y un formato de API describen cosas distintas; no se debe asumir que un modelo concreto acepta todos los formatos.

ConfiguraciónAPI de Claude Sonnet 5 en CometAPIAPI de GPT-6.1 Sol en CometAPIAPI de DeepSeek V4.1 Flash en CometAPI
Proveedor del modeloAnthropicOpenAIDeepSeek
ID del modeloclaude-sonnet-5gpt-6.1-soldeepseek-v4.1-flash
ID de proveedor en OpenCodecometapi-messagescometapi-responsescometapi-chat
Formato de API usado aquíMessagesResponses/ chatChat Completions
Adaptador@ai-sdk/anthropic@ai-sdk/openai@ai-sdk/openai-compatible

¿Qué necesitas antes de configurar CometAPI en OpenCode?

Usa una terminal, Node.js con npm, una cuenta de CometAPI con acceso a la API y saldo disponible, y un directorio de proyecto desechable. Los ejemplos Bash aplican a macOS, Linux o WSL; los ejemplos etiquetados como PowerShell usan sintaxis de Windows. Node.js también debe estar disponible en la misma sesión para la verificación en JavaScript más adelante en esta guía.

Este recorrido usa el estilo de configuración de OpenCode 1. La documentación oficial distingue OpenCode 1 de OpenCode 2; ambos usan el comando opencode. Registra opencode --version antes de comenzar y usa la documentación de configuración de esa versión principal. El flujo de trabajo de tres modelos a continuación es un recorrido de integración con resultados esperados, no una afirmación de una prueba extremo a extremo completa.

Registra tu CLI, Node.js, npm, sistema operativo y fecha de prueba al ejecutar los ejemplos. El uso de la API se factura a tu cuenta de CometAPI. Los comandos a continuación son un recorrido práctico con resultados esperados; no se afirma salida generada por modelos ni una ejecución exitosa de integración de tres modelos.

node --versionnpm --versionopencode --version

¿Cómo configurar CometAPI en OpenCode paso a paso?

Paso 1: Instala OpenCode

Instala el paquete npm oficial si OpenCode no está ya disponible. La instalación no fijada sigue la versión actual del paquete; registra la versión instalada antes de usar la configuración. Si necesitas reproducir el entorno de la guía de origen, su versión de CLI indicada es 1.18.16.

Instala el CLI de OpenCode y muestra su versión.

npm install -g opencode-aiopencode --version

Abre una nueva terminal si el ejecutable no se encuentra tras la instalación. Continúa dentro de un directorio de proyecto desechable para que la primera tarea del agente tenga un límite claro.

Crea y entra en un directorio de proyecto.

mkdir cometapi-opencode-democd cometapi-opencode-demo

Paso 2: Crea una clave de API de CometAPI

Genera una clave de API desde tu cuenta de CometAPI y establécela en la misma terminal usada para iniciar OpenCode. Reemplaza el marcador localmente. No confirmes la clave, no la pegues en prompts ni la incluyas en registros compartidos.

La variable aplica a la shell actual y a los procesos lanzados desde ella. No hagas captura de pantalla de un token real. Las siguientes comprobaciones informan si la variable existe sin imprimir su valor.

Establece la clave de CometAPI para la sesión actual de Bash.

export COMETAPI_KEY="YOUR_COMETAPI_KEY"

Establece la clave de CometAPI para la sesión actual de 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"}

Paso 3: Crea opencode.json

Crea opencode.json en la raíz del proyecto, o usa ~/.config/opencode/opencode.json para hacer que las entradas estén disponibles entre proyectos. El archivo del proyecto mantiene este tutorial autocontenido. Usa un único objeto provider que contenga las tres entradas de abajo; si ya existe un objeto provider, fusiona sus entradas en lugar de crear una clave JSON duplicada.

Para campos en conflicto, la configuración del proyecto tiene prioridad sobre la configuración global; los campos sin conflicto se conservan. El archivo OPENCODE_CONFIG personalizado se carga entre la configuración global y la del proyecto. Revisa la cadena de precedencia documentada si también hay ajustes gestionados o en línea.

Guarda la siguiente configuración completa como opencode.json. Cada proveedor lee COMETAPI_KEY del entorno. Se omite deliberadamente el modelo predeterminado para que elijas explícitamente uno de los tres ejemplos.

La variante Flash hace explícito el ejemplo solicitado de DeepSeek V4.1. Mantén GPT en el adaptador Responses para el uso de herramientas; la guía de DeepSeek de CometAPI documenta la ruta de Chat Completions usada aquí. Vuelve a comprobar la disponibilidad de modelos y permisos en tu cuenta antes de ejecutar los ejemplos.

{  "$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"  }}

URL base correcta: https://api.cometapi.com/v1. URL base incorrecta: https://api.cometapi.com/v1/chat/completions. El adaptador añade la ruta del endpoint. Fusiona el ejemplo en un opencode.json existente sin eliminar ajustes no relacionados.

Los ajustes edit y shell solicitan aprobación para cambios de archivos y comandos bajo las reglas de permisos actuales de OpenCode. Ejecuta los ejemplos de codificación de forma interactiva e inspecciona esas solicitudes. OpenCode también hereda el acceso del sistema operativo del proceso que lo lanza; usa un directorio desechable para este ejercicio.

Paso 4: Verifica la conexión al gateway

La configuración y verificación opcional de Gemini se proporcionan tras las comprobaciones de conexión de los tres modelos a continuación.

El ejemplo HTTP siguiente comprueba directamente la entrada de DeepSeek Chat Completions. Es una forma útil de aislar la conexión al gateway de OpenCode. Claude y GPT usan sus rutas de adaptador seleccionadas en el siguiente paso; cambiar el ID del modelo dentro de esta solicitud HTTP no cambia automáticamente su protocolo.

Envía una solicitud mínima de Chat Completions desde 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."}]}'

Este comando usa las opciones write-out y output de curl para separar el estado HTTP de response.json. Una transferencia exitosa aún puede contener un error HTTP, por lo que inspecciona el estado impreso y el cuerpo JSON. Esto evita depender de --fail-with-body, que requiere curl 7.76.0 o posterior.

Envía la misma solicitud desde PowerShell sin entrecomillado JSON específico de la shell.

$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)"

Ante un error HTTP, PowerShell puede lanzar una excepción antes de que se ejecuten las dos últimas líneas. Captura el estado y los detalles de error redactados de ese fallo; no lo registres como una respuesta exitosa.

Resultado esperado para la solicitud de DeepSeek: HTTP 200 y texto no vacío en choices[0].message.content. Inspecciona el response.json guardado en lugar de aceptar solo HTTP 200. Las siguientes adiciones muestran la forma de la respuesta y cómo comprobar las tres rutas configuradas. Los ejemplos son ilustrativos; esta revisión no afirma resultados de prueba en vivo de CometAPI. Una solicitud solo de texto no valida streaming ni llamadas a herramientas.

Forma ilustrativa de respuesta de DeepSeek: el saludo, valores de uso y otros campos dependen de la solicitud real. El siguiente JSON es un ejemplo deliberadamente abreviado, no una respuesta de API capturada.

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

Tras una solicitud HTTP realmente exitosa, la línea de estado debería decir HTTP 200 y response.json debería contener texto de asistente no vacío. Conserva el estado y cuerpo reales de tu propia ejecución; no copies el ejemplo como evidencia de prueba.

Paso 5: Cambia entre Claude, GPT y DeepSeek

Los comandos de este paso deberían devolver los marcadores de asistente solicitados. Texto ilustrativo del asistente, con banners de terminal, tiempos y metadatos omitidos:

Claude:   CLAUDE_READYGPT:      GPT_READYDeepSeek: DEEPSEEK_READY

Estas líneas muestran solo el contenido esperado. No son una transcripción de terminal. Registra la salida real y el estado de salida del proceso para cada proveedor; un marcador faltante o solicitud fallida requiere investigación.

Comienza en el directorio que contiene opencode.json. Lista los modelos para cada proveedor configurado y luego realiza una solicitud de texto corta a cada entrada. Estos comandos cambian el modelo y adaptador seleccionados; la clave y la URL base de CometAPI permanecen iguales.

Usa estos comandos para comprobar que las tres entradas son visibles y pueden devolver texto.

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"

Para cambiar interactivamente, inicia opencode, ingresa /models y selecciona CometAPI Claude, CometAPI GPT o CometAPI DeepSeek. OpenCode usa el par proveedor/modelo de esa entrada. No necesitas tres cuentas de proveedor ni tres claves de API. Con esta configuración basada en entorno, no uses /connect para suministrar una segunda credencial; un COMETAPI_KEY faltante debe corregirse en la shell de lanzamiento.

Resultado esperado: cada solicitud corta devuelve su marcador solicitado. Registra el resultado real para cada modelo. Una entrada de modelo visible confirma el registro; una respuesta de texto exitosa confirma esa ruta de solicitud. Ninguno por sí solo prueba que las herramientas de archivos funcionen.

Gemini usa un proveedor y protocolo separados. Mantén las entradas de Claude, GPT y DeepSeek anteriores; fusiona la siguiente entrada en el objeto provider existente. La URL base a continuación sigue la configuración de CometAPI suministrada por el revisor. Confirma su ruta actual y acceso a modelos en tu cuenta de CometAPI antes de usarla.

El adaptador de Google admite una baseURL personalizada y envía apiKey usando x-goog-api-key. Consulta la referencia del proveedor de Google del AI SDK oficial. Esto confirma los ajustes del adaptador; no prueba que un modelo Gemini concreto esté habilitado en el gateway de 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)"        }      }    }  }}

Reemplaza YOUR_GEMINI_MODEL_ID tanto en la clave JSON como en el comando de abajo con el ID exacto del modelo Gemini habilitado para tu cuenta de CometAPI. Es un marcador, no un ID real. Fusiona esta entrada de proveedor sin duplicar la clave provider de nivel superior y inicia OpenCode desde la misma shell donde COMETAPI_KEY está establecida.

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

Texto esperado del asistente: GEMINI_READY. Un modelo listado confirma el registro local; recibir el marcador confirma la solicitud de texto. Guarda la respuesta real y el estado de salida. Para validar herramientas de codificación, lanza opencode --model cometapi-gemini/YOUR_GEMINI_MODEL_ID en un directorio desechable nuevo y repite la tarea greet.cjs/check.cjs de abajo. El éxito de texto por sí solo no verifica streaming, edición ni llamadas a herramientas.

¿Cómo ejecutar una tarea de codificación con Claude, GPT y DeepSeek?

Usa la misma pequeña tarea para cada modelo: crea una función de saludo, añade una aserción y ejecútala. Mantén tres directorios nuevos para que el segundo modelo no pueda simplemente reutilizar archivos creados por el primero. Esto comprueba el flujo de trabajo de integración sin convertir el artículo en un ranking de rendimiento.

Guarda prepare-runs.cjs junto a opencode.json y ejecútalo una vez. Crea tres directorios nuevos y copia solo la configuración compartida. Se detiene si algún directorio de destino ya existe, por lo que no se sobrescribe trabajo previo.

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 ..

Ejecuta una de las siguientes sesiones a la vez, comenzando desde el directorio principal del proyecto. Sal de la sesión antes de pasar al siguiente ejemplo. En cada sesión, envía la misma tarea a continuación y revisa las ediciones y comandos propuestos. Node.js debe estar disponible para el proceso que lanza OpenCode.

Pide al agente que cree y verifique una pequeña función de 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.

Resultado esperado: el agente solicita las aprobaciones configuradas, crea ambos archivos y completa node check.cjs con estado de salida 0. Registra lo que realmente ocurrió. Inspecciona los archivos y vuelve a ejecutar la verificación tú mismo; una afirmación en prosa de éxito no es suficiente. Si una llamada de herramienta es rechazada o mal formada, investiga la compatibilidad de la ruta por separado de una aprobación pendiente.

Archivos de referencia y verificación local

Los siguientes archivos son una implementación de referencia de la tarea solicitada. Fueron escritos directamente para esta guía; no se presentan como artefactos generados por modelos. Hacer coincidir su comportamiento observable es la condición de aceptación para tu ejecución con el agente.

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"

Verificación de referencia local: Windows, Node.js v24.19.0, 22 de octubre de 2026; node check.cjs devolvió estado de salida 0 sin salida estándar. Esto verifica solo los dos archivos de referencia. No verifica la instalación de OpenCode, acceso a CometAPI, avisos de aprobación ni llamadas de herramientas del modelo.

EjecuciónEntrada de modelo seleccionadaQué registrar
Claudecometapi-messages/claude-sonnet-5Respuesta, archivos generados, aprobaciones, código de salida de la prueba
GPTcometapi-responses/gpt-6.1-solRespuesta, archivos generados, aprobaciones, código de salida de la prueba
DeepSeekcometapi-chat/deepseek-v4.1-flashRespuesta, archivos generados, aprobaciones, código de salida de la prueba

Mantén un registro de resultados por modelo: proveedor/modelo seleccionado, si llegó una respuesta, si se crearon greet.cjs y check.cjs, si aparecieron aprobaciones y el código de salida de node check.cjs. Registra fallos como fallos; no infieras un aprobado a partir de la implementación de referencia.

Protege credenciales y verifica la fiabilidad

Guarda COMETAPI_KEY en una variable de entorno en lugar de archivos de configuración o registros compartidos. Mantén habilitadas las aprobaciones de edición de archivos y comandos de shell, y prueba nuevas configuraciones en un proyecto desechable.

Verifica por separado la solicitud directa a la API, la respuesta de OpenCode y el flujo de trabajo de edición de archivos. Registra errores y resultados de prueba, reintenta solo fallos transitorios e inspecciona el espacio de trabajo antes de repetir tareas interrumpidas.

CometAPI simplifica cambiar entre modelos, pero OpenCode no proporciona automáticamente con esta configuración un failover cruzado entre modelos. Si un modelo deja de estar disponible, selecciona manualmente otro modelo verificado y repite la verificación de aceptación.

¿Cuánto cuesta usar Opencode con CometAPI?

Precios de CometAPI y cómo se estructura la facturación

CometAPI ofrece precios de pago por uso sin tarifas mensuales de suscripción, cobrando solo por el uso real de la API. Sus tarifas de modelos oficiales suelen ser un 20% más bajas que los precios estándar de los proveedores, con descuentos adicionales por volumen disponibles. Los desarrolladores pueden acceder a Claude, GPT, DeepSeek y otros modelos mediante una sola cuenta, pagando en función del consumo de tokens del modelo seleccionado. Consulta la página de precios de CometAPI para tarifas actuales.

Para solicitudes sin caché ni tarifas adicionales:

Coste = (Tokens de entrada × Tarifa de entrada + Tokens de salida × Tarifa de salida) / 1,000,000

Por ejemplo, con tarifas hipotéticas de $1/M tokens de entrada y $4/M tokens de salida, usar 20,000 tokens de entrada y 2,000 de salida cuesta $0.028. Estas tarifas son ilustrativas, no precios reales de modelos.

Registra uso de tokens, cargos totales de API, tiempo de ejecución y resultados de prueba para cada tarea. Para reducir costos, limita el contexto innecesario, usa prompts concisos, evita solicitudes fallidas repetidas y elige modelos de menor costo cuando cumplan los mismos requisitos de calidad.

Estrategias de optimización de costos de la API en OpenCode

Para reducir costos en OpenCode sin comprometer la calidad del código, concéntrate en la selección de modelos, eficiencia de tokens y solicitudes de API innecesarias.

  • Elige el modelo adecuado: usa modelos de menor costo como DeepSeek para tareas rutinarias, reservando Claude o GPT para depuración, refactorización y razonamiento complejos.
  • Reduce el consumo de tokens: mantén prompts concisos, proporciona solo archivos relevantes del proyecto y evita enviar repetidamente grandes cantidades de contexto del repositorio.
  • Usa caché de prompts: aprovecha funciones de caché compatibles para contexto repetido, como instrucciones del proyecto y referencias de código, para reducir costos de entrada.
  • Evita reintentos innecesarios: corrige errores de configuración y autenticación antes de reintentar solicitudes y revisa salidas previas para evitar trabajo duplicado.
  • Monitorea el gasto real: rastrea uso de tokens, cargos de API y finalización exitosa de tareas a través de CometAPI. Compara el costo por tarea exitosa en lugar de solo los precios por token.

Combinadas con precios con descuento y pago por uso de CometAPI, estas prácticas ayudan a controlar el gasto manteniendo un desempeño fiable en OpenCode.

¿Cómo puedes extender la configuración de CometAPI?

Para añadir otro modelo, coloca su ID de modelo bajo el proveedor cuyo formato de API soporte, o añade una nueva entrada de proveedor con el adaptador requerido. Luego selecciona ese proveedor/modelo mediante /models. Mantén las credenciales en COMETAPI_KEY y conserva las entradas existentes para que cambiar siga siendo una operación de selección.

La guía oficial cubre cuatro formatos de API, incluido Gemini. Este artículo usa las tres entradas necesarias para Claude, GPT y DeepSeek. Si varios modelos seleccionados admiten Chat Completions, pueden compartir un único mapa de modelos cometapi-chat. No muevas una ruta exclusiva de Responses o de Messages a ese mapa solo para reducir el número de entradas.

Elige el adaptador según la ruta que pretendes llamar y el modelo según la tarea de programación. Un cambio de proveedor no requiere una nueva clave de CometAPI; un cambio de formato de API requiere el adaptador configurado correspondiente.

¿Cómo solucionar problemas de CometAPI en OpenCode?

Sigue la primera etapa que falle: solicitud HTTP → proveedor de OpenCode → herramientas de archivos. Si falla HTTP, inspecciona credenciales, acceso a modelos y detalles del endpoint. Si HTTP funciona pero falla OpenCode, inspecciona la configuración y el entorno de lanzamiento. Si ambas comprobaciones de texto funcionan pero fallan las acciones de archivos, inspecciona permisos y compatibilidad de llamadas a herramientas.

SíntomaPrimera comprobaciónSiguiente acciónComando diagnóstico / evidencia
Respuesta 401Valor de clave y encabezado AuthorizationEstablece la clave en la terminal actual; revisa espacios en blanco accidentales.Verifica la presencia de la variable sin imprimir la clave; conserva el estado HTTP y el error redactado.
403 o restricción de cuentaCuerpo de error y permisos de cuentaConfirma acceso a modelos y estado de cuenta en CometAPI.Guarda el error redactado de la respuesta y confirma el acceso a la cuenta.
Respuesta 404Host, ruta del endpoint e ID de modeloCompara la solicitud con la documentación del API del modelo seleccionado.Compara response.json con el modelo y endpoint solicitados.
Modelo ausente en OpenCodeDirectorio del proyecto y configuraciónComprueba JSON válido y nombres coincidentes de proveedor/modelo; reinicia tras editar.Ejecuta opencode models cometapi-chat, opencode models cometapi-messages y opencode models cometapi-responses; registra opencode --version.
Texto funciona, herramientas fallanRespuesta de tool-call y compatibilidad del adaptadorVerifica soporte de la ruta; distingue una llamada de herramienta rechazada de un aviso de aprobación.Compara la solicitud corta de texto con la acción de herramienta fallida; conserva el error.
Comando espera aprobaciónSesión interactiva y ajustes de permisosRevisa y aprueba la acción prevista; no trates una solicitud pendiente como caída de la API.Usa la sesión interactiva; registra la acción solicitada y el resultado de la aprobación.
429 o error transitorio del servidorDetalles del error y límites de usoReduce la concurrencia; sigue cualquier guía de reintento en lugar de reintentar continuamente.Conserva el estado HTTP y la guía de reintento; reduce la concurrencia.

Al compartir un problema, incluye la versión de OpenCode, sistema operativo, ID de modelo, ruta del endpoint y texto de error redactado. Excluye claves de API y contenido privado de repositorios. Conserva la solicitud más pequeña que reproduzca el fallo para que se pueda investigar por separado la configuración y los fallos de herramientas.

Preguntas frecuentes

¿Por qué OpenCode pierde mi clave de CometAPI en una nueva terminal?

Los comandos de export y PowerShell anteriores establecen una variable de entorno para la sesión actual y sus procesos hijos. Una terminal abierta por separado o un editor ya en ejecución pueden no heredarlo. Establece la clave en el entorno que lanza OpenCode y reinicia ese proceso. Para una configuración persistente, usa la gestión de credenciales de tu entorno en lugar de incrustar el secreto en un archivo de repositorio.

¿OpenCode carga COMETAPI_KEY desde un archivo .env automáticamente?

La expresión {env:COMETAPI_KEY} lee el entorno del proceso. Crear un archivo .env no establece por sí mismo que la variable se haya cargado. Usa tu shell o un cargador de entorno configurado explícitamente antes de iniciar OpenCode. Diagnostica un valor vacío en el proceso de lanzamiento en lugar de suponer que el proveedor no está disponible.

¿Una configuración global de OpenCode puede cambiar esta configuración de proyecto?

OpenCode fusiona la configuración en lugar de reemplazar cada archivo anterior. El archivo del proyecto anula campos superpuestos en el archivo global, mientras que los ajustes globales no relacionados permanecen. Un archivo OPENCODE_CONFIG personalizado se carga entre ellos. Si el comportamiento difiere entre repositorios, compara estas fuentes y cualquier ajuste gestionado o en línea en lugar de suponer que el archivo local es la única entrada.

¿Actualizar la lista de modelos de OpenCode habilita el acceso a CometAPI?

No. La opción de actualización de modelos actualiza la caché models.dev; no otorga acceso a la cuenta ni prueba que un endpoint acepte un ID de modelo. Una entrada configurada manualmente puede ser visible antes de cualquier solicitud exitosa. Usa una solicitud real para comprobar la ruta y consulta la configuración de cuenta de CometAPI para restricciones de acceso.

¿Por qué curl funciona mientras OpenCode no puede llamar a CometAPI?

Los dos procesos pueden cargar credenciales diferentes, usar IDs de modelo distintos o enviar formas de solicitud diferentes. Primero vuelve a ejecutar el prompt de texto corto desde la misma terminal que la solicitud HTTP exitosa. Luego compara la URL base del proveedor, adaptador y modelo seleccionado. Si el texto simple funciona pero falla una tarea del agente, conserva el error relacionado con herramientas por separado; la conectividad HTTP por sí sola no demuestra compatibilidad de herramientas.

Conclusión

Ahora tienes un único opencode.json con ejemplos de Claude, GPT y DeepSeek, una credencial compartida de CometAPI y comandos para cambiar el modelo activo. Usa las solicitudes cortas de texto para comprobar el acceso y luego ejecuta la misma tarea de creación de archivos en directorios separados para verificar el flujo de trabajo de codificación. Conserva los resultados observados con los detalles de tu entorno antes de aplicar la configuración a un repositorio mayor.

Seguir aprendiendo

Conecta este artículo con la siguiente decisión.

Ver todos los temas
Publicado el Oct 22, 2026
Última actualización Oct 22, 2026
0 visitas
Revisado para mayor claridad, atribución de fuentes y terminología API actual.

Leer Más