Claude Code
Claude Code es el agente de terminal de Anthropic. Es la única herramienta de esta sección que no se conecta directamente a Helmcode, y conviene entender por qué antes de pelearse con la configuración.
Aviso: no es un problema de tu key. Claude Code habla el formato de la API de Anthropic; Helmcode habla el de OpenAI. Son dos protocolos distintos, así que apuntar
ANTHROPIC_BASE_URLahttps://api.helmcode.com/v1no funciona — la petición llega con una forma que la API no entiende.
Hay dos caminos, y hacen cosas distintas:
| Camino | Qué consigues | Qué cuesta |
|---|---|---|
| Delegar en OpenCode | Claude Code dirige; el trabajo del modelo corre en Helmcode a través de OpenCode | Instalar OpenCode. Nada más |
| Pasarela local | Claude Code usa modelos de Helmcode como si fueran suyos | Un proceso extra corriendo en tu máquina |
Empieza por el primero. Es más simple y no monta infraestructura.
Camino 1 — delegar en OpenCode
Claude Code puede ejecutar comandos en tu terminal, y OpenCode sabe trabajar sin abrir su interfaz. Con eso basta: le pides a Claude Code, con palabras, que use OpenCode para una tarea, y el trabajo del modelo ocurre en Helmcode.
1. Configura OpenCode
Una vez, como explica su página.
2. Comprueba que responde sin interfaz
opencode run --agent plan -m helmcode/glm5.3-flash \
"Resume en tres líneas qué hace este repositorio."
Tres cosas sobre ese comando:
runes el modo headless: hace la tarea, escribe la respuesta y sale.-mtoma el modelo comoproveedor/modelo, donde el proveedor es el nombre que le diste en tuopencode.json—helmcodesi seguiste nuestra página.--agent plandeja a OpenCode en modo solo lectura. Sin eso arranca con su agente por defecto, que puede editar ficheros y ejecutar comandos.
3. Pídeselo a Claude Code
Dentro de una sesión de Claude Code, dilo tal cual:
Usa `opencode run --agent plan -m helmcode/glm5.3-flash` para revisar
src/parser.ts y dime qué casos no está cubriendo.
Claude Code ejecuta el comando, lee lo que responde OpenCode y sigue desde ahí. La primera vez te pedirá permiso para ejecutarlo.
Funciona bien para lo que es largo de leer y barato de resumir: revisar un fichero grande, hacer un primer borrador, resumir documentación, comparar dos versiones. Claude Code se queda con la coordinación y las ediciones finas.
Dos opciones que ayudan cuando le coges el gusto:
-f ficheroadjunta ficheros concretos en vez de hacer que los busque.-ccontinúa la última conversación de OpenCode, para dar seguimiento sin explicarlo todo otra vez.
Consejo: escribe una línea en el
CLAUDE.mdde tu proyecto del estilo “para revisar ficheros largos, usaopencode run --agent plan -m helmcode/glm5.3-flash”. Así no repites el comando cada sesión.
Dos contadores separados. Lo que hace Claude Code sale de tu suscripción de Anthropic; lo que hace
opencode runsale de tu key de Helmcode. Es justo lo que quieres si estás estirando la suscripción, pero conviene tenerlo claro cuando mires las cifras de consumo.
Camino 2 — una pasarela local
Si lo que quieres es que Claude Code mismo use modelos de Helmcode, hay que poner algo en medio que traduzca entre los dos formatos.
Necesitas Claude Code instalado, Python 3.10 o superior para la pasarela, y tu API key de Helmcode en HELMCODE_API_KEY.
1. Instala la pasarela
LiteLLM expone un endpoint /v1/messages en formato Anthropic y lo traduce al de OpenAI antes de reenviarlo.
pip install "litellm[proxy]"
Aviso: fija la versión que instalas en vez de seguir la última, y revisa las notas de la release antes de actualizar. Este proceso guarda tu API key.
2. Configura la pasarela
Crea un litellm.config.yaml donde te venga bien:
model_list:
- model_name: helmcode-coder
litellm_params:
model: openai/deepseek-v4-flash
api_base: https://api.helmcode.com/v1
api_key: os.environ/HELMCODE_API_KEY
- model_name: helmcode-fast
litellm_params:
model: openai/gemma4
api_base: https://api.helmcode.com/v1
api_key: os.environ/HELMCODE_API_KEY
general_settings:
master_key: sk-local-change-this
Aviso: la familia GLM no sobrevive a esta pasarela.
glm5.3yglm5.3-flashresponden con normalidad por/v1/chat/completions, pero la traducción de LiteLLM a formato Anthropic los devuelve con elcontentvacío, así que Claude Code no enseña nada. Comprobado en litellm 1.101.0, dos veces por modelo. En este camino quédate condeepseek-v4-flash,qwen3.6ogemma4, que llegan enteros.
El prefijo openai/ le dice a LiteLLM en qué formato hablar con Helmcode. Lo que va después del prefijo es el id del modelo exactamente como aparece en Modelos, y model_name es el nombre con el que lo verás desde Claude Code.
La master_key es una key que te inventas para tu pasarela local. No es tu key de Helmcode, y no debe serlo: esa solo la conoce el proceso de LiteLLM.
3. Arranca la pasarela
litellm --config litellm.config.yaml --port 4000
Déjala corriendo en su propia terminal.
4. Apunta Claude Code a la pasarela
export ANTHROPIC_BASE_URL="http://localhost:4000"
export ANTHROPIC_AUTH_TOKEN="sk-local-change-this"
export ANTHROPIC_MODEL="helmcode-coder"
claude
Usa ANTHROPIC_AUTH_TOKEN y no ANTHROPIC_API_KEY: es la variable que Claude Code manda como cabecera Authorization cuando la base URL no es la de Anthropic.
Si prefieres elegir el modelo por sesión, deja ANTHROPIC_MODEL fuera y arranca con claude --model helmcode-coder.
5. Comprueba que funciona
Con la pasarela levantada:
curl http://localhost:4000/v1/messages \
-H "Authorization: Bearer sk-local-change-this" \
-H "Content-Type: application/json" \
-d '{
"model": "helmcode-coder",
"max_tokens": 256,
"messages": [{ "role": "user", "content": "Di hola." }]
}'
Si eso responde, Claude Code también. Un error de autenticación aquí es ambiguo y conviene leerlo dos veces: o es la master_key que te inventaste, o es el id de Helmcode dentro de litellm_params, porque un id que no servimos también vuelve como 401 y no como un not-found.
Deja el max_tokens holgado aquí. Estos modelos razonan antes de contestar y el razonamiento sale del mismo presupuesto: con una cifra pequeña recibes una respuesta válida con el texto vacío y stop_reason: max_tokens, que parece un fallo y no lo es.
Existen pasarelas más pequeñas dedicadas solo a esto, como claude-code-proxy. La idea es la misma: un proceso local que recibe en formato Anthropic y reenvía a
https://api.helmcode.com/v1.
Modelo recomendado
Depende del camino, porque el modelo hace trabajos distintos en cada uno.
Delegando en OpenCode, el modelo recibe encargos sueltos y acotados, así que deepseek-v4-flash es el valor por defecto correcto — 1M de contexto y el razonamiento más profundo del catálogo. qwen3.6 sobra para resúmenes rápidos y vuelve antes.
Con la pasarela, la elección viene dada: deepseek-v4-flash. Es el único modelo de 1M de contexto que sobrevive a la traducción a formato Anthropic — la familia GLM vuelve vacía, como explica el aviso de arriba.
Problemas conocidos
- Al delegar, la salida de OpenCode cae en tu conversación. Si le pides que resuma algo enorme, lo que devuelva ocupa contexto en Claude Code. Pídele resúmenes, no volcados.
- Con la pasarela, la sesión entera pasa por tu máquina. Si matas el proceso, Claude Code deja de responder. No es un servicio: es algo tuyo que tiene que estar encendido.
- El comportamiento agéntico depende del modelo. Claude Code está afinado contra los modelos de Anthropic, y un modelo abierto puede usar sus herramientas peor. Esto solo afecta al camino de la pasarela: delegando, Claude Code sigue siendo Claude Code.
- Lo que depende de la cuenta de Anthropic no viaja. Cualquier función que dependa de su infraestructura no funciona contra otra base URL.
- El contexto se llena rápido. Una sesión de agente consume tokens mucho más deprisa que un chat. Vigila los límites de tu key en Rate limits y tu consumo en la consola.