"¿Por qué se me desconecta constantemente el modelo Claude en OpenCode?" — Este es el problema que más dolores de cabeza causa a los desarrolladores que utilizan OpenCode (ahora renombrado como Crush) para acceder a los modelos de Claude. La razón principal es muy sencilla: OpenCode utiliza el SDK nativo de Anthropic para invocar a Claude, mientras que muchos servicios proxy de API de terceros solo admiten el formato compatible con OpenAI; esta falta de coincidencia de formatos provoca errores frecuentes y desconexiones.
Valor principal: Al terminar de leer este artículo, comprenderás la arquitectura subyacente de la invocación de Claude en OpenCode, las 3 causas comunes de interrupción y la solución completa mediante el uso de la interfaz de formato nativo de Anthropic de APIYI.

¿Qué es OpenCode?: De OpenCode a Crush
OpenCode es un asistente de codificación de IA para terminal basado en el lenguaje Go, construido con el framework Bubble Tea para ofrecer una interfaz de usuario de terminal (TUI) elegante. El proyecto obtuvo más de 11,600 estrellas en GitHub y posteriormente fue integrado por el equipo de Charm, siendo renombrado como Crush (charmbracelet/crush, con más de 22,200 estrellas).
| Información del proyecto | Detalles |
|---|---|
| Nombre original | OpenCode (opencode-ai/opencode) |
| Nombre actual | Crush (charmbracelet/crush) |
| Lenguaje de desarrollo | Go |
| Interfaz | TUI (Bubble Tea) |
| Estrellas en GitHub | 22,200+ (Crush) |
| Proveedores de IA admitidos | Anthropic, OpenAI, Gemini, Groq, OpenRouter, xAI, Bedrock, Azure |
| Sistema de herramientas | Operaciones de archivo, Bash, Grep, Glob, LSP, MCP |
| Licencia de código abierto | MIT |
Diferencias clave entre OpenCode, Claude Code y Aider
| Característica | OpenCode/Crush | Claude Code | Aider |
|---|---|---|---|
| Soporte multi-proveedor | SDK nativo de 7+ proveedores | Solo Anthropic | Múltiples proveedores |
| Formato de API | Formato nativo de cada proveedor | Nativo de Anthropic | Principalmente compatible con OpenAI |
| Método de invocación de Claude | SDK nativo de Anthropic | SDK nativo de Anthropic | Formato compatible con OpenAI |
| Razonamiento extendido | Activación condicional (incluye palabra clave "think") | Soporte integrado | Depende del modelo |
| Soporte MCP | Sí | Sí | No |
| Interfaz de usuario | Interfaz gráfica TUI | CLI + TUI | CLI pura |
Diferencia clave: OpenCode utiliza el SDK nativo para cada proveedor de IA, en lugar de utilizar un formato unificado compatible con OpenAI. Esto significa que al invocar a Claude, se utiliza la API de mensajes nativa de Anthropic (/v1/messages), no la API de Chat Completions de OpenAI (/v1/chat/completions).
🎯 Consejo clave: Esta es la raíz del problema: si tu servicio proxy solo proporciona la interfaz
/v1/chat/completions, el SDK nativo de Anthropic de OpenCode no podrá realizar la invocación correctamente. APIYI (apiyi.com) admite tanto el formato compatible con OpenAI como el formato nativo de Anthropic, lo que puede resolver este problema por completo.
title: 3 razones fundamentales por las que Claude se interrumpe frecuentemente en OpenCode
3 razones fundamentales por las que Claude se interrumpe frecuentemente en OpenCode

Razón 1: Incompatibilidad de formato de API (la más común)
Esta es la causa raíz del 90% de los problemas que encuentran los usuarios.
Ruta de invocación de Claude en OpenCode:
OpenCode → Anthropic Go SDK → POST /v1/messages
↑ Usa el formato nativo de Anthropic
Muchos servicios proxy de API solo proporcionan:
Servicio proxy → Solo admite POST /v1/chat/completions
↑ Formato compatible con OpenAI
La estructura de las solicitudes en ambos formatos es completamente diferente:
| Comparativa | Nativo de Anthropic (/v1/messages) |
Compatible con OpenAI (/v1/chat/completions) |
|---|---|---|
| Endpoint | /v1/messages |
/v1/chat/completions |
| Cabecera de auth | x-api-key: sk-ant-xxx |
Authorization: Bearer sk-xxx |
| Formato de mensajes | messages: [{role, content: [{type, text}]}] |
messages: [{role, content: "text"}] |
| System prompt | system: "..." (campo de nivel superior) |
messages: [{role: "system", content: "..."}] |
| Invocación de herramientas | Tipo tool_use / tool_result |
Formato function_call / tool_calls |
| Respuesta en streaming | message_start, content_block_delta |
data: {"choices": [...]} |
| Pensamiento extendido | Soporte nativo para bloque thinking |
No soportado o requiere tratamiento especial |
Cuando OpenCode envía una solicitud en formato Anthropic a un endpoint que solo admite el formato de OpenAI, el servidor no puede analizar la solicitud y devuelve un error o corta la conexión.
Razón 2: Interrupción en la transmisión por streaming
OpenCode utiliza Messages.NewStreaming() del SDK de Anthropic para la respuesta en streaming. La secuencia de eventos durante la transmisión es:
ContentBlockStartEvent → ContentBlockDeltaEvent (múltiples) → ContentBlockStopEvent → MessageStopEvent
Si el servicio proxy de API no admite completamente el formato de streaming de Anthropic (por ejemplo, si no devuelve el evento thinking_delta o si el formato content_block_stop es incorrecto), el análisis de eventos de OpenCode fallará y se interrumpirá la conexión.
La lógica de reintento de OpenCode solo cubre los errores HTTP 429 (límite de tasa) y 529 (sobrecarga); otros códigos de error terminan la conexión inmediatamente sin reintentar. Esto significa que una respuesta 400/500 causada por un error de formato fallará al instante.
Razón 3: Diferencias de formato en el pensamiento extendido y la invocación de herramientas
OpenCode tiene una lógica de procesamiento especial para el pensamiento extendido de Claude:
- Se activa automáticamente cuando el mensaje del usuario contiene la palabra clave "think".
- Una vez activado, asigna el 80% de los
maxTokenscomo presupuesto de pensamiento. - La temperatura se fuerza a 1.0.
Si el servicio proxy no admite el formato nativo de bloque thinking de Anthropic, el contenido del pensamiento se perderá o provocará errores de análisis. Del mismo modo, el formato nativo tool_use / tool_result de Anthropic es totalmente distinto al formato function_call / tool_calls de OpenAI.
Solución: Uso de la interfaz API compatible con el formato nativo de Anthropic

Arquitectura de soporte de formato dual de APIYI
APIYI (apiyi.com) admite ambos formatos de API simultáneamente, permitiendo a los desarrolladores elegir según las necesidades de sus herramientas:
| Formato | Endpoint de solicitud | Herramientas compatibles | Integridad funcional |
|---|---|---|---|
| Nativo Anthropic | https://api.apiyi.com/v1/messages |
OpenCode/Crush, Claude Code | 100% completa |
| Compatible OpenAI | https://api.apiyi.com/v1/chat/completions |
Aider, Cursor, aplicaciones propias | Funciones básicas |
Opción 1: Configurar el formato nativo de Anthropic en OpenCode (Recomendado)
Dado que el proveedor de Anthropic en OpenCode no expone directamente la configuración de la URL base, es necesario establecerla mediante variables de entorno:
# Configurar la clave API de Anthropic (usando la clave de APIYI)
export ANTHROPIC_API_KEY="sk-tu-clave-APIYI"
# Configurar la URL base de Anthropic (apuntando a la interfaz nativa de APIYI)
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
# Iniciar OpenCode
opencode
O bien, configurarlo en el archivo .opencode.json:
{
"providers": {
"anthropic": {
"apiKey": "sk-tu-clave-APIYI"
}
},
"agents": {
"coder": {
"model": "claude-sonnet-4-6",
"maxTokens": 16000
},
"task": {
"model": "claude-haiku-4-5-20251001",
"maxTokens": 8000
}
}
}
Uso con variables de entorno:
# Añadir a .bashrc o .zshrc
export ANTHROPIC_API_KEY="sk-tu-clave-APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
De esta forma, OpenCode invocará https://api.apiyi.com/v1/messages a través del SDK nativo de Anthropic, conservando todas las funciones nativas: Prompt Caching, razonamiento extendido y llamadas a herramientas nativas.
Opción 2: Usar el formato compatible con OpenAI mediante Local Provider (Alternativa)
Si la opción 1 no funciona, puedes configurar APIYI como Local Provider en OpenCode:
# Configurar el endpoint local
export LOCAL_ENDPOINT="https://api.apiyi.com/v1"
export LOCAL_API_KEY="sk-tu-clave-APIYI"
{
"providers": {
"local": {
"apiKey": "sk-tu-clave-APIYI"
}
},
"agents": {
"coder": {
"model": "claude-sonnet-4-6",
"maxTokens": 16000
}
}
}
Nota: Esta opción utiliza el formato compatible con OpenAI (/v1/chat/completions), por lo que se perderán las siguientes funciones nativas:
- Prompt Caching (caché de indicaciones)
- Razonamiento extendido nativo (bloque de pensamiento)
- Formato de llamadas a herramientas nativas de Anthropic
💡 Sugerencia: Prioriza el uso de la opción 1 (formato nativo de Anthropic) para obtener la funcionalidad completa y la mejor estabilidad.
Al obtener tu clave en el panel de APIYI (apiyi.com), selecciona el grupo 【ClaudeCode】 para disfrutar de un 88% de descuento.
Guía completa para la invocación de la API de Claude en APIYI
Obtención y configuración de la clave API
| Paso | Acción | Descripción |
|---|---|---|
| 1. Obtener clave | Visita api.apiyi.com/token |
Página de gestión de tokens del panel |
| 2. Seleccionar token | Usa el predeterminado o crea uno nuevo | Al crear, elige el grupo 【ClaudeCode】 para obtener un 12% de descuento |
| 3. Registrar Base URL | https://api.apiyi.com |
Dirección de acceso unificada |
Dos formatos de solicitud compatibles
Formato 1: Formato nativo de Anthropic (Recomendado para OpenCode/Claude Code)
URL de solicitud: https://api.apiyi.com/v1/messages
import anthropic
client = anthropic.Anthropic(
api_key="sk-tu_clave_APIYI",
base_url="https://api.apiyi.com"
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
messages=[
{"role": "user", "content": "Escribe un algoritmo de ordenamiento rápido en Python"}
]
)
print(message.content[0].text)
Formato 2: Formato compatible con OpenAI (Recomendado para Aider/Cursor/aplicaciones propias)
URL de solicitud: https://api.apiyi.com/v1/chat/completions
import openai
client = openai.OpenAI(
api_key="sk-tu_clave_APIYI",
base_url="https://api.apiyi.com/v1"
)
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "user", "content": "Escribe un algoritmo de ordenamiento rápido en Python"}
]
)
print(response.choices[0].message.content)
Lista de modelos de Claude compatibles
Modelos principales más recientes (recomendados):
| ID del modelo | Serie | Posicionamiento | Escenarios de uso |
|---|---|---|---|
claude-opus-4-6 |
Opus | Razonamiento superior | Diseño de arquitectura compleja, análisis profundo |
claude-sonnet-4-6 |
Sonnet | Equilibrio de rendimiento | Programación diaria, revisión de código |
claude-haiku-4-5-20251001 |
Haiku | Respuesta rápida | Tareas simples, clasificación, extracción |
Modelos de razonamiento (activación forzada de pensamiento extendido):
| ID del modelo | Descripción |
|---|---|
claude-opus-4-6-thinking |
Opus + razonamiento forzado |
claude-sonnet-4-6-thinking |
Sonnet + razonamiento forzado |
claude-haiku-4-5-20251001-thinking |
Haiku + razonamiento forzado |
Los modelos de razonamiento y los modelos estándar son el mismo modelo base; la diferencia es que el modelo de razonamiento activa forzosamente el pensamiento extendido (thinking), generando un proceso de razonamiento más detallado, ideal para escenarios que requieren análisis profundo.
Ver código de invocación para pensamiento extendido en formato nativo de Anthropic
import anthropic
client = anthropic.Anthropic(
api_key="sk-tu_clave_APIYI",
base_url="https://api.apiyi.com"
)
# Usar modelo thinking, forzando el pensamiento extendido
message = client.messages.create(
model="claude-sonnet-4-6-thinking",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # Presupuesto de tokens para el pensamiento
},
messages=[
{"role": "user", "content": "Analiza la complejidad temporal de este código y optimízalo"}
]
)
for block in message.content:
if block.type == "thinking":
print(f"Proceso de pensamiento:\n{block.thinking}")
elif block.type == "text":
print(f"Respuesta final:\n{block.text}")
🚀 Inicio rápido: Visita
api.apiyi.com/tokenen APIYI para obtener tu clave,
elige el grupo 【ClaudeCode】 para disfrutar de un 12% de descuento.
Una sola clave admite tanto el formato nativo de Anthropic como el compatible con OpenAI,
adaptándose a todas las herramientas de codificación con IA líderes como OpenCode, Claude Code, Aider y Cursor.
Mejores formas de integración para herramientas de codificación con IA
| Herramienta | Formato de interfaz recomendado | Base URL | Modelo recomendado |
|---|---|---|---|
| OpenCode/Crush | Nativo Anthropic | https://api.apiyi.com |
claude-sonnet-4-6 |
| Claude Code | Nativo Anthropic | https://api.apiyi.com |
claude-sonnet-4-6 |
| Aider | Compatible OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Cursor | Compatible OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Cline (VS Code) | Compatible OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Aplicaciones propias (Python) | Cualquiera de los dos | Ver arriba | Elegir según necesidad |
Consulta rápida de configuración por herramienta
OpenCode/Crush:
export ANTHROPIC_API_KEY="sk-tu_clave_APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
Claude Code:
export ANTHROPIC_API_KEY="sk-tu_clave_APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
claude
Aider:
export OPENAI_API_KEY="sk-tu_clave_APIYI"
export OPENAI_API_BASE="https://api.apiyi.com/v1"
aider --model claude-sonnet-4-6
🎯 Gestión unificada: Con APIYI (apiyi.com), gestiona la invocación de API para todas tus herramientas de codificación con IA mediante una sola clave.
Admite más de 300 modelos, incluidos Claude, GPT y Gemini, con facturación y gestión centralizadas.
Preguntas frecuentes
Q1: ¿Qué hago si OpenCode muestra el error «agent coder not found»?
Este es el error más común en OpenCode e indica que no se ha encontrado una configuración válida del proveedor de IA. Verifica lo siguiente: 1) Que la variable de entorno ANTHROPIC_API_KEY esté configurada y sea válida; 2) Que el campo providers.anthropic.apiKey en .opencode.json sea correcto; 3) Que la clave tenga saldo disponible. Las claves obtenidas a través de APIYI en apiyi.com/token se pueden usar directamente sin necesidad de configuraciones adicionales.
Q2: ¿Por qué el formato nativo de Anthropic es más estable que el formato compatible con OpenAI?
Porque OpenCode utiliza el SDK oficial de Go de Anthropic para realizar las llamadas, el cual gestiona internamente el formato de eventos de streaming, la lógica de reintentos y el manejo de errores específicos de Anthropic. Al usar el formato compatible con OpenAI, se requiere una capa intermedia de conversión, durante la cual podrían perderse eventos críticos como thinking_delta o formatos de tool_use, provocando fallos en el análisis. El endpoint /v1/messages de APIYI (apiyi.com) admite el protocolo nativo de Anthropic de forma completa, por lo que no es necesaria ninguna conversión de formato.
Q3: ¿Qué diferencia hay entre los modelos «thinking» y los modelos normales? ¿Cuándo debo usarlos?
claude-sonnet-4-6 y claude-sonnet-4-6-thinking son el mismo modelo base. La versión "thinking" activa forzosamente el razonamiento extendido, lo que genera un proceso de pensamiento detallado. La versión normal no lo activa por defecto (en OpenCode, se activa automáticamente si el mensaje contiene la palabra clave "think"). Recomendación: usa la versión normal para tareas de programación cotidianas (es más rápida y ahorra tokens) y la versión "thinking" para diseños de arquitectura complejos o depuración.
Q4: OpenCode ha cambiado su nombre a Crush, ¿ha cambiado la forma de configurarlo?
La arquitectura central no ha cambiado; Crush hereda todo el código de OpenCode. El archivo de configuración puede haber pasado de .opencode.json a .crush.json (dependiendo de la versión), pero las variables de entorno se mantienen igual. La forma de configurar ANTHROPIC_API_KEY y ANTHROPIC_BASE_URL es exactamente la misma. Te recomendamos usar la versión más reciente de Crush para obtener una mejor estabilidad y más funcionalidades.

Resumen: Elige el formato de API correcto y Claude funcionará a la perfección en OpenCode
La causa principal de las interrupciones frecuentes de los modelos Claude en OpenCode/Crush es una falta de coincidencia en el formato de la API: OpenCode utiliza el formato nativo de Anthropic, mientras que muchos servicios proxy de API solo admiten el formato compatible con OpenAI.
La solución es muy clara:
- Utiliza un servicio de API que admita el formato nativo de Anthropic: el endpoint
/v1/messagesde APIYI. - Configura las variables de entorno correctas:
ANTHROPIC_BASE_URL=https://api.apiyi.com - Selecciona el modelo adecuado: usa
claude-sonnet-4-6para el día a día yclaude-sonnet-4-6-thinkingpara razonamiento profundo.
Te recomendamos gestionar todas las invocaciones del modelo para herramientas de programación con IA a través de APIYI (apiyi.com). Visita api.apiyi.com/token para obtener tu clave API, y selecciona el grupo 【ClaudeCode】 para disfrutar de un 12% de descuento. Una sola clave es compatible tanto con el formato nativo de Anthropic como con el formato compatible con OpenAI, adaptándose a todas las herramientas de programación con IA más populares del mercado.
📝 Autor del artículo: Equipo técnico de APIYI | APIYI apiyi.com – Plataforma de acceso unificado para más de 300 APIs de Modelos de Lenguaje Grande.
Referencias
-
Repositorio de GitHub de OpenCode (archivado): Código fuente y documentación del proyecto original.
- Enlace:
github.com/opencode-ai/opencode - Nota: Ha sido renombrado como Crush.
- Enlace:
-
Repositorio de GitHub de Crush: Proyecto sucesor en desarrollo activo.
- Enlace:
github.com/charmbracelet/crush - Nota: Versión más reciente mantenida por el equipo de Charm.
- Enlace:
-
Documentación de la API de Anthropic: Especificaciones del formato nativo de la API Messages.
- Enlace:
docs.anthropic.com/en/api/messages - Nota: Formato completo de solicitud y respuesta para el endpoint
/v1/messages.
- Enlace:
-
Documentación de APIYI: Guía de acceso a la API de Claude.
- Enlace:
apiyi.com - Nota: Admite tanto el formato nativo de Anthropic como el formato compatible con OpenAI.
- Enlace: