Mes deux tâches IA se sont battues pour la même souris

Les démos d'agents en parallèle semblent géniales jusqu'à ce que deux tâches tentent d'utiliser la même souris.

Une tâche se connecte à un site. Une autre ouvre un navigateur. Une troisième tente de répondre à une question simple. Soudain, le système clique au mauvais endroit ou signale une erreur. Ce n'est pas un problème d'intelligence. C'est un problème de ressources.

En développant CliGate, j'ai appris une leçon difficile sur l'automatisation de bureau.

Les tâches de code peuvent s'exécuter en parallèle. Vous pouvez consulter la météo pendant qu'une session d'exécution est en cours. Les résumés en arrière-plan n'ont pas besoin de bloquer quoi que ce soit.

Le bureau est différent. Vous n'avez qu'un seul clavier, une seule souris et un seul écran. Si deux agents pensent qu'ils possèdent cette surface, ils se sabotent mutuellement.

Mon premier réflexe a été d'annuler l'ancienne tâche lorsqu'une nouvelle arrivait. C'était une erreur.

Un utilisateur demandant « où en est-on ? » ne devrait pas interrompre un processus de connexion. Un utilisateur demandant la météo ne devrait pas arrêter une tâche de bureau. Le pire bug survient lorsqu'un agent voit une autre exécution active et s'annule accidentellement lui-même.

J'ai dû arrêter de traiter la concurrence comme un problème de prompt. J'ai dû la traiter comme un problème de ressources.

J'ai établi trois nouvelles règles :

  • Les tâches indépendantes s'exécutent en parallèle.
  • Les tâches nécessitant le bureau doivent être mises en file d'attente.
  • L'annulation ne se produit que lorsque l'utilisateur le demande.

Dans CliGate, le contrôle du bureau fonctionne comme un bail. Si une tâche utilise la souris, elle détient le bail. Les autres tâches doivent attendre.

La nouvelle logique suit ce flux :

  • Une nouvelle tâche arrive.
  • A-t-elle besoin du bureau ?
  • Si non, exécutez-la en parallèle.
  • Si oui et que le bureau est libre, prenez-le.
  • Si oui et que le bureau est occupé, mettez-la en file d'attente.
  • Annulez uniquement lorsque l'utilisateur dit stop.

Ce changement a transformé des échecs déroutants en un comportement prévisible. Au lieu de retenter un clic et de provoquer davantage d'interférences, l'assistant dit désormais la vérité : « Le bureau est occupé. Je suis en file d'attente et je commencerai lorsqu'il sera libre. »

J'ai également ajouté une règle pour empêcher l'auto-annulation. Un agent ne doit jamais lister sa propre exécution active comme cible d'annulation.

La création d'outils d'IA échoue souvent lorsque l'on essaie d'être trop astucieux. Les utilisateurs n'ont pas besoin de magie. Ils ont besoin d'une logique simple :

  • Si les tâches n'entrent pas en conflit, laissez-les s'exécuter.
  • Si elles entrent en conflit pour une ressource physique, mettez-les en file d'attente.
  • Si l'utilisateur demande un statut, fournissez-le.
  • Si l'utilisateur dit stop, arrêtez.

Si votre IA interagit avec le bureau, n'oubliez pas ceci : les tâches parallèles ne posent pas de problème, mais les ressources physiques nécessitent une détention exclusive.

Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij