Enjambre de agentes
El enjambre de agentes
Un interruptor 🕸️ en la barra del chat, junto al piloto automático. Encendido, JMAX reparte la tarea entre varios agentes que trabajan a la vez en vez de hacerla él solo de principio a fin.
El botón SUMA, no resta
JMAX ya repartía tareas por su cuenta cuando veía un pedido largo, y eso sigue funcionando con el enjambre apagado. El prompt base no se tocó.
Lo que faltaba era que la decisión fuera también del usuario: hasta hoy la tomaba el modelo por su cuenta y casi siempre lanzaba uno solo. El botón sirve para forzarlo cuando tú consideras que la tarea es compleja.
| Enjambre apagado | Enjambre encendido | |
|---|---|---|
| Reparto por iniciativa del modelo | sí, como siempre | sí |
| Reparto porque lo pides tú | no | sí |
Lo que no hubo que construir
Los subagentes existían desde antes (jmax/core/tareas.py,
jmax/tools/native/tareas_bg.py): corren de verdad, cada uno con su sesión,
sobreviven al reinicio y se ven trabajar en la franja sobre el compositor.
Lo único nuevo es el interruptor y la instrucción que lleva el turno.
Qué le dice a JMAX
jmax/core/enjambre.py, en los seis idiomas. Tres cosas, y ninguna sobra:
- Reparte y une. Un subagente por parte con
tarea_lanzar, bautizado por su oficio; despuéstarea_esperar,tarea_resultado, y una sola respuesta unida, no informes pegados. - No partas lo que no se puede partir. Si cada paso necesita el anterior, que lo haga de una vez y lo diga. Dividir una tarea secuencial empeora el resultado y cuesta el doble.
- Cuatro a la vez. Es el cupo real (
tareas._MAX_PARALELAS), y el número se lee de ahí para que no haya dos verdades. Con más partes, las demás esperan turno y entran solas.
Por qué la instrucción va por turno
El prompt del sistema se arma al crear la sesión. Si la instrucción viviera ahí, encender el enjambre a mitad de una conversación no serviría de nada hasta abrir otra — y se enciende justo cuando ya tienes delante la tarea difícil.
Arranca apagado y no se guarda
Igual que el piloto. Repartir sin que nadie lo haya pedido multiplica el consumo por sorpresa.
Se ve, y es morado
Apagado gris, encendido morado con latido. Morado y no verde a propósito: los dos interruptores pueden estar encendidos a la vez y con el mismo color no se sabría cuál está puesto.
El estado lo manda el servidor, no el clic: si el socket está cerrado, avisa y no cambia nada. Un interruptor que miente sobre su estado es peor que no tenerlo.
Cuesta más, y se avisa
Cinco agentes son cinco conversaciones con el cerebro. El aviso al encender lo dice con todas las letras y remite a Métricas. Vender autonomía y cobrar el consumo por sorpresa sería una trampa.
Combinado con el piloto
Son independientes. Enjambre + piloto = varios agentes trabajando sin pedir
permiso, salvo el peligro vital (ver docs/JMAX-Piloto-automatico.md).
Probarlo
python -m pytest tests/test_enjambre.py -q
16 casos. Entre ellos, dos que blindan lo de arriba: que el prompt base sigue mandando delegar por iniciativa propia, y que la instrucción del enjambre no prohíbe nada de lo que el modelo ya hacía.