L'architecture en boucle des agents

@djfarrelly
ANGLAISil y a 4 semaines · 18 juin 2026
559K
800
104
22
3.1K

TL;DR

Cet article explore l'architecture Ă  trois couches des systĂšmes agents — boucles, compĂ©tences et orchestration — en soulignant la nĂ©cessitĂ© d'une exĂ©cution durable pour prĂ©venir les dĂ©faillances et permettre une IA auto-Ă©volutive.

Tout le monde demande : « C’est quoi ce dĂ©lire de boucle ? » Mais personne ne pose la question qui tue : qu’est-ce qui fait tourner la boucle ?

Le dĂ©bat sur l’IA s’est cristallisĂ© autour des boucles en tant que primitive centrale des systĂšmes agentiques. Matt Van Horn (@mvanhorn) a retracĂ© la gĂ©nĂ©alogie des boucles d’agents, de ReAct Ă  l’utilisation d’outils, des boucles d’orchestration aux boucles qui supervisent d’autres boucles. Addy Osmani (@addyosmani) a dĂ©composĂ© les blocs de construction Ă  l’intĂ©rieur des boucles : automatisations, arbres de travail, compĂ©tences, connecteurs, sous-agents. Van Horn a mis l’accent sur la durabilitĂ©, arguant qu’une boucle qui ne survit pas Ă  un redĂ©marrage n’est pas une vĂ©ritable boucle. Le fil conducteur d’Osmani Ă©tait l’orchestration : concevoir le systĂšme qui invite l’agent Ă  agir, plutĂŽt que de le faire vous-mĂȘme.

Je veux pousser leurs idĂ©es plus loin. La durabilitĂ© n’est pas qu’une propriĂ©tĂ© de la boucle. C’est toute la couche d’exĂ©cution qui la sous-tend. Le fait important est qu’une orchestration durable est fondamentale pour construire l’architecture de votre boucle d’agent. DĂ©composons cette architecture.

LĂ  oĂč les boucles se cassent

Les modĂšles /loop et /goal fonctionnent bien pour un agent unique et une session unique. Un agent boucle jusqu’à ce qu’une tĂąche soit terminĂ©e. Cela couvre beaucoup de cas. Mais l’étape suivante (l’étape 5 dans le cadre de Van Horn) est lĂ  oĂč tout s’effondre :

  • Des boucles qui supervisent d’autres boucles
  • Des boucles qui s’exĂ©cutent selon un planning, pas seulement dĂ©clenchĂ©es par un humain
  • Des boucles qui survivent aux redĂ©marrages de processus, aux dĂ©ploiements et aux crashs
  • Des boucles qui lancent des sous-agents et attendent leurs rĂ©sultats (parfois des heures plus tard)
  • Des boucles qui doivent ĂȘtre observables aprĂšs coup

Ce n’est pas un problùme de prompt. C’est un problùme d’infrastructure.

Van Horn cite @runes_leo : « La chose la plus coĂ»teuse dans le codage IA n’est plus d’écrire du code, c’est de gĂ©rer la boucle d’agent. » Un while True dans un terminal ne vous donne rien de tout cela. Pas plus qu’un processus de longue durĂ©e sur une VM ou dans un sandbox.

Pensez Ă  ce qui se produit quand vous exĂ©cutez une boucle d’agent sur un serveur. Le processus va mourir ou redĂ©marrer. Un dĂ©ploiement, un OOM, une rĂ©cupĂ©ration d’instance spot. La boucle redĂ©marre. Mais qu’était-elle en train de faire ? À quelle Ă©tape en Ă©tait-elle ? Avait-elle dĂ©jĂ  envoyĂ© ce message Slack ? Avait-elle dĂ©jĂ  invoquĂ© le sous-agent ?

Vous ne le savez pas. Elle recommence à zéro. Elle récupÚre des données déjà obtenues. Elle rappelle le LLM pour des décisions déjà prises. Elle envoie une notification en double. Elle lance un sous-agent en double. Vous vous réveillez avec trois messages Slack identiques et une équipe perplexe.

La solution n’est pas une « meilleure gestion des erreurs » — c’est un modĂšle d’exĂ©cution oĂč chaque Ă©tape est enregistrĂ©e par points de contrĂŽle, chaque dĂ©cision est persistĂ©e, et la reprise signifie reprendre Ă  partir de la derniĂšre Ă©tape rĂ©ussie.

L’architecture de la boucle d’agent en trois couches

Trois couches. Chacune correspond Ă  une primitive concrĂšte.

Couche 1 : La boucle

Une boucle, c’est un cron plus un dĂ©cideur. Elle s’exĂ©cute selon un planning (ou un dĂ©clencheur), Ă©value l’état et dĂ©cide de la suite.

C’est la dĂ©finition de Van Horn rendue concrĂšte : ce que cron n’a jamais eu, c’est la dĂ©cision au milieu. C’est l’agent qui dĂ©cide, pas vous. Le cron est le battement de cƓur. Le LLM est le dĂ©cideur. Les Ă©tapes sont l’exĂ©cution durable qui enregistre l’avancement.

typescript
1export const infraHealthCheck = inngest.createFunction(
2 { id: "infra-health-check" },
3 { cron: "*/30 * * * *" }, // Toutes les 30 minutes
4 async ({ step }) => {
5 const metrics = await step.run("fetch-service-metrics", async () => {
6 return await fetchServiceMetrics(); // taux d'erreur, latence, mémoire, CPU
7 });
8
9 const assessment = await step.run("assess-health", async () => {
10 return await callLLM({
11 prompt: `Compte tenu de ces métriques de service, classez l'état général du systÚme
12 comme "normal", "dégradé" ou "critique". Expliquez votre raisonnement.
13 Métriques : ${JSON.stringify(metrics)}`,
14 });
15 });
16
17 if (assessment.status === "degraded" || assessment.status === "critical") {
18 await step.invoke("triage-incident", {
19 function: incidentTriage,
20 data: { metrics, assessment, services: assessment.affectedServices },
21 });
22 }
23 }
24);

Chaque lundi Ă  9h, la boucle se dĂ©clenche. Elle rĂ©cupĂšre les donnĂ©es, demande au LLM si un rapport est justifiĂ©, et invoque une compĂ©tence si c’est le cas. Si le processus redĂ©marre entre deux Ă©tapes, les Ă©tapes dĂ©jĂ  terminĂ©es ne sont pas rĂ©exĂ©cutĂ©es. VoilĂ  la boucle. Pas le LLM, la boucle autour du LLM.

Couche 2 : La compétence

Dans ce contexte, une compĂ©tence n’est pas un prompt. C’est un workflow durable. Multi-Ă©tapes, rĂ©essayable, composable, dĂ©ployable indĂ©pendamment.

Van Horn : « La boucle est la plomberie. L’actif, c’est la compĂ©tence qu’elle appelle. » C’est la partie qui s’accumule. Chaque nouvelle compĂ©tence apprise par le systĂšme rend chaque boucle plus capable.

typescript
1export const incidentTriage = inngest.createFunction(
2 { id: "incident-triage", retries: 3 },
3 { event: "infra.incident.triage" },
4 async ({ event, step }) => {
5 const details = await step.run("fetch-detailed-metrics", async () => {
6 return await fetchDetailedMetrics({ services: event.data.services });
7 });
8
9 const deploys = await step.run("fetch-deploy-history", async () => {
10 return await fetchRecentDeploys({ since: hoursAgo(2) });
11 });
12
13 const analysis = await step.run("correlate-incident", async () => {
14 return await callLLM({
15 prompt: `Corrélez ces métriques de service avec les déploiements récents.
16 Identifiez la cause racine probable et la sévérité.
17 Métriques : ${JSON.stringify(details)}
18 Déploiements récents : ${JSON.stringify(deploys)}`,
19 });
20 });
21
22 await step.run("post-triage-summary", async () => {
23 await slack.postMessage({
24 channel: "#incidents",
25 text: formatTriageSummary({
26 analysis,
27 affectedServices: event.data.services,
28 recommendedActions: analysis.recommendations,
29 }),
30 });
31 });
32
33 return analysis;
34 }
35);

Cette compĂ©tence rĂ©cupĂšre, classe et achemine. C’est une unitĂ© de travail avec une tolĂ©rance aux pannes intĂ©grĂ©e. La compĂ©tence peut ĂȘtre un workflow IA avec un LLM au milieu, ou du code dĂ©terministe.

Couche 3 : L’orchestrateur

L’orchestrateur est le moteur qui fait tourner tout ça : il planifie les crons, exĂ©cute les Ă©tapes, gĂšre les tentatives, applique les limites de concurrence, stocke l’historique des exĂ©cutions, et dĂ©ploie Ă  chaud de nouvelles fonctions/workflows sans perturber les exĂ©cutions en cours.

C’est la couche dont personne ne parle parce qu’elle est censĂ©e ĂȘtre invisible. Pourtant, elle est fondamentale.

La plupart des gens voient les agents comme « LLM + outils ». L’architecture de boucle d’agent reformule cela : les agents sont « boucles + compĂ©tences + orchestration ». Le LLM + les outils sont Ă  l’intĂ©rieur des boucles. Les LLM et les outils peuvent ĂȘtre Ă©changĂ©s ou modifiĂ©s alors que l’architecture reste. L’orchestration rend l’architecture possible.

Ce qui se passe quand les choses cassent

Le chemin heureux est facile. Mais c’est un logiciel en production : est-ce que tout se passe vraiment comme prĂ©vu ?

Votre compĂ©tence de triage d’incident se dĂ©clenche et l’API de mĂ©triques expire. La lecture a dĂ» aller sur le disque et le cache mĂ©moire ne contenait pas les donnĂ©es. L’étape qui appelle cette API rĂ©essaie et frappe Ă  nouveau l’API. Les donnĂ©es sont maintenant partiellement en cache et l’API aboutit. La compĂ©tence continue avec l’étape suivante comme si de rien n’était.

Parfois, ce n’est pas aussi simple. Et si une clĂ© API expire, ou si votre hĂ©bergeur est indisponible pendant 30 minutes ? Toutes vos tentatives sont Ă©puisĂ©es. Que se passe-t-il alors ? Vous devez aussi gĂ©rer les Ă©checs.

typescript
1export const incidentTriage = inngest.createFunction(
2 {
3 id: "incident-triage",
4 retries: 3,
5 onFailure: async ({ error, event, step }) => {
6 // La fonction a échoué aprÚs avoir épuisé les tentatives.
7 // Nous avons toujours les données de l'événement d'origine. Rien n'est perdu.
8 await step.run("notify-failure", async () => {
9 await slack.postMessage({
10 channel: "#agent-ops",
11 text: `⚠ Le triage d'incident a Ă©chouĂ© : ${error.message}. ` +
12 `Nouvelle tentative au prochain cycle de vérification de santé. ` +
13 `Services concernés : ${event.data.services.join(", ")}`,
14 });
15 });
16 },
17 },
18 { event: "infra.incident.triage" },
19 async ({ event, step }) => {
20 /* la mĂȘme logique que la compĂ©tence ci-dessus */
21 }
22);

Le gestionnaire \onFailure\ se dĂ©clenche aprĂšs l’épuisement de toutes les tentatives. Il publie dans un canal ops pour que quelqu’un soit informĂ©. L’évĂ©nement est conservĂ©, rien n’est perdu. La prochaine exĂ©cution planifiĂ©e reprend lĂ  oĂč celle qui a Ă©chouĂ© n’a pas pu.

Une orchestration durable doit vous offrir des tentatives au niveau de l’étape pour les erreurs transitoires, et des hooks de gestion d’échec pour les erreurs non rĂ©cupĂ©rables. Sans cela, les choses cassent (comme c’est le cas), et vous le dĂ©couvrez des heures ou des jours plus tard.

Les erreurs transitoires sont aussi coĂ»teuses. Si votre compĂ©tence ou agent rĂ©essaie depuis le dĂ©but, vous appelez les LLM plusieurs fois et brĂ»lez des tokens inutilement. L’appel LLM peut ĂȘtre enregistrĂ© par point de contrĂŽle. Multipliez cela par 10 ou 30 agents dans votre systĂšme. C’est coĂ»teux.

L’enregistrement par points de contrĂŽle au niveau de l’étape n’est pas qu’une fonctionnalitĂ© de correction. C’est un Ă©conomiseur d’argent.

L’agent qui construit ses propres compĂ©tences

C’est lĂ  que ça devient plus intĂ©ressant. Le systĂšme n’est pas statique, il est conçu pour Ă©voluer et s’étendre lui-mĂȘme.

L’agent ne se contente pas de s’exĂ©cuter Ă  l’intĂ©rieur des boucles — il crĂ©e de nouvelles boucles et les enregistre dans le moteur d’orchestration. Chaque fonction dĂ©ployĂ©e est une compĂ©tence durable qui s’exĂ©cute de maniĂšre indĂ©pendante, dĂ©clenchable depuis une boucle ou un agent, ou selon un planning, avec sa propre logique de tentative. Les compĂ©tences s’accumulent.

C’est un agent conscient de l’orchestration.

Voici comment ça fonctionne. Un agent IA a accĂšs au SDK d’orchestration en tant qu’outil. Il peut Ă©crire de nouvelles fonctions, les enregistrer dans le moteur, et elles commencent Ă  s’exĂ©cuter immĂ©diatement. Le processus de l’agent recharge Ă  chaud les nouvelles fonctions sans redĂ©marrer ni perturber les exĂ©cutions en cours.

Prenons un exemple concret :

1. Un humain exprime un besoin. L’ingĂ©nieur dit : « Nos services ont des pics de latence la nuit et personne ne le remarque avant le matin. » C’est le dĂ©clencheur. L’agent n’a pas besoin de dĂ©duire un motif vague Ă  partir de donnĂ©es ambiantes. Il a des instructions claires.

2. L’agent Ă©crit une compĂ©tence. Deux fonctions multi-Ă©tapes : une boucle de vĂ©rification de santĂ© qui s’exĂ©cute toutes les 30 minutes, rĂ©cupĂ©rant les taux d’erreur, la latence et l’utilisation des ressources, le LLM classant l’état du systĂšme comme normal, dĂ©gradĂ© ou critique. Et une compĂ©tence de triage d’incident qui rĂ©cupĂšre les mĂ©triques dĂ©taillĂ©es et l’historique des dĂ©ploiements rĂ©cents, corrĂšle les causes racines avec un LLM, et publie un rĂ©sumĂ© de triage dans Slack avec des actions recommandĂ©es. Gestion des erreurs : si l’API de mĂ©triques est en panne, patienter et rĂ©essayer. Si le LLM Ă©choue, se rabattre sur une classification de sĂ©vĂ©ritĂ© basĂ©e sur des rĂšgles.

3. L’agent dĂ©ploie la compĂ©tence. L’agent Ă©crit le code de la fonction qui est pris en charge par un processus sidecar. Les nouvelles fonctions sont enregistrĂ©es automatiquement. Elles sont actives immĂ©diatement, sans pipeline de dĂ©ploiement, sans PR.

4. La compĂ©tence s’exĂ©cute de maniĂšre autonome. Toutes les 30 minutes, le moteur dĂ©clenche la vĂ©rification de santĂ©. Si quelque chose ne va pas, il invoque la compĂ©tence de triage. Aucun humain dans la boucle. Totalement durable.

5. L’agent itĂšre sur le signal. C’est la partie que les gens survolent, donc je vais ĂȘtre prĂ©cis sur ce que signifie « itĂ©rer ». L’agent ne remarque pas les motifs par magie. Il a une boucle de rĂ©vision sĂ©parĂ©e : une fonction dĂ©clenchĂ©e par cron qui s’exĂ©cute chaque semaine, lit l’historique des exĂ©cutions de l’orchestrateur, et Ă©value la performance :

typescript
1export const reviewSkillPerformance = inngest.createFunction(
2 { id: "review-skill-performance" },
3 { cron: "0 10 * * 5" }, // Tous les vendredis Ă  10h
4 async ({ step }) => {
5 const runs = await step.run("fetch-run-history", async () => {
6 return await getInngestRuns({
7 functionId: "incident-triage",
8 since: daysAgo(7),
9 });
10 });
11
12 const analysis = await step.run("analyze-performance", async () => {
13 const successRate = runs.filter(r => r.status === "completed").length / runs.length;
14 const avgDuration = average(runs.map(r => r.duration));
15 const incidents = await fetchIncidentOutcomes(); // Les incidents étaient-ils corrélés à des pannes réelles ?
16
17 return await callLLM({
18 prompt: `Examinez la performance de cette compétence au cours de la semaine écoulée.
19 Taux de réussite : ${successRate}
20 Durée moyenne : ${avgDuration}ms
21 Incidents corrélés à des pannes réelles : ${incidents.confirmed}/${incidents.total}
22 Faux positifs : ${incidents.falsePositives}
23 L'équipe a agi sur les alertes : ${incidents.actedOn}/${incidents.total}
24
25 Devons-nous ajuster les seuils ou la classification ? Quels changements spécifiques ?`,
26 });
27 });
28
29 if (analysis.shouldModify) {
30 await step.invoke("update-skill", {
31 function: coreAgent,
32 data: { prompt: `Mettez à jour les compétences de triage d'incident en fonction des changements proposés suivants : ${analysis.proposedChanges}` },
33 });
34 }
35 }
36);

La « rĂ©vision » est une fonction. Elle lit l’historique des exĂ©cutions, vĂ©rifie si les incidents Ă©taient corrĂ©lĂ©s Ă  des pannes rĂ©elles, et alimente ce signal au LLM. Si la vĂ©rification de santĂ© ne cesse de signaler un service comme dĂ©gradĂ© mais que l’équipe l’ignore parce que les seuils sont trop sensibles, la boucle de rĂ©vision le dĂ©tecte et la compĂ©tence est mise Ă  jour pour ajuster la classification. Pas de magie. Un cron job avec un LLM dans le siĂšge de dĂ©cision.

Qu’en est-il de la validation ? L’agent qui Ă©crit du code n’est aussi bon que les garde-fous qui l’entourent. Le code peut ĂȘtre vĂ©rifiĂ© par typage. L’agent peut invoquer la fonction lui-mĂȘme pour la tester, car il peut interagir avec le moteur d’orchestration. Ce n’est pas infaillible, mais vous donnez Ă  l’agent central la capacitĂ© de dĂ©boguer les compĂ©tences qu’il Ă©crit nativement dans le systĂšme oĂč il opĂšre. La boucle de rĂ©vision dĂ©tecte les problĂšmes non capturĂ©s lors du dĂ©bogage initial.

En poussant un peu plus loin, l’agent peut utiliser les hooks onFailure pour se dĂ©clencher lui-mĂȘme et Ă©valuer un Ă©chec donnĂ©. C’est une boucle de rĂ©troaction qui s’amĂ©liore en continu.

Qu’en est-il des conflits ? Les contrĂŽles de flux, notamment les contrĂŽles de concurrence ou les singletons, traitent le cas simple (concurrency : \{ limit: 1, key: "[event.data.service" }]), ce qui signifie qu’un seul triage d’incident s’exĂ©cute Ă  la fois par service. Mais la question plus profonde est : que se passe-t-il si deux vĂ©rifications de santĂ© dĂ©tectent toutes deux des problĂšmes sur le mĂȘme service simultanĂ©ment ? L’orchestrateur les met en file d’attente. Le deuxiĂšme triage attend que le premier soit terminĂ©. Pas d’alertes en double, pas de conditions de course. Ce n’est pas thĂ©orique. C’est la mĂȘme primitive de concurrence que vous utiliseriez dans n’importe quelle file d’attente de jobs.

L’agent ne se contente pas d’exĂ©cuter des tĂąches. Il construit sa propre infrastructure. Chaque compĂ©tence persiste au-delĂ  de la conversation qui l’a créée. Tue le processus de l’agent et redĂ©marre-le. Les compĂ©tences continuent de tourner. Remplace le modĂšle sous-jacent. Les compĂ©tences continuent de tourner. L’agent est Ă©phĂ©mĂšre — son rĂ©sultat est durable.

Dan Farrelly | Inngest.com - inline image

Vue d’ensemble de l’architecture de la boucle d’agent

Le point de vue du développeur

C’est important parce que si le dĂ©veloppeur ne peut pas voir ce que l’agent a dĂ©ployĂ©, dĂ©boguer ce qui a cassĂ©, et auditer ce qui s’est exĂ©cutĂ© Ă  3h du matin, toute l’architecture est une lourde responsabilitĂ©.

Le moteur d’orchestration stocke chaque exĂ©cution, chaque Ă©tape, chaque entrĂ©e, chaque sortie, chaque tentative. Une compĂ©tence que l’agent a dĂ©ployĂ©e mardi dernier et qui a Ă©chouĂ© Ă  4h du matin ? Vous pouvez voir exactement quelle Ă©tape a Ă©chouĂ©, quelle Ă©tait l’entrĂ©e, quelle erreur a Ă©tĂ© levĂ©e, et combien de tentatives ont Ă©tĂ© faites avant d’abandonner. Des traces complĂštes jusqu’au niveau de l’étape sont la sortie mĂȘme du moteur d’orchestration.

Ce n’est pas un tableau de bord ajoutĂ© aprĂšs coup. C’est inhĂ©rent Ă  l’exĂ©cution durable. Chaque step.run() est un point de contrĂŽle. Chaque point de contrĂŽle est observable. Quand celui qui Ă©crit le code n’est pas un humain, l’observabilitĂ© n’est pas un luxe — c’est la couche de confiance.

Au quotidien, le flux de travail du dĂ©veloppeur ressemble Ă  ceci : le matin, consultez le tableau de bord des exĂ©cutions. Voyez quelles compĂ©tences ont tournĂ© pendant la nuit, lesquelles ont rĂ©ussi, lesquelles ont Ă©chouĂ©. Si une compĂ©tence Ă©crite par l’agent se comporte mal, vous pouvez lire le code directement, le modifier, le supprimer, ou demander Ă  l’agent de le corriger. L’agent l’a créée, mais vous en ĂȘtes propriĂ©taire. L’agent et ses compĂ©tences restent un jardin que vous devez entretenir.

Pourquoi la durabilité est fondamentale

Van Horn : « Ces choses doivent survivre à un redémarrage. »

Voici ce que signifie la durabilité en pratique :

Exigence

Ce que ça implique

Pourquoi une simple boucle while échoue

Tentative indépendante par étape

Si l’étape 3 sur 5 Ă©choue, rĂ©essayer l’étape 3, pas les Ă©tapes 1 et 2

Un redémarrage de boucle réexécute tout depuis le début

Cycle de vie des sous-agents

Lancer une tĂąche enfant, l’attendre (parfois des heures), l’annuler si le parent est annulĂ©

Pas de gestion native du cycle de vie parent-enfant

Distribution garantie des événements

Si un Ă©vĂ©nement se dĂ©clenche pendant que l’agent est hors ligne, il doit quand mĂȘme ĂȘtre traitĂ©

Les événements sont perdus si le processus ne tourne pas

Observabilité a posteriori

Voir ce qui s’est passĂ© aprĂšs coup : chaque Ă©tape, chaque dĂ©cision, chaque tentative

Les logs sont votre seule option, et ils sont éphémÚres

Déploiement à chaud sans interruption

Déployer une nouvelle version de fonction sans tuer les exécutions en cours

Un redémarrage de processus tue tout

ContrĂŽle de concurrence

ExĂ©cuter seulement N instances d’une compĂ©tence Ă  la fois

Pas de primitives de concurrence intégrées

« ExĂ©cutez-le simplement dans un conteneur » vous donne de la disponibilitĂ©. Ça ne vous donne pas de la correction. Un conteneur qui redĂ©marre aprĂšs un crash ramĂšne le processus, mais chaque boucle en cours recommence depuis le dĂ©but. Chaque Ă©tape est rĂ©exĂ©cutĂ©e. Chaque appel LLM est refait. La boucle a l’air de tourner, mais elle tourne Ă  l’aveugle.

Comparaison avec les outils existants

Certains outils peuvent vous offrir une solution « clĂ© en main » Ă©lĂ©gante pour ce type de systĂšme, ou vous pourriez choisir de bricoler des outils de plus bas niveau et crĂ©er votre propre systĂšme. Aucun choix n’est mauvais, mais la bonne couche d’architecture doit vous permettre, ainsi qu’à votre agent, d’évoluer dans le temps. Flexible, dynamique, durable.

Des primitives d’exĂ©cution durable qui s’intĂšgrent bien Ă  un agent, que l’agent peut facilement Ă©crire, et l’observabilitĂ© et les API pour observer et permettre Ă  l’agent lui-mĂȘme d’ĂȘtre conscient de l’orchestration.

Un exemple fonctionnel

Nous testons ces modĂšles en interne chez Inngest et vous pouvez en voir un concept dans le dĂ©pĂŽt du projet « utah » ici : https://github.com/inngest/utah. C’est un harnais d’agent construit sur l’orchestration durable d’Inngest, qui est Ă©galement conscient de l’orchestration.

Le systĂšme comprend un processus sidecar qui permet Ă  l’agent principal d’écrire et de modifier des fonctions Inngest dans son propre espace de travail, s’étendant ainsi avec des « compĂ©tences » (dans le contexte de cet article). BientĂŽt, nous prĂ©voyons de fournir un systĂšme complet avec des boucles de dĂ©marrage en exemple, mais les idĂ©es qui y sont prĂ©sentes peuvent illustrer les concepts de cet article de maniĂšre plus claire.

La boucle qui s’accumule

Le rĂ©cent article de Satya Nadella a nommĂ© quelque chose que l’industrie ressentait : le fossĂ© n’est pas le modĂšle — c’est la boucle.

Sa dĂ©finition : il existe deux types de capital. Le capital humain, les connaissances et le jugement que votre Ă©quipe a bĂątis au fil des ans. Et ce qu’il appelle le capital de tokens, les workflows IA, les schĂ©mas de dĂ©cision et les compĂ©tences apprises qu’une entreprise construit par-dessus les modĂšles fondamentaux.

La thĂšse : ces deux capitaux s’accumulent. Chaque workflow amĂ©liorĂ© gĂ©nĂšre un meilleur signal. Un meilleur signal produit un comportement IA plus prĂ©cis. Un comportement plus prĂ©cis libĂšre de l’attention humaine pour un travail Ă  plus haut jugement. Une machine Ă  grimper les collines.

C’est ce que l’architecture de boucle d’agent permet concrùtement :

  • Chaque compĂ©tence durable dĂ©ployĂ©e par l’agent est une connaissance institutionnelle encodĂ©e sous forme d’infrastructure exĂ©cutable. Elle persiste. Elle s’exĂ©cute qu’un humain regarde ou non.
  • Une boucle de rĂ©vision dĂ©clenchĂ©e par cron qui Ă©value la performance des compĂ©tences et itĂšre. C’est la machine Ă  grimper les collines rendue rĂ©elle. Pas un diagramme de volant d’inertie dans un deck. Une fonction avec un dĂ©clencheur cron.
  • Si vos compĂ©tences meurent au redĂ©marrage du processus, l’accumulation revient Ă  zĂ©ro. La durabilitĂ© est ce qui fait que l’investissement persiste.

Le point clĂ© de Nadella : « Une entreprise devrait pouvoir remplacer un modĂšle ‘gĂ©nĂ©raliste’ sans perdre l’expertise de ‘vĂ©tĂ©ran de l’entreprise’ intĂ©grĂ©e dans son systĂšme d’apprentissage. » C’est le modĂšle de la bibliothĂšque de compĂ©tences. Les fonctions durables ne se soucient pas du LLM qui les appelle.

Construisez en conséquence

La conversation a porté sur ce que font les agents : boucles, outils, raisonnement, ingénierie de contexte. La prochaine conversation porte sur ce qui fait tourner les agents.

Trois couches : boucle, compĂ©tence, orchestrateur. La boucle est l’unitĂ© de travail. La compĂ©tence est l’actif. Le moteur d’orchestration est ce qui rend les deux durables. Le modĂšle sidecar est l’approche : un agent Ă©crit ses propres compĂ©tences durables, les dĂ©ploie, examine leur performance et itĂšre. Pas une expĂ©rience de pensĂ©e. C’est un modĂšle fonctionnel.

Nous avons construit Inngest pour ĂȘtre le moteur d’orchestration pour cela : step.run(), step.invoke(), dĂ©clencheurs cron, contrĂŽle de flux pilotĂ© par Ă©vĂ©nements, contrĂŽles de concurrence, et observabilitĂ© complĂšte au niveau de l’étape. Mais le modĂšle architectural est plus grand que n’importe quel outil unique. Si vous construisez des boucles d’agent en production, dĂ©finissez les trois couches.

Les primitives existent aujourd’hui. Construisez en consĂ©quence.

Enregistrer en un clic

Lire les articles viraux en profondeur avec l’IA de YouMind

Enregistrez la source, posez des questions ciblĂ©es, rĂ©sumez l’argument et transformez un article viral en notes rĂ©utilisables dans un seul espace de travail IA.

Découvrir YouMind
Pour les créateurs

Transformez votre Markdown en un article 𝕏 impeccable

Quand vous publiez vos propres textes longs, la mise en forme 𝕏 des images, tableaux et blocs de code est pĂ©nible. YouMind transforme un brouillon Markdown complet en un article 𝕏 impeccable, prĂȘt Ă  publier.

Essayer Markdown vers 𝕏

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux