GOGOGOLLC
Volver al Blog
EngineeringMay 21, 20269 min read

Estado de flow para el software.

El canal de flow de Csikszentmihalyi explica cuándo una persona está completamente absorta: la tarea está emparejada con su destreza — demasiado fácil es aburrimiento, demasiado difícil es ansiedad. El mismo canal describe un sistema multi-agente. Un agente con una tarea del tamaño equivocado falla igual que una persona. Acá está el orquestador reimaginado como director de flow.

Atakan Özalan

Atakan Özalan

Cofundador & lead de ingeniería, GOGOGO LLC

Estado de flow para el software.

El psicólogo Mihaly Csikszentmihalyi pasó su carrera en una pregunta: ¿cuándo está la gente plena y felizmente absorta en lo que hace? Su respuesta es la idea llamada flow, y su núcleo es un diagrama simple — el canal de flow. En un eje, la dificultad de la tarea. En el otro, la destreza de la persona. El flow ocurre en el canal angosto donde los dos coinciden.

Por encima del canal: la tarea es más difícil que tu destreza, y sentís ansiedad. Por debajo: la tarea es más fácil que tu destreza, y sentís aburrimiento. Solo en el canal — el desafío encontrándose con la destreza — estás absorto, eficaz, aprendiendo. Quiero argumentar que este diagrama, dibujado para la psicología humana, describe un sistema multi-agente casi sin traducción — y que diseñar para él es una disciplina de ingeniería real. Lo hacemos en GOGOGO LLC.

Un agente también tiene un canal de flow

Dale a un agente una tarea muy por encima de su capacidad y no se pone 'ansioso' — pero el fallo tiene la misma forma que la ansiedad. Manotea. Hace loop, reintenta, quema tokens, produce sinsentidos confiados o falla del todo. Un agente superado se comporta exactamente como una persona superada: mal, caro, y sin la autoconciencia para parar.

Dale a un agente una tarea muy por debajo de su capacidad y obtenés el equivalente-agente del aburrimiento — no sufrimiento, sino desperdicio. Pusiste un generalista potente y caro en un trabajo que un clasificador diminuto habría hecho más rápido, más barato y más confiable. El agente lo logra, pero el sistema es descuidado: latencia que no necesitabas, costo que no necesitabas, una herramienta pesada en un trabajo liviano.

Así que un agente tiene un canal de flow. Por encima: superado, fallando. Por debajo: sub-emparejado, derrochador. Dentro: la tarea le calza al agente, y el sistema entero corre como se siente el flow — eficiente, confiable, nada forzado y nada desperdiciado.

El orquestador como director de flow

En un juego, mantener al jugador en el canal de flow es el trabajo de la dificultad dinámica — el diseño ajusta en silencio el desafío para seguir la destreza creciente del jugador. En un sistema multi-agente, ese trabajo le pertenece al orquestador, y reencuadra para qué sirve el orquestador.

Un orquestador suele describirse como un router: manda cada tarea a un agente. La lente de flow afila eso. El verdadero trabajo del orquestador es mantener cada tarea dentro del canal de flow — emparejar cada tarea con el agente cuya capacidad le calce. Una clasificación trivial va al clasificador chico y rápido, no al razonador pesado. Un problema genuinamente difícil y de múltiples pasos va al agente potente, no al barato que va a manotear. El orquestador es un director de flow, y uno bueno sostiene el sistema entero dentro del canal.

Esto también te dice cuándo descomponer una tarea. Una tarea por encima del canal de todos los agentes disponibles no debería forzarse sobre el agente más fuerte a la esperanza. Debería partirse en sub-tareas, cada una de las cuales aterriza dentro del canal de algún agente. La descomposición no es solo una movida de arquitectura — es cómo bajás una tarea imposible hasta el canal de flow de los agentes que de verdad tenés.

Csikszentmihalyi dibujó el canal de flow para explicar la absorción humana. Resulta ser un diagrama de control para un sistema multi-agente: emparejá la tarea con el agente y el sistema fluye; desemparejala y el sistema o manotea o desperdicia. El verdadero trabajo del orquestador es mantener cada tarea en el canal.

Diseñar para el canal

En la práctica, esto significa que medís dos modos de fallo, no uno. Seguí las tareas que aterrizaron por encima del canal — el manoteo, los loops, los excesos — y o las enrutás a un agente más fuerte o las descomponés. Y seguí las que aterrizaron por debajo — el agente potente haciendo trabajo trivial — y enrutá esas hacia abajo a algo más barato. Las dos son violaciones de flow. Un sistema afinado solo contra el fallo deriva en un sobre-aprovisionamiento caro; uno afinado solo contra el costo deriva en un sub-aprovisionamiento poco confiable. El flow es la disciplina de vigilar las dos paredes del canal a la vez. Construí el orquestador para sostener el sistema en el medio. Más de cómo pensamos en gogogollc.com.

¿Lo quieres para tu negocio?

Cuéntanos qué flujo construirías primero. Te respondemos con un plan de 4 fases y los agentes que encajan.