Docs

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_URL a https://api.helmcode.com/v1 no funciona — la petición llega con una forma que la API no entiende.

Hay dos caminos, y hacen cosas distintas:

CaminoQué consiguesQué cuesta
Delegar en OpenCodeClaude Code dirige; el trabajo del modelo corre en Helmcode a través de OpenCodeInstalar OpenCode. Nada más
Pasarela localClaude Code usa modelos de Helmcode como si fueran suyosUn 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:

  • run es el modo headless: hace la tarea, escribe la respuesta y sale.
  • -m toma el modelo como proveedor/modelo, donde el proveedor es el nombre que le diste en tu opencode.jsonhelmcode si seguiste nuestra página.
  • --agent plan deja 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 fichero adjunta ficheros concretos en vez de hacer que los busque.
  • -c continúa la última conversación de OpenCode, para dar seguimiento sin explicarlo todo otra vez.

Consejo: escribe una línea en el CLAUDE.md de tu proyecto del estilo “para revisar ficheros largos, usa opencode 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 run sale 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.3 y glm5.3-flash responden con normalidad por /v1/chat/completions, pero la traducción de LiteLLM a formato Anthropic los devuelve con el content vacío, así que Claude Code no enseña nada. Comprobado en litellm 1.101.0, dos veces por modelo. En este camino quédate con deepseek-v4-flash, qwen3.6 o gemma4, 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.