Gyred

Une salle de contrôle d'agents IA sous forme de fenêtre de bureau native, rendue sans navigateur (Rust + Dioxus). Un seul endroit pour toutes les sessions : ce qui attend, ce qui travaille, ce qui est planifié et toute la conversation. Le même code se compile aussi pour d'autres plateformes.

Gyred
TL;DR

Une fenêtre de bureau native pour mener de nombreuses sessions d'agents IA à la fois, construite en Rust + Dioxus et rendue sans navigateur. Toutes les sessions au même endroit - ce qui attend une décision, ce qui travaille, ce qui est planifié, plus la conversation complète avec chacune - au lieu de dizaines d'onglets et d'un basculement constant.

Introduction

Gyred est l'incarnation bureau de la salle de contrôle des agents IA de la famille Gyre. Gyre est un lieu unique où l'on mène de nombreuses sessions à la fois : vous les voyez, vous leur parlez, vous planifiez le travail et vous recevez un signal quand quelque chose nécessite un humain. Cette étude de cas porte sur le client bureau - la fenêtre dans laquelle cette salle de contrôle vit toute la journée, à côté du reste des outils d'un développeur.

Un principe important de tout Gyre : le panneau ne possède jamais une session. Quoi que vous voyiez dans la fenêtre, vous pouvez aussi l'ouvrir dans votre propre terminal - Gyred est une vue pratique sur les sessions, pas une cage autour d'elles. Il existe un client téléphone distinct pour le même flux de travail ; le bureau mise sur la densité d'information et le clavier au bureau.

Le problème des dix onglets

Quand vous menez une session d'agent, un onglet de navigateur suffit. Quand vous en menez dix, l'onglet devient un piège. Vous ne voyez pas d'un coup quelle session s'est arrêtée et attend votre décision et laquelle continue de mouliner. Vous basculez en boucle, vous perdez le fil et vous ratez le moment où un agent s'est bloqué sur une question - et c'est justement ce moment le plus coûteux, car la session reste là à ne rien faire jusqu'à ce que vous répondiez.

Gyred renverse cette disposition. Au lieu d'une fenêtre par session - une fenêtre pour toutes les sessions, avec une séparation claire entre ce qui nécessite un humain maintenant et ce qui peut tranquillement continuer à travailler. La liste à gauche montre l'état de l'ensemble, le panneau à droite la conversation complète avec la session choisie. Vous n'avez pas à vous rappeler où s'est cachée celle qui attend ; elle remonte d'elle-même.

C'est la différence entre gérer son attention et la disperser. Dix onglets exigent que vous vérifiiez vous-même chacun en permanence. Une fenêtre avec un état clair le fait pour vous et vous libère de la garde.

Rust et Dioxus au lieu d'un second navigateur

Une application censée tourner en arrière-plan toute la journée et rafraîchir l'état de nombreuses sessions en direct ne peut pas dévorer les ressources comme un second navigateur. C'est pourquoi, au lieu d'Electron, nous sommes partis sur Rust avec Dioxus. Dioxus permet d'écrire l'interface dans le style composant familier du front, mais compile vers un binaire natif - sans embarquer tout un moteur Chromium juste pour dessiner une liste et un champ de texte.

En pratique, cela signifie une fenêtre qui démarre instantanément et garde une faible empreinte mémoire même avec une douzaine de sessions ouvertes. Pour un outil censé rester allumé tout le temps, ce n'est pas de la cosmétique - c'est la différence entre un programme que vous oubliez et un qui chauffe le portable en arrière-plan.

Empreinte mémoire au démarrage (indicatif, Mo)

Client Dioxus
55
La même chose dans Electron
260

Un cœur, de nombreuses incarnations

Gyred n'est pas un programme séparé à côté du panneau et de l'application mobile. Le cœur de session - la connexion, la file d'évènements, l'état de chaque conversation, les règles de ce qui nécessite un humain - vit dans une couche Rust indépendante de ce qui le dessine. La vue Dioxus est une coque au-dessus de ce cœur, branchée à lui par des types partagés, non par une API séparée vers lui-même.

La même décision apporte une prime tombée en quelque sorte en chemin : le code des composants vise aussi d'autres plateformes. Vous écrivez la vue une fois, et la logique de session est unique pour toutes les incarnations de Gyre. Une nouvelle règle ou un nouvel état de session est capté dans le cœur et apparaît partout dans le même commit, au lieu d'être réécrit trois fois et cassé de trois manières différentes.

1
fenêtre pour toutes les sessions
3
états de session : en attente, en travail, planifiée
0
navigateurs empaquetés

Qui attend passe en haut

Toute la valeur d'une fenêtre comme celle-ci se résume à une chose : ne jamais rater une session qui vous attend. C'est pourquoi le tri ne se fait pas par heure de création mais selon qu'une session nécessite un humain. Un agent bloqué sur une question a sa place en haut de la liste, pas enterré parmi dix qui travaillent encore.

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

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

Une règle simple qui change le confort de travail : triez les sessions selon qu'elles attendent un humain, non par heure de création. La file s'organise d'elle-même, et vous ne regardez que le haut de la liste au lieu de scanner l'ensemble à la recherche de celle qui s'est arrêtée.

1
Cœur de session en Rust

connexion, file d'évènements et état de chaque session dans une couche indépendante de la vue.

2
Vue en Dioxus

liste des sessions et conversation complète sous forme de composants, branchées au cœur par des types partagés.

3
Priorité aux sessions en attente

les sessions en attente d'une décision atterrissent en haut, le reste en dessous, pour que rien ne se perde.

4
Un binaire bureau

compilé vers une fenêtre native qui démarre vite et garde une faible empreinte mémoire.

Quel est le résultat final

Au lieu d'une chasse à travers les onglets, vous obtenez un écran qui montre d'un coup où est votre tour. Vous répondez à une session directement depuis la fenêtre, vous retournez à votre propre travail, et les agents continuent. Moins de basculement, moins de décisions ratées, moins de sessions restées dans le vide juste parce que vous n'avez pas remarqué la question.

Et parce que c'est un binaire natif, et non une page empaquetée, la fenêtre se comporte comme le reste des programmes du bureau : elle démarre instantanément, ne pèse pas sur la mémoire et ne se perd pas dans un fouillis d'onglets. Le cœur Rust est unique pour toutes les incarnations de Gyre, si bien que le bureau n'est pas un projet séparé à maintenir - il grandit avec le panneau et l'application mobile.

Une fenêtre qui montre d'un coup à qui est le tour - le reste se met en file d'attente de lui-même.

Plus de projets

D'autres réalisations de la même catégorie - découvrez comment nous abordons des défis similaires.

Vous avez un projet similaire ?

Contactez-nous - le devis est gratuit et arrive sous une heure.