El artículo realiza un análisis técnico profundo del código fuente filtrado de Claude Code (v2.1.88) del 31 de marzo de 2026, considerándolo un caso valioso que revela la arquitectura de ingeniería de agentes de IA de vanguardia.
Autor del artículo, fuente: Max
Hoy (31 de marzo de 2026), Anthropic volvió a exponer el código fuente completo del frontend y del cliente de su última versión de Claude Code (v2.1.88) en el repositorio npm debido a un error básico en el proceso de empaquetado.
Un usuario publicó un archivo cli.js.map no eliminado, que permitió recuperar directamente aproximadamente 1900 archivos y más de 510,000 líneas de código TypeScript nativo.
Para Anthropic, esto es otro grave incidente de OpSec tras la filtración de la documentación del modelo Mythos hace unos días.
Pero para los desarrolladores y investigadores de la capa de aplicaciones de modelos grandes, este código fuente es un libro blanco de arquitectura de ingeniería de AI Agent de vanguardia, completamente abierto y de un valor extremadamente alto.
Aparte de las controversias sobre cumplimiento y eventos de filtración, dediqué algo de tiempo a analizar profundamente este código fuente localmente.
Si no lo ves como un chisme, sino como un caso de arquitectura de asistente de programación AI de producción, contiene numerosas decisiones de ingeniería que rompen con el pensamiento convencional.
A continuación, se presenta una descomposición técnica detallada de la arquitectura subyacente, el mecanismo de programación, el sistema de memoria y las estrategias de seguridad de Claude Code desde una perspectiva objetiva.
El artículo es extenso y está dirigido a profesionales que trabajan en AI Infra, desarrollo de Agentes y que tienen interés en la arquitectura de la capa de aplicaciones de modelos grandes.
PARTE.01 No es solo una herramienta CLI
Del estructura del directorio (aproximadamente 40 módulos de primer nivel bajo src/), se puede ver que la complejidad de Claude Code supera con mucho la de los agentes monolíticos convencionales de código abierto disponibles actualmente en el mercado.

Su selección de tecnología es muy práctica y se enfoca en la experiencia de interacción con el usuario final:
El lenguaje es TypeScript, el entorno de ejecución seleccionado es Bun con un rendimiento más agresivo, el marco CLI utiliza Commander y, sorprendentemente, la capa de renderizado terminal emplea React + Ink.
¿Por qué usar React para una herramienta de línea de comandos?
La respuesta se encuentra en el archivo source code screens/REPL.tsx (hasta 5005 líneas).
En escenarios de salida en streaming de modelos grandes y ejecución concurrente de múltiples herramientas, la gestión del estado de la interfaz de usuario se vuelve extremadamente compleja (por ejemplo, renderizar simultáneamente el proceso de pensamiento, barras de progreso de llamadas a herramientas, vista previa de Diff de código, etc.).
Utilizar React declarativo junto con un Store personalizado de estilo minimalista Zustand (state/store.ts) es la mejor práctica de ingeniería para manejar este tipo de actualizaciones locales frecuentes.
En cuanto al modo de funcionamiento, el sistema está estrictamente dividido en dos formas:
Modo REPL interactivo: interfaz de terminal frontal impulsada por Ink, diseñada principalmente para desarrolladores humanos.
Modo sin interfaz/SDK (clase QueryEngine): interfaz de usuario completamente eliminada, con soporte para salida de flujo JSON. Esto prepara el terreno para integrarlo como motor subyacente en IDEs (como Cursor) o flujos de CI/CD.
El proceso de inicio del sistema también se optimizó al máximo en paralelo.
En main.tsx, operaciones intensivas en E/S como la lectura de configuración (MDM Settings) y la preobtención de claves de Keychain se ejecutan en procesos secundarios, en paralelo con el proceso de carga del módulo principal de ~135 ms; esta exigencia milisegundo a milisegundo sobre la latencia de inicio permea toda la base de código.
PART.02 Ingeniería de Prompt Cache (caché de prompts)
Esta es la parte más técnica de todo el código fuente y la barrera fundamental que diferencia la experiencia de Claude Code de las aplicaciones convencionales con envoltura.
Actualmente, las herramientas de Agent aún están concatenando de manera simple y brusca el System Prompt y el historial de conversaciones al procesar contextos largos.
En el módulo central de interacción services/api/claude.ts de Claude Code (de 3419 líneas), la composición de las indicaciones se optimiza hasta el nivel de byte.
Como se sabe, el mecanismo de caché de indicaciones de Anthropic utiliza coincidencia de prefijos (Prefix Matching).
Para maximizar la tasa de aciertos en la caché, Claude Code ha diseñado una arquitectura de caché segmentada cuidadosamente:
Sección estática (almacenable en caché globalmente): generada por systemPromptSection(), incluye la presentación de la identidad del modelo ("You are Claude Code..."), reglas de seguridad a nivel de sistema, restricciones de estilo de código, guías básicas para el uso de herramientas, etc. Esta sección permanece casi invariable durante todo el ciclo de vida de la sesión.
Línea divisoria dinámica: En el código fuente se codificó un marcador especial SYSTEM_PROMPT_DYNAMIC_BOUNDARY.
Sección dinámica (caché por sesión / sin caché): contiene datos de alta frecuencia de cambio, como información del directorio de trabajo actual (CWD), estado de Git, instrucciones de MCP (Model Context Protocol) y configuración del usuario.

Y para evitar que pequeños cambios en el Prompt causen fallos en la caché, el sistema realiza una gran cantidad de medidas de respaldo que parecen redundantes:
- Orden determinista: La descripción de las herramientas enviada al modelo grande se ordena estrictamente alfabéticamente según el prefijo de herramienta incorporado + sufijo de herramienta MCP.
- Hash path mapping: La ruta del perfil no utiliza UUID aleatorios, sino un valor hash basado en el contenido, evitando así la invalidación de la caché por rutas diferentes en cada inyección.
- Estado externo: Incluso la lista actual de agents disponibles se ha eliminado de la descripción de la herramienta y se ha trasladado a los archivos adjuntos del mensaje. Según los comentarios en el código fuente, este solo cambio reduce el consumo de tokens de creación de caché en aproximadamente un 10.2%.
Todo esto refleja la realidad actual de la industria: en esta etapa, el desarrollo excelente de capas de aplicaciones de IA consiste esencialmente en explotar de manera codiciosa y precisa el valor de los sistemas de caché de API.
PART.03 Herramientas y ejecución simultánea por secuencias
Claude Code incluye más de 40 herramientas (que abarcan lectura y escritura de archivos, ejecución de Bash, rastreo web, etc.), y su arquitectura de sistema de herramientas utiliza un patrón fábrica altamente modular (Factory Pattern).
Cada herramienta hereda de la interfaz base Tool y debe implementar métodos como checkPermissions(), validateInput() e isConcurrencySafe() (si es seguro para concurrencia).
Mecanismo de ToolSearch cargado bajo demanda: cuando el número de herramientas supera un umbral determinado, incluir las descripciones de todas las herramientas en el Prompt tendría un costo de tokens inaceptable.
El código fuente muestra una estrategia elegante llamada ToolSearch: las herramientas no esenciales (como ciertos plugins de análisis específicos) se marcan como defer_loading: true.

El modelo no puede ver las definiciones específicas de estas herramientas en el prompt actual, solo sabe que existe una herramienta ToolSearch. Cuando el modelo considere que necesita capacidades adicionales, debe llamar primero a ToolSearch para cargar dinámicamente la configuración de la herramienta correspondiente.
StreamingToolExecutor: Para mejorar la eficiencia de ejecución, el sistema admite llamadas simultáneas a herramientas.
El coordinador (toolOrchestration.ts) dividirá las solicitudes de llamada a herramientas devueltas por el modelo grande en lotes concurrentes y lotes en serie.
Las herramientas seguras para concurrencia (como leer simultáneamente múltiples archivos no relacionados o realizar búsquedas en red en paralelo) se activarán en paralelo, mientras que las herramientas no seguras para concurrencia (como modificar secuencialmente el mismo archivo de código) se ejecutarán estrictamente en serie.
Las herramientas para conjuntos de resultados grandes (como la búsqueda global con grep) tienen un presupuesto maxResultSizeChars; el contenido que excede este límite se trunca directamente y se almacena en un archivo temporal local, devolviendo solo un resumen de vista previa al LLM para evitar que resultados excesivamente grandes colapsen la ventana de contexto.
Mecanismo Fork para resolver la contaminación del contexto
El agente monolítico actual tiene un defecto fatal:
Al realizar tareas complejas (por ejemplo, diagnosticar errores entre archivos), el modelo puede leer repetidamente archivos incorrectos o intentar comandos erróneos; este proceso de prueba y error genera un gran volumen de contexto basura que contamina rápidamente la conversación principal, provocando que el modelo sufra divisiones mentales o olvide el objetivo inicial en inferencias posteriores.
Claude Code introduce el complejo modo coordinador (Coordinator Mode) y el mecanismo de subagente bifurcado (Fork Subagent) para resolver este problema.

Después de habilitar el modo coordinador en las variables de entorno, el sistema se reestructurará como una arquitectura Coordinator-Workers:
- Coordinador: Se le retiró el permiso para operar directamente archivos, conservando únicamente las herramientas Agent (agente derivado), SendMessage y TaskStop. Su único trabajo es planificar el flujo de trabajo (Investigación → Síntesis → Implementación → Verificación).
- Workers (ejecutores): se derivan con la descripción específica de las herramientas.
Lo más admirable es su mecanismo de herencia de bifurcación.
Cuando se necesita realizar una exploración de código a gran escala, el Coordinator bifurca un Explore Agent.
Este sub-agente heredará la caché de la conversación principal (comparte la caché de Prompt para reducir costos), pero sus acciones de exploración posteriores y la lectura de archivos basura se realizarán completamente dentro de su contexto aislado.
Después de finalizar la exploración, el sub-Agente solo necesita enviar las conclusiones clave sintetizadas (Synthesis) al contexto principal del Coordinator mediante el formato XML específico .
Este diseño de uso único y solo con resultados es una de las mejores prácticas actuales de la industria para manejar la colaboración compleja de múltiples agentes en textos largos.
Este diseño de uso único y solo con resultados es una de las mejores prácticas actuales de la industria para manejar la colaboración compleja de múltiples agentes en textos largos.
PARTE.05 Superación del mecanismo concurrente de Agent Swarm monolítico
Además del mecanismo de Fork serial utilizado para resolver la contaminación de contexto, el código fuente muestra una arquitectura concurrente de múltiples Agentes más ambiciosa: el clúster Swarm (Teammate).
Esta lógica está principalmente oculta en los directorios utils/swarm/ y tasks/.
El sistema admite un tipo de tarea llamado in_process_teammate.
Bajo esta arquitectura, el proceso principal puede despertar simultáneamente varios Agentes (llamados Teammate) para ejecutar diferentes tareas.
Sin embargo, al ejecutar múltiples agentes en paralelo en un entorno CLI, se enfrentan dos desafíos de ingeniería fatales: conflictos de ventanas de permisos y confusión en el renderizado de la interfaz de usuario.
La solución de Anthropic es extremadamente elegante:
- Puente de permisos Leader (permissionSync.ts): Ninguno de los subprocesos Teammate puede solicitar permisos directamente al usuario mediante ventanas emergentes. En su lugar, redirigen las solicitudes de permiso a través de un canal interno al Leader Agent del proceso principal, que gestiona de forma unificada la拦截 de seguridad y la confirmación del usuario en la terminal principal.
- Automatización del diseño de la terminal: Para permitir a los usuarios monitorear claramente el estado de funcionamiento de múltiples Agentes en paralelo, el código fuente integra directamente instrucciones AppleScript para iTerm2 y Terminal.app. Al crear un nuevo Teammate, el sistema automáticamente divide los paneles de la terminal (Split Pane) y asigna una ventana de salida independiente a cada Agente secundario.
Esto marca la transición oficial de la IA desde el "pensamiento monolítico" hacia la "colaboración concurrente en grupo".
PART.06 Dream (Sueño) Arquitectura de Memoria
Hoy en día, con el auge del RAG (Generación Mejorada por Recuperación), casi todos los productos de IA integran bases de datos vectoriales (Vector DB).
Pero sorprendentemente, el sistema de memoria de Claude Code (módulo memdir/) es extremadamente retro y práctico, ya que se basa completamente en el sistema de archivos local.
Su arquitectura consta de un archivo central MEMORY.md (que actúa como índice de alto nivel, limitado a un máximo de 200 líneas / 25 KB) y múltiples archivos temáticos en formato Frontmatter.
La memoria se divide cuidadosamente en cuatro categorías: User, Feedback, Project, Reference.
Lo más interesante es el modo asistente KAIROS oculto en el código fuente.
Este es un modo daemon (en segundo plano) que aún no se ha lanzado oficialmente.
En el modo KAIROS, el sistema de memoria ya no es simplemente una actualización de índice, sino que adopta un modelo de adición similar al registro humano (escritura en logs/YYYY/MM/YYYY-MM-DD.md).
Durante la noche o en momentos de inactividad, se activa en segundo plano un agente de tarea fuera de línea llamado Dream (soñar).

La responsabilidad de este agente es resumir y destilar los registros de bitácora del día, y luego extraerlos y consolidarlos en archivos estructurados de temas a largo plazo.
Este mecanismo de integración asincrónica desde registros a corto plazo hasta memoria a largo plazo no solo evita el problema de precisión en la recuperación de vectores, sino que también representa una dirección clara hacia asistentes de IA en el extremo que son siempre activos y aprenden continuamente.
PARTE.07 Consolidación de permisos y seguridad
Otorgar a la IA permisos para ejecutar comandos Shell locales y modificar archivos es una espada de doble filo.
Las ventanas emergentes frecuentes que solicitan confirmación del usuario destruyen por completo la experiencia automatizada, mientras que la ejecución automática sin restricciones puede provocar el colapso del sistema (por ejemplo, la ejecución accidental de rm -rf).
Claude Code utiliza una arquitectura de convergencia de permisos en múltiples capas:
Desde el sandbox de archivos/redes basado en @anthropic-ai/sandbox-runtime hasta la interceptación codificada para operaciones peligrosas específicas (como git push --force), pasando por la validación a nivel de herramientas.

Pero lo más destacable es su componente denominado Auto Mode Classifier (yoloClassifier.ts).
Cuando el usuario activa el modo automático, el sistema no utiliza expresiones regulares rígidas para evaluar el riesgo de los comandos, sino que emplea un mecanismo de consulta lateral (Side Query).
El sistema llamará en segundo plano un LLM más pequeño y económico con una transcripción resumida de la conversación actual y el comando Bash que se ejecutará inmediatamente, para que este modelo secundario genere una decisión de Allow o Deny.
Además, el sistema internamente incluye un Denial Tracking basado en umbrales; cuando las herramientas automáticas son rechazadas con frecuencia, el sistema se degrada de forma elegante y vuelve al modo Prompting para solicitar la intervención humana.
Este sistema de permisos dinámicos, que utiliza una pequeña IA para regular una gran IA, es mucho más flexible que las reglas estáticas de bloqueo tradicionales.
PARTE.08 Algunos pequeños easter eggs
Finalmente, los numerosos Feature Flags (como VOICE_MODE, SSH_REMOTE, etc.) y las comprobaciones de variables de entorno como process.env.USER_TYPE === 'ant' en el código fuente nos muestran el doble estándar que aplican las grandes empresas en las pruebas internas y en el lanzamiento externo.
Para empleados internos de Anthropic (solo Ant), las normas de código inyectadas por el sistema son extremadamente estrictas, incluso obsesivas:
No agregues funciones sin autorización, si no se pide, no reestructures, tres líneas de código similares son mejores que una abstracción prematura, por defecto no escribas comentarios a menos que el WHY sea extremadamente poco claro, informa fielmente si fallan las pruebas.
Y para la construcción externa pública, las instrucciones del sistema son mucho más suaves: ve directamente al punto, prueba el método más sencillo y mantén la explicación lo más concisa posible.
Este contraste indica que los límites del comportamiento de los modelos grandes dependen en gran medida de la tendencia de las instrucciones codificadas directamente.
Es importante destacar que el código incluye dos módulos interesantes.
Modo infiltrado (Undercover Mode):
Esta es una función controvertida en la comunidad de seguridad.
Para el escenario en el que los empleados trabajan en repositorios de código abierto o públicos, el sistema activa este modo de forma predeterminada y no se puede desactivar obligatoriamente. Este modo requiere explícitamente en el Prompt que el modelo no revele su identidad ("Do not blow your cover") y elimina obligatoriamente cualquier disclaimer o rastro de identificación generado por IA.
Desde una perspectiva de relaciones públicas, esto podría parecer falta de transparencia, pero respalda indirectamente el control absoluto del fabricante sobre el rol del modelo y la intervención en sus salidas.
Easter egg del Sistema de Amigo (mascota electrónica):
El código fuente contiene un sistema oculto de mascota electrónica (genera patos, búhos, etc.).

Para garantizar la aleatoriedad y la determinabilidad de la generación de mascotas, los ingenieros utilizaron el ID del usuario junto con el algoritmo pseudoaleatorio Mulberry32.
typescript
// 18 especies: duck, goose, blob, cat, dragon, octopus, owl, penguin, ...
// 5 niveles de rareza: common (60%), uncommon (25%), rare (10%), epic (4%), legendary (1%)
// Atributos: DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK
// Accesorios: corona, sombrero de copa, hélice, halo, mago, gorro de lana, patito pequeño
// Especial: 1% de probabilidad de shiny
El detalle más divertido es que el nombre en inglés de cierta especie animal coincide exactamente con el código interno extremadamente confidencial de Anthropic (quizás el más potente modelo Claude capibara filtrado hace dos días).
Para evitar la detección de palabras prohibidas por el escáner de código de cumplimiento, los ingenieros utilizaron String.fromCharCode() para ensamblar dinámicamente esta palabra.
Este enfoque geek y lleno de humor destaca de manera única en el código de infraestructura extremadamente serio.
PARTE.09 ¿Qué podemos aprender?
En un corto período de tiempo, Anthropic sufrió filtraciones consecutivas de la documentación técnica del modelo principal y del código fuente de la aplicación principal, lo que indica que realmente necesita realizar una profunda revisión de sus procesos internos. Pero la tecnología no es culpable; este código de 510,000 líneas es un excelente material didáctico para la industria.
Desde el diseño subyacente de Claude Code, ha terminado la era en la que las startups en la capa de aplicaciones de grandes modelos dependían únicamente de ensamblar prompts, acumular bases de datos vectoriales y envolver un simple bucle externo.
Las verdaderas barreras se construyen sobre el máximo ahorro en el costo de los tokens (optimización de Prompt Cache), la programación en flujo de múltiples máquinas de estado coordinadas (mecanismos Coordinator y Fork), el equilibrio entre la tolerancia a la intención del usuario y la intervención de seguridad (YOLO Classifier), y la integración profunda con el flujo de archivos del sistema operativo anfitrión.
Actualmente, los repositorios que han hecho fork de este código fuente en GitHub enfrentan el riesgo de ser retirados por una solicitud DMCA en cualquier momento.
Pero de cualquier manera, el nivel de ingeniería demostrado por Claude Code ha establecido una nueva referencia técnica para los productos de asistentes de IA en 2026.
Los profesionales deberían aprovechar esta oportunidad para examinar cuidadosamente y adoptar las mejores prácticas de ingeniería.
