Este post esta hecho artesanalmente, 100% escrito por alguien que puede ser considerado un ser humano, palabra por palabra como un salvaje
Esta época nos exige cambiar constantemente para poder vivir, hay cosas que nunca deberían cambiar, cosas a las que deberíamos ser fieles. Al menos a mi parecer algunas de ellas son: a uno mismo, a tus principios, tu pokémon inicial, a tu pareja (saludos a mi esposa) y a tu equipo fútbol (¡¡¡Aguante talleres!!!). Hay que ser fiel a muchas cosas pero no a tus herramientas de AI.
En programación esto no es nuevo, por lo regular usamos muchos frameworks, lenguajes, plataformas de cloud, etc. Probablemente esto suene obvio (espero que si) pero hay que dejarlo claro "En el mundo tech hay que ser poliamoroso", estoy hablando en un sentido de herramientas obviamente, bueno si llegaste a esta parte ya pasaste el bait y podemos continuar XD.
Contexto humano
En donde trabajo usamos Claude Code como nuestra herramienta principal de desarrollo, preparamos un harness basado en lo que puede hacer Claude y por mucho tiempo (4 meses) eramos felices así.
Claude Code Patrociname
Todo cambio cuando la nación del fuego atacó ... digo, cuando empezamos a ver algunos detalles en algunos modelos de Claude (no voy a decir nada para no quemar a Opus), sumado a que la complejidad de un producto crece, consumes mas tokens y el costo de tratar de aumentar tu budget es rídiculo (es mas barato tener otra cuenta que aumentar tu consumo).
No me fui, tu me descuidaste
No estoy diciendo que Claude lo hace mal pero aún estamos aprendiendo, todos incluidos ellos. Los modelos al ser no deterministas es complicado decir que siempre son mejores que otros ya que mucho depende del entrenamiento y de lo que uno como usuario busque.
El cambio de un modelo o agentic harness puede provocar un huracán en tu monorepo - Teoría del caos
Hay ciertas preguntas que a veces me hago y no me dejan dormir, como si voy a vivir lo suficiente para ver la saga de zeus o encontrar el One Piece. También en cuestiones de AI ¿Qué pasa si Claude/Codex se cae?, ¿Qué pasa si me quedo sin tokens?, ¿Qué pasa si el modelo se degrada?, ¿Mi semana laboral acaba si me quedo sin tokens aunque sea lunes?.
Para dar solución a estas preguntas una de las tantas respuestas es "El poliamor".
Poliamor agéntico
Solo hay que tenes mas herramientas. Listo aquí se terminó el post, gracias por leer.
Obviamente nunca es tan fácil, hay que considerar muchas cosas cuando hablamos de tener multiples herramientas, especialmente cuando son Agentes para desarrollo de software.
Con cada nuevo release pasamos del amor al odio, de "esto es lo máximo" a "esto es lo peor que he visto y eso que vi la nueva trilogía de star wars".
Hay que considerar muchas cosas al momento de usar múltiples herramientas ya que lo que da verdadero valor es el conocimiento particular que agregas al agente. Archivos de contexto, MCPs, skills, sub-agentes, configuraciones, son solo algunas de las cosas que usa el agente para poder trabajar. Son cosas que tienen en común los agentes pero no siempre usan la misma sintaxis, no siempre se ubican en lugares similares, no siempre se ejecutan en el mismo environment, etc. Hay algunas cosas que se pueden resolver con un symlink y ya pero hay otras que no.
Ejemplo, Codex a mi parecer se esta yendo por el camino del estándar y eso esta genial (Codex patrociname), yo soy fan del AGENTS.md pero la realidad es que uso mas Claude en mi día a día.
Es muy normal el querer tener alternativas y usar múltiples agentes, ya sea por que se te agotan los tokens o sabes que otro modelo es mejor para cierto tipo de tareas. El problema rádica en que la calidad de lo que se te entrega se ve afectada y el consumo de tokens también por el hecho de que el harness que tienes para uno es diferente al otro.
Eso tampoco esta mal, porque lo génerico a veces apesta y para sacarle provecho al máximo a una herramienta a veces toca duplicar archivos, la idea es que tengas conocimiento de ello para poder tomar la mejor decisión.
El enfoque que tomamos fue tener una sola fuente de la verdad y estrategias para procesar ciertos elementos de acuerdo al output que necesitemos.
Esto es muy útil porque manejamos Claude Code y Codex como herramientas de desarrollo y strands para el desarrollo de agentes, entonces estas herramientas se reutilizan.
No todo es tan fácil, esta solución no solo requiere de scripts y templates. También requiere de skills que expliquen como actualizar el contexto y que el propio agente sea conciente de esto (las replicamos con los scripts de la misma estrategia).
Esto resuelve el problema de la estructura (esto es un trabajo de arquitectura), otro problema al que nos enfrentamos es el uso de piezas de software que son propiedad del ecosistema del agente y como se invocan de manera explicita en el código. Esto se resuelve con el templating y el registro de herramientas junto con su propósito, con scripts hacemos el templating y el agente puede ayudarnos a definir las herramientas equivalentes o en el peor de los casos replicarlas.
Este framework en el que estoy trabajando también tiene una característica que hay algunas cosas que no pueden ser exportables, esto me es útil para saber que cosas puedo o no exportar para que sean usadas por strands porque el environment donde este se ejecuta es diferente al de Claude Code y Codex.
Suena a mucho trabajo ... y lo es, pero así es el software, así es esta era de agentes, ¿esto no lo podría hacer un agente?, la respuesta es si ... cuando tu sistema es pequeño porque hacerlo 100% con tu agente va a consumir muchos muchos tokens y no siempre obtendrás lo deseado.
Esto esta lejos de ser perfecto, posiblemente cambie en el futuro, no lo se, no quiero hacer sobre ingeniería pero tampoco quiero que sea 0. Son problemas que pudiera o no tener, pero lo importante es seguir adelante y hacer lo mejor que podemos para que los agentes trabajen como se debe.
Concluyo con esta frase que me hace mucho sentido
Se fiel a tu pasión para resolver problemas. Tu arquitectura, tu trabajo, tus proveedores cloud y tus agentes pueden cambiar, pero tu pasión nunca debe claudicar - Platón
Top comments (0)