angelmr
EN

Software Factories

100% escrito sin IA · Pangram

Mi visión de hacia dónde está yendo el software y el desarrollo agéntico. Hasta ahora hemos utilizado la IA como un ayudante, como haciendo pair programming con ella, pero con los últimos modelos, Fable, Astra, se empieza a desbloquear el poder llevar código agéntico a producción sin causar problemas, pues con Fable me he dado cuenta de que es el primer modelo capaz de crear código en el que realmente no cambiaría nada.
Hasta ahora, yo siempre podía mejorar algo: sobreingeniería, exceso de tests, sobrecomplicar las soluciones; siempre se podía sacar algo de sus PRs. Con Fable no me ocurre, es un modelo capaz de programar como un sénior. Eso sí, es carísimo: si tuvieras que pagar los precios de la API, te saldría más barato contratar a un desarrollador sénior en tu proyecto.

Con Sol es distinto. Su código no es tan limpio y bueno, pero si tienes un problema y en el prompt especificas la condición de salida, por ejemplo, “busca hasta que encuentres el problema”, no parará hasta que encuentre el problema, por muchos tokens u horas que le cueste. Es una herramienta realmente útil y se nota mucho la diferencia de nivel agéntico respecto a versiones anteriores. Antes tenías que decir “continúa”, “hazlo”; eso se acabó. Son mucho más autónomos: lo resolverán, lo testearán, crearán el commit, la rama, la PR e incluso esperarán comentarios de los review bots en la PR. Estamos alcanzando un nivel de autonomía y calidad en los modelos frontera que desbloquea nuevos horizontes, en este caso la viabilidad de las Software Factories.

Mucha gente se ha quedado mentalmente en lo que podían hacer los modelos hace unos meses, como un Opus 4.5, o modelos menos inteligentes como un Luna: código con exceso de complejidad, afirmaciones erróneas, sin verdadera seguridad para desplegar ese código a producción. Eso hace que delegues menos, porque no sabes aprovechar las capacidades de los modelos frontera.

Uno de mis proyectos es una software factory. Es la forma que encontré para resolver el cuello de botella y la falta de organización que tengo con mis ideas.
Mi objetivo es poder descargar mis ideas, organizarlas en proyectos y tener agentes que me ayuden a ir investigándolas y desarrollándolas.
Mi idea de una software factory no difiere mucho del desarrollo de software convencional, pero trata de ir delegando partes a sistemas autónomos.

Vista general de la factory https://factory.angelmr.dev

El proyecto está actualmente en desarrollo, pero ya está en uso por mí con dogfooding (desarrollándose a sí misma). No es open source, aunque quizás en algún momento lo haga, puesto que cada vez que desarrollo algo que se mueve “en la frontera” del desarrollo actual, a las semanas acaban saliendo proyectos similares. Al final, somos mucha gente desarrollando ahora mismo y teniendo ideas parecidas, aunque cada uno tiene su forma concreta de resolver cada problema.

En este proyecto hay que saber muy bien dónde mantener el human in the loop y dónde reemplazarlo, puesto que el criterio humano siempre hará que el proyecto sea superior.
Una cosa que he aprendido de mi anterior Agent Orchestration Platform es a delegar y a no montar yo mismo lo que ya existe y puedo reutilizar. El caso más importante es la gestión de los agentes. Para esto hay mil formas distintas de hacerlo; la que a mí más me gusta es aprovecharse de los harness que ya hay instalados en la máquina, con lo cual reutilizas su implementación de subagentes, skills… y además, según los vayan actualizando, tú obtienes esas nuevas funcionalidades. Es más, en mi proyecto anterior el conector entre esos harness y los threads del proyecto, que en ese caso eran tareas de un kanban, era custom y tenía que mantenerlo yo. En este caso he reutilizado el conector de T3 Code, open source y con una licencia que permite este uso. De hecho, estoy utilizando una idea de su creador que imagino que en un futuro cogerá más fuerza: usar patches en formato markdown, que sirven para que el agente modifique una futura versión y la deje con tus modificaciones. Carpeta t3-patches con los parches en formato markdown

Por lo que también puedo delegar el mantenimiento de la parte del conector entre la software factory y el modelo al equipo de T3. Threads de la factory

Otro punto importante es dónde corren esos agentes, y esto está muy guay, porque no corren en tu máquina local, sino que disponen de una o varias máquinas completas.
Conecto cada máquina con el BE de forma que puedo gestionar dónde quiero que corra cada thread. Además, incluyo funcionalidades como actualización de harness, manejo de cuentas con CLIProxyAPI, manejo de skills y MCPs, e incluso sincronización entre distintas máquinas. Esto permite cosas como que desde un móvil pueda levantar agentes en una máquina Linux con muchos núcleos y RAM para que trabajen.

Máquinas de la factory

Una vez montado todo este sistema, ¿cómo hago que un proyecto entre en el loop agéntico?
Si es una idea que aún no tiene proyecto empezado, creo el thread en el apartado de ideas, donde suelto una pequeña propuesta, y el propio agente, con el MCP, crea un proyecto en la Software Factory, crea un repositorio en GitHub que asigna al proyecto y crea las Schedules iniciales que vea convenientes.

Schedules de la factory

Las Schedules son una de las formas que tengo ahora mismo para hacer trigger de nuevos Threads; otros proyectos las llaman heartbeats. Se usan para que tu agente “sea proactivo”. En la fase de investigación y planificación, yo las uso para encontrar competidores, similitudes, sinergias, papers relacionados, proyectos similares y contenido relacionado en redes sociales. Es importante probar modelos, skills, sinónimos, buscar la creatividad.
Todo lo que encuentren se maneja desde el apartado Documents con el MCP. No quería que tuvieran que hacer commits para guardar documentos de investigación, así que creé ese apartado, y los agentes pueden crear o editar documentos incluso al mismo tiempo. Además, crea snapshots para recuperarlos si pasara algún problema.

Apartado Documents de la factory Vista previa de documentos en la factory

Con esto tengo la forma de descargar las ideas que tengo en la cabeza, cosas que me gustaría que existieran, problemas que veo y posibles soluciones.
Una vez que la Software Factory tiene la idea, somos un equipo.
El diseño y el desarrollo dan para otro post entero, pero actualmente se trata de utilizar modelos frontera con altas capacidades agénticas para poder delegar teniendo la suficiente seguridad para mergear código que han creado y revisado agentes sin apenas intervención humana. Con la suficiente gestión del riesgo, se puede permitir que mergeen ellos solos al pasar todos los checks.
Esto se consigue en parte con buenas pruebas de regresión, QA automático y AI reviews en todas las PRs.
Pero en el mundo agéntico entra otro factor: poder responder automáticamente a posibles regresiones y problemas desplegados. Teniendo monitorizados todos los errores y el feedback, conseguimos ese escudo, pudiendo revertir o aplicar parches automáticos teniendo en cuenta los usuarios afectados y la gestión del riesgo.
Todo esto se consigue con Triggers que lanzan Threads en máquinas conectadas a la factory.

Una vez tenemos desarrollado un proyecto, podemos seguir recogiendo feedback y haciendo tests A/B de forma automática, con los agentes apoyándose en la telemetría, descubriendo qué se puede mejorar e iterando con lo que vayan aprendiendo. El objetivo sería que cada avance no dependa de que yo vuelva a sentarme a decirle cuál es el siguiente paso.

Yo quiero seguir aportando ideas y dirección, pero también quiero que la factory tenga información suficiente para tomar decisiones por su cuenta. Y que mire hacia fuera: tendencias, conversaciones en redes sociales y cambios que puedan abrir nuevas posibilidades para el proyecto.

Otro dato guay es que la software factory es multiplayer: tiene soporte para organizaciones y tú puedes ver los Proyectos/Threads/Documentos/Machines de tu organización, con lo que te pueden ayudar más humanos a continuar los proyectos.

La factory en modo multiplayer

Creo que de aquí a un tiempo vamos a ver varias herramientas de este estilo.
Hace tiempo, cuando no existía la IA, yo iba haciendo mis ideas a un ritmo muuuuyy lento y simplemente se iban acumulando en una libreta indefinidamente. Pensaba en contratar a un programador, pagarle la mitad de mi salario y al menos tener a alguien que me ayudara con mis ideas. Hoy en día, gracias a la IA y las Software Factories, puedo tener exactamente eso, pero MUCHO más barato. Así que una suscripción de 200 $ es cara o barata según con qué la compares.