Inspiración
La motivación que se desprende del proyecto es reducir la distancia entre tener una idea para un agente y obtener un proyecto BX Agents que se pueda compilar.
En lugar de configurar manualmente cada agente, el usuario describe lo que necesita en lenguaje natural y Agent Factory traduce esa intención a una especificación y a archivos de proyecto.
Qué hace
Agent Factory convierte una descripción en español en un proyecto de BX Agents. El flujo principal, visible en factory.bxs, es:
Analyst consulta Gemini y transforma la descripción en datos estructurados.
AgentSpec valida un contrato de ocho campos: nombre, descripción, instrucciones, proveedor, modelo, herramientas, skills y subagentes.
Generator crea el proyecto con plantillas. La versión actual contempla herramientas de un catálogo cerrado, skills y subagentes.
Validator y Shell intentan compilar el proyecto y devuelven el resultado.
Opcionalmente, Evaluator ejecuta tres pruebas conversacionales y pide a Gemini que valore las respuestas.
Si el build falla, hay una reparación controlada: restaurar plantillas y, solo si se solicita, proponer cambios limitados con Gemini.
Como lo creamos
Lo construimos como componentes BoxLang separados, coordinados por factory.bxs. Definimos primero un contrato común en AgentSpec.bx, de modo que el modelo propone una especificación, pero el código la valida antes de generar archivos.
Para mantener la generación predecible, el Generator.bx usa plantillas en vez de aceptar código ejecutable libre de Gemini. Después agregamos la ejecución de comandos, la compilación, la evaluación y la reparación optativa. La evolución documentada incluye hitos para corregir la lectura de argumentos de CLI, integrar la evaluación, añadir reparación y ampliar las capacidades
Desafíos que nos encontramos
Alinear componentes y contrato: Analyst, AgentSpec, Generator y los templates deben compartir los mismos campos, tipos y convenciones.
Controlar las respuestas de IA: Gemini puede devolver JSON malformado o propuestas que no cumplen el contrato; por eso hay validación estricta y reintentos limitados.
Generar sin confiar ciegamente en código del modelo: las herramientas salen de plantillas revisadas y de un catálogo cerrado, no de código BoxLang arbitrario.
Separar compilación de calidad: que un proyecto compile no demuestra que responda bien. Evaluator añade pruebas, aunque su juez también es una IA y su puntuación es orientativa.
Evitar daños al reparar o generar: no se sobrescriben proyectos existentes; las reparaciones se hacen en copias, con límites y diagnósticos.
Built With
- boxlang
- java
Log in or sign up for Devpost to join the conversation.