Agente de línea de comandos

Conecta Codex a modelos de terceros mediante Responses

El Codex actual solo admite el protocolo Responses. Configura el proveedor y la clave, comprueba la ruta API y descubre qué hacer si una pasarela solo ofrece Chat Completions.

Verificado el 2026-10-26Se aplica a
Codex CLI 0.154.0

La respuesta corta

El Codex actual solo admite "responses" en wire_api. "chat" se eliminó y provoca un error de configuración al arrancar. KimiSeek ofrece /v1/responses, por lo que puedes conectarte directamente con la configuración siguiente.

Tabla de decisión en 30 segundos

Capacidad de la pasarelaQué hacer
Ofrece /v1/responsesUsar "responses"
Solo /v1/chat/completionsUsar una pasarela compatible o una capa de conversión que exponga Responses
DesconocidaComprobar la ruta y el cuerpo de la respuesta con el comando siguiente

Por qué Codex usa responses por defecto

Codex envía solicitudes a /responses y procesa sus eventos de streaming y llamadas a herramientas. Chat Completions utiliza estructuras distintas; cambiar wire_api no permite al Codex actual usarlo. Las capacidades también dependen del modelo y de la pasarela. Una respuesta válida no verifica por sí sola todas las funciones de las herramientas.

Requisitos previos

  • Node.js 20 o superior
  • Codex CLI: npm install -g @openai/codex
  • Una API key de KimiSeek (empieza por ks-), creada en el panel

Step 1 · Escribe el archivo de configuración

El archivo está en ~/.codex/config.toml; si no existe, créalo:

TOML · ~/.codex/config.toml
model = "deepseek-v4-pro-0813"
model_provider = "kimiseek"

[model_providers.kimiseek]
name = "KimiSeek"
base_url = "https://api.kimiseek.app/v1"
env_key = "KIMISEEK_API_KEY"
wire_api = "responses"

Tres puntos con los que la gente tropieza:

  1. base_url debe incluir /v1. Codex añade /responses directamente a base_url. Si te falta el /v1, la petición va a https://api.kimiseek.app/responses y te llevas un 404.
  2. env_key es un nombre de variable, no la key en sí. Aquí escribes KIMISEEK_API_KEY; el valor real vive en tus variables de entorno.
  3. model tiene que ser un id que exista de verdad en el catálogo. Una errata devuelve model not found, y un modelo retirado también.

Step 2 · Define la variable de entorno y arranca

Shell
export KIMISEEK_API_KEY="ks-your-key"

codex

Para cambiar de modelo de forma temporal, edita model en config.toml o pasa codex --model <id>.

Step 3 · Confirma que la key funciona

Shell
curl https://api.kimiseek.app/v1/models \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}"

Si te devuelve una lista de modelos, tanto la key como la red están bien. El sentido de este paso es separar los fallos de autenticación de los fallos de protocolo: si no, ante un 404 te quedas adivinando cuál de los dos era.

Step 4 · Sondea responses en 30 segundos

Shell · OpenAI Responses
curl https://api.kimiseek.app/v1/responses \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro-0813",
    "input": "Explain what a base URL is in one sentence.",
    "max_output_tokens": 256,
    "stream": false
  }'
  • HTTP 200 con un array JSON output → la ruta Responses funciona; después prueba una tarea real y llamadas a herramientas.
  • HTTP 404 → comprueba /v1 en base_url y si el cuerpo indica una ruta inexistente o un modelo no encontrado. El estado por sí solo no basta.
  • HTTP 401 → vuelve al Step 3 y revisa las credenciales.

Si la pasarela solo ofrece Chat Completions

Mantén wire_api = "responses". Elige una pasarela con /v1/responses o añade una capa de conversión compatible. No cambies al valor eliminado "chat".

Errores habituales

ErrorCausaSolución
unexpected status 401 Unauthorized: Missing bearerLa variable que indica env_key no está definida o está mal escritaComprueba que KIMISEEK_API_KEY sea visible en el shell actual
unexpected status 404 Not FoundA base_url le falta /v1, o la pasarela no tiene /v1/responsesAñadir /v1 y leer el cuerpo del error; si falta Responses, usar una pasarela o capa de conversión compatible
stream disconnected before completionEl stream se cortó: proxy local, pasarela corporativa o timeoutRevisa la configuración del proxy HTTP y reintenta en otra red
model not foundmodel tiene un nombre que no es un alias, o el id está retiradoUsa el id completo del catálogo, por ejemplo deepseek-v4-pro-0813

Hay más errores de nivel de protocolo en la tabla de errores.

Coste

El uso de Codex es intensivo en entrada: cada turno reenvía el contexto. DeepSeek V4 Pro se factura en CNY por millón de tokens, en dos franjas:

FranjaEntradaEntrada en cachéSalida
Off-peak¥4.5¥0.45¥13.5
Peak¥9¥0.9¥27

La franja peak cuesta exactamente el doble. Si agrupas los refactorizados grandes en horas off-peak, la factura se reduce a la mitad. Los precios en vivo de cada modelo están en la página de precios, que lee directamente la configuración del catálogo de modelos.

Versiones y verificación

Configuración comprobada con Codex CLI 0.154.0 el 2026-10-26. Consulta la referencia oficial de configuración para los protocolos admitidos.

Preguntas frecuentes

Con una pasarela así, ¿sigo necesitando un puente como Codex-Bridge?

No. Un puente existe para traducir peticiones Responses a Chat Completions en local, pensado para pasarelas que solo hablan chat completions. KimiSeek implementa /v1/responses por sí mismo, así que un puente solo añade un salto más y otro sitio donde fallar.

¿Por qué base_url tiene que incluir /v1?

Porque Codex concatena: base_url + "/responses". Si escribes https://api.kimiseek.app, la petición va a https://api.kimiseek.app/responses, que es una página web y no una API.

¿El Codex actual todavía admite wire_api = "chat"?

No. Las versiones actuales rechazan ese valor al arrancar. Usa responses; un upstream que solo ofrece Chat Completions necesita una pasarela compatible o una capa de conversión.

¿Puede una misma key servir para Claude Code y para Codex?

Sí. Las keys son a nivel de cuenta; los clientes simplemente llaman a la misma key por rutas de protocolo distintas. Mira la guía de Claude Code.