agentl.aio exécute des agents depuis une boucle asyncio, sans changer la sémantique du langage. Trois agents qui attendent chacun une API de deux secondes ne prennent plus six secondes.
Un agent reste séquentiel
Chaque action est jugée sur l’état laissé par la précédente. Rendre concurrentes deux actions d’un même agent reviendrait à juger la seconde sur un état que la première est en train de changer : une faille TOCTOU créée par le runtime lui-même. La concurrence est donc :- entre agents : une société fait tiquer ses agents en même temps ;
- aux frontières : attendre un outil, un capteur ou le modèle ne bloque que l’agent qui attend.
Un hôte asynchrone
AsyncHost a le même contrat que Host : décorateurs sensor, tool, subagent, reconciler, approbateur. Les fonctions synchrones restent acceptées. invoke exige le même permis du noyau.
Un agent
store=FileStore(...) rend l’exécution durable : une exécution annulée ou tuée reprend sans doubler un effet.
Les bornes
Un message refusé par une boîte de réception pleine est tracé et compté, jamais perdu en silence.
Annulation
Cancelled, que rien n’avale), et les appels en vol sont annulés.
Une société réellement concurrente
AsyncSociety avance par tours synchronisés :
- au début d’un tour, chaque agent reçoit un instantané de la mémoire partagée ;
- tous les agents tiquent en parallèle, dans les bornes de
Limits, partagées par toute la société ; - à la barrière, les messages sont remis et les écritures
SHAREDfusionnées, dans l’ordre déclaré des agents.
Society, mais elle ne dépend pas de l’ordonnanceur : même programme, mêmes hôtes, même résultat.
MCP asynchrone
AsyncMCPHost et connect_async branchent un serveur MCP sur la boucle de l’agent au lieu d’ouvrir une boucle privée. Voir l’API Python.
Exécution durable
Survivre à une annulation ou à un crash sans doubler un effet.