Aller au contenu
Guides

Swarm dans OpenClaw

Déployer des sous-agents depuis un script Code Mode, les limites, les enfants collecteurs, et comment suivre et arrêter un essaim

6 min de lecture

Swarm est la façon dont un agent OpenClaw répartit du travail sur de nombreux sous-agents depuis un script Code Mode. La documentation insiste sur la forme : le flux de contrôle JavaScript ou TypeScript normal, Promise.all, while et if, sans DSL de graphe ni format de flux de travail séparé, et ce que Swarm ajoute, ce sont des enfants collecteurs attendables, des résultats structurés, une concurrence bornée et un rapport de progression. Il est activé par défaut avec un retrait explicite. Voici quand y recourir, les limites, l’API invitée, comment les enfants collecteurs se comportent, et comment observer ou arrêter une exécution.

Quand et comment

  • Utilisez un lancement ordinaire avec annonce pour un ou quelques enfants ; réservez Swarm au grand déploiement parallèle, plusieurs enfants semblables, environ cinq ou plus, typiquement pilotés par l’appel d’exécution dans Promise.all.
  • Il faut Code Mode activé et Swarm laissé actif ; les globales invitées, run, phase et log, n’apparaissent que quand le catalogue contient l’outil de lancement natif et que la liste d’autorisation d’exécution le permet, et un outil MCP du même nom ne compte pas.
  • Les valeurs par défaut : huit enfants collecteurs en simultané par groupe, les autres en file dans l’ordre, cinquante enfants vivants par groupe, deux cents sur la durée de vie d’un groupe comme garde-fou contre l’emballement, un délai d’attente d’au plus six cents secondes avec trente par défaut pour l’appel, et un agent par défaut facultatif pour les enfants.
  • Retirez-vous avec la clé swarm à false, ou par agent, où un objet ne contenant que des limites hérite de l’activation globale et ne réactive jamais un off global.
Il n’y a pas de DSL de graphe ni de format de flux de travail séparé. Le programme est l’orchestration.

L’API invitée

L’appel d’exécution prend un prompt et des options, libellé, modèle, réflexion, mode rapide, identifiant d’agent, schéma et phase. Sans schéma, il se résout en texte final de l’enfant ; avec un schéma JSON, il se résout en valeur que l’enfant a soumise par un outil de sortie structurée synthétique, avec une relance corrective pour une charge invalide et le texte brut plus une erreur de schéma sinon. Un enfant échoué, tué, expiré ou invalide selon le schéma rejette avec une erreur dont le nom, l’identifiant d’exécution, l’état et le message l’identifient. L’exemple de déploiement de la documentation utilise Promise.allSettled plutôt que Promise.all, parce qu’allSettled préserve les résultats partiels tandis qu’all rejette à la première panne, et la règle qui suit est de garder le travail terminé, de rapporter les voies échouées, et de ne jamais relancer le lot automatiquement. Une boucle de décision doit être bornée ; le plafond de durée de vie est un garde-fou, pas une condition d’arrêt. Promise.race réagit au premier enfant qui termine.

Les enfants collecteurs

  • Ce sont des sessions de sous-agents isolées ordinaires avec un chemin de fin différent : elles écrivent un résultat collecteur durable que le parent attend, n’envoient aucune notification de fin et ne peuvent pas être orientées ; l’agent cible se résout depuis l’appel, puis la valeur par défaut configurée, puis l’agent demandeur.
  • Les approbations échouent de façon fermée : un enfant n’ouvre jamais d’invite d’approbation d’opérateur, une action qui en exigerait une est refusée, et l’enfant peut rapporter le refus dans son résultat. Un agent ouvrier dédié et léger, configuré par vous puisqu’aucun n’est livré, et durci avec Swarm désactivé dans sa propre configuration, est la cible que suggère la documentation.
  • Gardez les groupes plats : les enfants collecteurs imbriqués sont déconseillés, les plafonds et l’observabilité supposent des groupes plats, et une profondeur de lancement de un l’impose. Les enfants avec annonce utilisent le budget d’enfants par agent de cinq ; les enfants collecteurs n’utilisent que les plafonds de groupe.

Les sous-agents d’OpenClaw est la couche de politique sous laquelle tournent ces enfants, et Le bac à sable d’OpenClaw expliqué l’isolation que chacun reçoit.

Observer, arrêter, autres harnais

Gardez la session parente ouverte : l’interface de contrôle et les applications natives montrent un widget de progression avec les comptes en file, en cours, terminés et échoués, des détails d’enfants dépliables, jusqu’à quatre groupes actifs plus le dernier terminé, et des comptes qui survivent à un rechargement parce qu’ils viennent des enregistrements collecteurs conservés. Stop dans le chat parent annule les enfants collecteurs et leurs descendants ; s’il signale une annulation incomplète, la page des tâches est là où le reste se réessaie. Sans Code Mode, les mêmes outils de base fonctionnent depuis n’importe quel harnais : lancer avec collecte et drainer avec des appels d’attente bornés qui acceptent jusqu’à mille identifiants d’exécution et renvoient des tableaux terminés, en attente et en erreur, une longue interrogation bornée plutôt qu’une boucle active. Les limites sont des enfants à coup unique, pas d’API d’ouvrier multi-tours avec état, la seule voie de la passerelle locale, et pas de définitions de flux de travail enregistrées. Le suivi d’usage d’OpenClaw est là où apparaît la dépense d’un large déploiement.

Sur Diali

Sur Diali, la voie des sous-agents tourne dans l’instance isolée propre à l’assistant, et la dépense de modèle d’un déploiement atterrit sur le solde de crédits de l’assistant, qui est le nombre à dimensionner avant d’écrire une boucle. OpenClaw hébergé sur Diali est l’assistant et Calculateur de crédits IA transforme un déploiement prévu en crédits.

  • Le programme est l’orchestration.
  • Huit à la fois, cinquante vivants, deux cents par groupe.
  • Les enfants collecteurs échouent de façon fermée et ne sont jamais relancés automatiquement.
Commencer

Arrêtez de lire, construisez le vôtre

Configurez un agent, choisissez un canal, et faites-le travailler dans l’application que vous gardez déjà ouverte.