L’un des problèmes les plus intéressants que je traite dans mon app d’agent de code, c’est l’ordonnancement.
Les apps d’agents à processus unique sont relativement simples à concevoir. Un shell, une file d’attente, un backend de modèle local, une source de vérité apparente.
Mais ça commence à coincer dès qu’on ouvre plusieurs instances sur la même machine.
On se retrouve avec plusieurs fenêtres d’agents, souvent sur plusieurs projets, qui partagent toutes le même backend d’inférence local. Le GPU est la ressource rare. Le runtime local est la ressource rare. Mais chaque instance n’a qu’une vue partielle de ce qui se passe.
Ça crée un problème de système subtil mais important :
Chaque instance se comporte comme si elle possédait le backend, tout en ne voyant que sa propre file d’attente locale. Résultat : les indicateurs de statut ne sont plus tout à fait sincères. Une fenêtre pense qu’elle est la suivante. Une autre pense que le modèle est inactif. Une troisième tente de démarrer ou de récupérer le backend. Aucune n’a la vue d’ensemble.
Pour les fournisseurs distants, c’est moins grave. Ils gèrent déjà la concurrence de leur côté.
Pour l’inférence locale, c’est crucial.
C’est pour ça que je pense devoir implémenter un « broker ».
La limite du broker
Un broker d’inférence local global à l’utilisateur se placerait sous la config utilisateur, gérerait le démarrage et la santé du backend, maintiendrait une file d’attente partagée et fournirait des instantanés sincères de cette file à chaque instance active de l’app d’agent.
Le point important, c’est ce qu’il ne fait pas :
Il ne fusionne pas les contextes de session.
Il ne fusionne pas l’état du projet.
Il ne modifie pas les règles du workflow.
Chaque instance reste propriétaire de ses propres sessions, tickets, contextes associés et frontières cognitives internes isolées.
Ce qui devient partagé, c’est l’arbitrage sur les ressources de calcul locales limitées.
L’idée, c’est de bâtir un système où des couches distinctes de contextes de travail peuvent coexister par bundles, tout en partageant proprement un substrat d’inférence fini, de manière honnête et coordonnée.
En d’autres termes :
un ordonnancement partagé, pour plusieurs acteurs.
Ça me semble être la bonne direction à long terme pour les systèmes d’agents locaux.