El problema fundamental que aborda este análisis es la opacidad y la variabilidad del consumo de recursos computacionales, específicamente tokens, en sistemas de inteligencia artificial generativa basados en Large Language Models (LLMs) cuando se utilizan en configuraciones de agentes de codificación. A medida que los LLMs se integran más profundamente en flujos de trabajo de desarrollo de software, la eficiencia en el uso de tokens se convierte en un factor crítico que impacta directamente en los costos operativos, la latencia y la capacidad de mantener un contexto de trabajo prolongado. Este estudio se enfoca en cuantificar estas diferencias entre dos implementaciones de agentes, Claude Code y OpenCode, para desmitificar el 'costo oculto' de la orquestación de LLMs.
La relevancia de este problema es creciente en la era de la IA generativa, donde los modelos son cada vez más capaces pero también más 'hambrientos' de tokens. La gestión ineficiente de tokens no solo eleva los costos de API, sino que también reduce el 'context window' disponible para la lógica de negocio real, forzando a los modelos a resumir o descartar información relevante, lo que puede degradar la calidad de la salida. Comprender la economía de tokens es esencial para diseñar arquitecturas de agentes de IA sostenibles y eficientes a escala de producción.
Arquitectura del Sistema
La arquitectura de medición empleada es un proxy de logging intercalado entre el agente de codificación (Claude Code u OpenCode) y el endpoint del modelo LLM. Este proxy intercepta y registra dos tipos de datos por cada solicitud: el payload JSON exacto enviado por el agente (incluyendo bloques de sistema, esquemas de herramientas y mensajes) y el bloque de uso devuelto por la API del modelo (que detalla tokens de entrada, escrituras de caché, lecturas de caché y tokens de salida). Esta configuración permite una 'ground truth' tanto del contenido enviado como de los recursos facturados.
Los agentes de codificación, Claude Code y OpenCode, operan con una arquitectura basada en prompts de sistema que definen su comportamiento, esquemas de herramientas que describen las capacidades que pueden invocar (ej. lectura/escritura de archivos, ejecución de scripts), y el prompt del usuario. Claude Code tiende a incluir un conjunto más amplio de herramientas y un 'scaffolding' de mensajes inicial más voluminoso, mientras que OpenCode mantiene una configuración más minimalista. La interacción entre el agente y el LLM sigue un patrón de solicitud-respuesta, donde el agente construye un prompt que incluye el contexto de la conversación, las instrucciones del sistema y las herramientas disponibles, y el LLM responde con texto o invocaciones de herramientas. La gestión de caché de prompts es un componente crítico, donde el LLM intenta reutilizar prefijos de prompt idénticos para reducir costos, pero la estabilidad de estos prefijos varía significativamente entre los agentes.
Flujo de Medición de Tokens
- 1 Agente de Codificación Genera solicitud (prompt, herramientas, contexto)
- 2 Proxy de Logging Captura payload JSON exacto de la solicitud
- 3 Proxy de Logging Reenvía solicitud al endpoint del modelo LLM
- 4 Endpoint del Modelo LLM Procesa solicitud y genera respuesta
- 5 Endpoint del Modelo LLM Devuelve respuesta con bloque de uso (tokens, caché)
- 6 Proxy de Logging Captura bloque de uso de la respuesta
- 7 Proxy de Logging Registra payload y uso en cadena de auditoría
- 8 Agente de Codificación Recibe respuesta y continúa la tarea
| Capa | Tecnología | Justificación |
|---|---|---|
| observability | Custom Logging Proxy | Interceptor de tráfico para capturar payloads de solicitud y bloques de uso de respuesta, proporcionando datos de 'ground truth' para el análisis de tokens. |
| messaging | HTTP/JSON | Protocolo de comunicación entre los agentes de codificación y el endpoint del modelo LLM, utilizado para enviar prompts y recibir respuestas. |
| compute | Large Language Models (LLMs) | Motores de inferencia que procesan los prompts generados por los agentes y producen las respuestas, facturando por el uso de tokens. claude-sonnet-4-5, claude-fable-5, claude-opus-4-8 |
| orchestration | Claude Code / OpenCode | Entornos de agente de codificación que orquestan la interacción con los LLMs, gestionan el contexto y las herramientas, y generan los prompts. Versiones 2.1.207 y 1.17.18 respectivamente |
Trade-offs
Ganancias
- ▲ Capacidad de batching de llamadas a herramientas (Claude Code)
- ▲ Menor consumo de tokens base (OpenCode)
- ▲ Mayor estabilidad de caché (OpenCode)
Costes
- ▲▲ Mayor consumo de tokens base (Claude Code)
- ▲▲ Ineficiencia de caché por reescrituras (Claude Code)
- ▲ Mayor número de solicitudes HTTP en tareas secuenciales (OpenCode)
- ▲▲ Mayor consumo de tokens por subagentes (Claude Code)
{
"system": [
{"type": "text", "text": "You are OpenCode, the best coding agent..."},
{"type": "tool_code", "text": "// Tool definitions..."}
],
"tools": [
{"name": "read_file", "description": "Reads content...", "input_schema": {...}}
],
"messages": [
{"role": "user", "content": "Reply with exactly: OK"}
]
}Fundamentos Teóricos
Este análisis se conecta directamente con los principios de eficiencia computacional y la gestión de recursos en sistemas distribuidos, un tema recurrente en la informática desde los primeros días de la computación. Aunque los LLMs son una tecnología relativamente nueva, los desafíos de optimización de costos y rendimiento resuenan con trabajos clásicos sobre la eficiencia de los algoritmos y la gestión de memoria.
Conceptos como la 'localidad de referencia' y la 'eficiencia de caché', fundamentales en la arquitectura de computadoras y sistemas operativos (ej. papers de David Patterson sobre diseño de procesadores y caché), son directamente aplicables a la gestión de prompts en LLMs. La ineficiencia de Claude Code en la reescritura de caché, por ejemplo, es análoga a un sistema que constantemente invalida su caché, incurriendo en penalizaciones de rendimiento y costo. La optimización del 'context window' puede verse como una forma de 'memory management' en el ámbito de los LLMs, donde cada token consume una porción de un recurso limitado. La idea de 'bootstrapping' y 'overhead' en la inicialización de agentes también se relaciona con el costo de arranque de procesos y servicios en sistemas operativos y distribuidos, un tema explorado en trabajos sobre microkernels y arquitecturas de servicios.