Saltar al contenido principal

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 apagadoEnjambre encendido
Reparto por iniciativa del modelosí, como siempresí
Reparto porque lo pides túnosí

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:

  1. Reparte y une. Un subagente por parte con tarea_lanzar, bautizado por su oficio; después tarea_esperar, tarea_resultado, y una sola respuesta unida, no informes pegados.
  2. 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.
  3. 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.