Gyred

Una sala de control de agentes de IA como ventana de escritorio nativa, renderizada sin navegador (Rust + Dioxus). Un solo lugar para todas las sesiones: qué espera, qué trabaja, qué está planificado y toda la conversación. El mismo código también compila para otras plataformas.

Gyred
TL;DR

Una ventana de escritorio nativa para llevar muchas sesiones de agentes de IA a la vez, construida en Rust + Dioxus y renderizada sin navegador. Todas las sesiones en un solo lugar - lo que espera una decisión, lo que trabaja, lo que está planificado, más la conversación completa con cada una - en lugar de decenas de pestañas y cambio constante.

Introducción

Gyred es la encarnación de escritorio de la sala de control de agentes de IA de la familia Gyre. Gyre es un único lugar donde se llevan muchas sesiones a la vez: las ves, hablas con ellas, planificas el trabajo y recibes una señal cuando algo necesita a un humano. Este caso de estudio trata sobre el cliente de escritorio - la ventana en la que esta sala de control vive todo el día, junto al resto de las herramientas de un desarrollador.

Un principio importante de todo Gyre: el panel nunca posee una sesión. Sea lo que sea que veas en la ventana, también lo puedes abrir en tu propio terminal - Gyred es una vista cómoda sobre las sesiones, no una jaula alrededor de ellas. Para el mismo flujo de trabajo hay un cliente aparte para el teléfono; el escritorio apuesta por la densidad de información y el teclado en la mesa.

El problema de las diez pestañas

Cuando llevas una sesión de agente, basta con una pestaña del navegador. Cuando llevas diez, la pestaña se convierte en una trampa. No ves de un vistazo qué sesión se ha detenido y espera tu decisión y cuál sigue moliendo lo suyo. Cambias en círculo, pierdes el hilo y te pierdes el momento en que un agente se quedó atascado en una pregunta - y justo ese momento es el más caro, porque la sesión se queda ahí sin hacer nada hasta que respondes.

Gyred da la vuelta a esa disposición. En lugar de una ventana por sesión - una ventana para todas las sesiones, con una división clara entre lo que necesita a un humano ahora y lo que puede seguir trabajando tranquilamente. La lista a la izquierda muestra el estado del conjunto, el panel a la derecha la conversación completa con la sesión elegida. No tienes que recordar dónde se escondió la que espera; sale a la superficie por sí sola.

Esa es la diferencia entre gestionar tu atención y dispersarla. Diez pestañas exigen que seas tú quien compruebe cada una a cada rato. Una ventana con un estado claro lo hace por ti y te libera de hacer guardia.

Rust y Dioxus en lugar de un segundo navegador

Una aplicación que debe correr en segundo plano todo el día y refrescar el estado de muchas sesiones en directo no puede devorar recursos como un segundo navegador. Por eso, en lugar de Electron, fuimos a por Rust con Dioxus. Dioxus permite escribir la interfaz en el estilo de componentes conocido del front, pero compila a un binario nativo - sin cargar con todo el motor Chromium solo para dibujar una lista y un campo de texto.

En la práctica eso significa una ventana que arranca al instante y mantiene una baja huella de memoria incluso con una docena de sesiones abiertas. Para una herramienta que debe estar encendida todo el tiempo, eso no es cosmética - es la diferencia entre un programa que olvidas y uno que calienta el portátil en segundo plano.

Huella de memoria al arranque (orientativa, MB)

Cliente Dioxus
55
Lo mismo en Electron
260

Un núcleo, muchas encarnaciones

Gyred no es un programa aparte junto al panel y la aplicación móvil. El núcleo de sesión - la conexión, la cola de eventos, el estado de cada conversación, las reglas de lo que necesita a un humano - vive en una capa Rust independiente de lo que lo dibuja. La vista en Dioxus es una carcasa sobre ese núcleo, conectada a él mediante tipos compartidos, no mediante una API separada hacia sí misma.

La misma decisión trae una prima que cayó en cierto modo por el camino: el código de los componentes también apunta a otras plataformas. Escribes la vista una vez, y la lógica de sesión es una sola para todas las encarnaciones de Gyre. Una nueva regla o un nuevo estado de sesión se capta en el núcleo y aparece en todas partes en el mismo commit, en lugar de ser reescrito tres veces y roto de tres maneras distintas.

1
ventana para todas las sesiones
3
estados de sesión: en espera, trabajando, planificada
0
navegadores empaquetados

Quien espera sube arriba

Todo el valor de una ventana como esta se reduce a una cosa: no perderse nunca una sesión que te espera. Por eso la ordenación no va por hora de creación sino por si una sesión necesita a un humano. Un agente bloqueado en una pregunta debe estar en lo alto de la lista, no enterrado entre diez que siguen trabajando.

session.rs · rust
enum SessionStatus {
    Waiting,
    Working,
    Planned,
}

fn needs_human(status: &SessionStatus) -> bool {
    matches!(status, SessionStatus::Waiting)
}
➜
Consejo

Una regla sencilla que cambia la comodidad de trabajo: ordena las sesiones por si están esperando a un humano, no por hora de creación. La cola se ordena sola, y tú solo miras lo alto de la lista en lugar de escanear el conjunto en busca de la que se detuvo.

1
Núcleo de sesión en Rust

conexión, cola de eventos y estado de cada sesión en una capa independiente de la vista.

2
Vista en Dioxus

lista de sesiones y conversación completa como componentes, conectadas al núcleo mediante tipos compartidos.

3
Prioridad para las que esperan

las sesiones a la espera de una decisión aterrizan arriba, el resto debajo, para que nada se pierda.

4
Un binario de escritorio

compilado a una ventana nativa que arranca rápido y mantiene una baja huella de memoria.

Cuál es el resultado final

En lugar de la caza por las pestañas obtienes una pantalla en la que se ve de inmediato dónde es tu turno. Respondes a una sesión directamente desde la ventana, vuelves a tu propio trabajo, y los agentes siguen. Menos cambios, menos decisiones perdidas, menos sesiones paradas en el vacío solo porque no notaste la pregunta.

Y como es un binario nativo, no una página empaquetada, la ventana se comporta como el resto de los programas del escritorio: arranca al instante, no pesa sobre la memoria y no se pierde en una maraña de pestañas. El núcleo Rust es uno solo para todas las encarnaciones de Gyre, de modo que el escritorio no es un proyecto aparte que mantener - crece junto al panel y la aplicación móvil.

Una ventana en la que se ve de inmediato de quién es el turno - el resto se pone en la cola por sí solo.

Más proyectos

Más trabajos de la misma categoría - mira cómo abordamos retos parecidos.

¿Tiene un proyecto similar?

Escríbenos - el presupuesto es gratuito y llega en una hora.