Outil d’exécution en arrière-plan + processus
OpenClaw exécute des commandes shell via l’outilexec et conserve les tâches de longue durée en mémoire. L’outil process gère ces sessions en arrière-plan.
outil exec
Paramètres clés :command(requis)yieldMs(par défaut 10000) : passage automatique en arrière-plan après ce délaibackground(bool) : exécuter immédiatement en arrière-plantimeout(secondes, par défaut 1800) : arrêter le processus après ce délaielevated(bool) : exécuter sur l’hôte si le mode élevé est activé/autorisé- Besoin d’un vrai TTY ? Définissez
pty: true. workdir,env
- Les exécutions au premier plan renvoient directement la sortie.
- Lorsqu’il est mis en arrière-plan (explicitement ou par dépassement de délai), l’outil renvoie
status: "running"+sessionIdet une courte fin de sortie. - La sortie est conservée en mémoire jusqu’à ce que la session soit interrogée ou effacée.
- Si l’outil
processest interdit,execs’exécute de manière synchrone et ignoreyieldMs/background.
Pontage des processus enfants
Lors du lancement de processus enfants de longue durée en dehors des outils exec/process (par exemple, des relances de CLI ou des assistants de Gateway (passerelle)), attachez l’assistant de pontage des processus enfants afin que les signaux de terminaison soient relayés et que les écouteurs soient détachés lors de la sortie ou d’une erreur. Cela évite les processus orphelins sous systemd et maintient un comportement d’arrêt cohérent entre les plateformes. Substitutions d’environnement :PI_BASH_YIELD_MS: rendement par défaut (ms)PI_BASH_MAX_OUTPUT_CHARS: limite de sortie en mémoire (caractères)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: limite de stdout/stderr en attente par flux (caractères)PI_BASH_JOB_TTL_MS: TTL des sessions terminées (ms, borné entre 1 min et 3 h)
tools.exec.backgroundMs(par défaut 10000)tools.exec.timeoutSec(par défaut 1800)tools.exec.cleanupMs(par défaut 1800000)tools.exec.notifyOnExit(par défaut true) : mettre en file un événement système + demander un heartbeat lorsque l’exécution en arrière-plan se termine.tools.exec.notifyOnExitEmptySuccess(false par défaut) : lorsque défini sur true, ajoute également des événements de fin pour les exécutions en arrière-plan réussies n’ayant produit aucune sortie.
outil process
Actions :list: sessions en cours + terminéespoll: récupérer la nouvelle sortie d’une session (rapporte aussi le statut de sortie)log: lire la sortie agrégée (prend en chargeoffset+limit)write: envoyer stdin (data,eofoptionnel)kill: terminer une session en arrière-planclear: supprimer une session terminée de la mémoireremove: tuer si en cours d’exécution, sinon effacer si terminée
- Seules les sessions en arrière-plan sont listées/conservées en mémoire.
- Les sessions sont perdues lors du redémarrage du processus (pas de persistance sur disque).
- Les journaux de session ne sont enregistrés dans l’historique de chat que si vous exécutez
process poll/loget que le résultat de l’outil est enregistré. processest limité à l’agent ; il ne voit que les sessions démarrées par cet agent.process listinclut unnamedérivé (verbe de commande + cible) pour des analyses rapides.process logutilise desoffset/limitbasés sur les lignes (omettreoffsetpour récupérer les N dernières lignes).- Lorsque
offsetetlimitsont tous deux omis, renvoie les 200 dernières lignes et inclut une indication de pagination. - Lorsque
offsetest fourni et quelimitest omis, renvoie deoffsetjusqu’à la fin (non limité à 200).