channels.<channel>.streaming.mode: "progress" et OpenClaw crée le
message dès que le travail réel commence, le modifie à mesure que l’agent lit, planifie, appelle
des outils ou attend une approbation, puis le transforme en réponse finale.
Discord utilise déjà
streaming.mode: "progress" par défaut lorsque
channels.discord.streaming n’est pas défini ; les brouillons de progression
y apparaissent donc sans aucune configuration. Tous les autres canaux utilisent par défaut partial
ou off ; consultez Diffusion en continu et segmentation
pour le tableau complet des valeurs par défaut de chaque canal.Démarrage rapide
Ce que voient les utilisateurs
Pour la progression brute des outils, l’étiquette apparaît lorsque l’agent commence un travail significatif
et reste actif pendant le délai initial.
Elle se trouve en haut de la liste déroulante des lignes de progression et disparaît donc du champ visible dès que
suffisamment de lignes de travail concrètes apparaissent. Un titre d’état affiche uniquement l’état
de l’agent en langage courant, sauf si une étiquette est configurée explicitement. Les réponses composées
uniquement de texte brut n’affichent jamais de brouillon de progression ; une ligne n’apparaît que pour de véritables mises à jour de travail,
par exemple
🛠️ Bash: run tests, 🔎 Web Search: for "discord edit message"
ou ✍️ Write: to /tmp/file.
La réponse finale remplace le brouillon sur place lorsque le canal peut le faire
en toute sécurité ; sinon, OpenClaw envoie la réponse finale par le mécanisme de livraison normal et
nettoie le brouillon ou cesse de le mettre à jour (consultez Finalisation).
Choisir un mode
channels.<channel>.streaming.mode contrôle le comportement visible pendant l’exécution :
Choisissez
progress lorsque les utilisateurs accordent plus d’importance à « ce qui se passe » qu’à l’affichage
du texte de la réponse jeton par jeton ; partial lorsque le texte de la réponse lui-même constitue
le signal de progression ; block pour de plus grands blocs d’aperçu. Sur Discord et
Telegram, streaming.mode: "block" reste une diffusion de l’aperçu, et non une livraison normale
de réponses par blocs — utilisez streaming.block.enabled pour cela.
Configurer les étiquettes
Les étiquettes de progression se trouvent souschannels.<channel>.streaming.progress. L’étiquette par défaut
des lignes d’outil brutes est "auto", qui utilise l’étiquette intégrée simple Working.
Un titre d’état masque cette étiquette implicite ; définissez
label: "auto" explicitement si vous souhaitez également afficher une étiquette au-dessus :
label: "auto") :
Contrôler les lignes de progression
Les lignes de progression proviennent d’événements d’exécution réels : démarrages d’outils, mises à jour d’éléments, plans de tâches, approbations, sorties de commandes, résumés de correctifs et activités similaires de l’agent. Elles sont activées par défaut (progress.toolProgress, valeur par défaut true).
Les outils peuvent également émettre une progression typée pendant qu’un appel unique est toujours en cours. C’est
ainsi qu’une récupération ou une recherche lente met à jour le brouillon visible avant que l’outil
ne renvoie son résultat final. La mise à jour de progression est un résultat d’outil partiel avec
un contenu de modèle vide et des métadonnées explicites de canal public :
progress.text dans l’interface de progression du canal. Le résultat
normal de l’outil arrive toujours ultérieurement sous la forme content/details et constitue la seule partie
renvoyée au modèle.
Lorsque vous ajoutez une progression à un outil, émettez un message court et générique, puis retardez-le
jusqu’à ce que l’opération soit en attente depuis assez longtemps pour qu’il soit utile. web_fetch
fait exactement cela avec un délai de 5 secondes :
Mode de détail
OpenClaw utilise le même formateur pour les brouillons de progression et/verbose :
"explain" est la valeur par défaut et maintient la stabilité des brouillons grâce à des étiquettes concises.
"raw" ajoute la commande sous-jacente lorsqu’elle est disponible, ce qui est utile pendant
le débogage, mais plus encombrant dans la discussion. Par exemple, un appel node --check /tmp/app.js
est affiché différemment selon le mode :
Texte de commande/d’exécution
streaming.progress.commandText (valeur par défaut "raw") contrôle la quantité de détails de commande
affichée à côté des lignes de progression exec/bash, indépendamment du mode de détail
ci-dessus. Définissez-le sur "status" pour conserver une ligne de progression d’outil visible tout en masquant
entièrement le texte de la commande :
Voie de commentaires
streaming.progress.commentary (valeur par défaut false) intercale la narration
de commentaires/préambule du modèle avant l’utilisation des outils (💬, par exemple « Je vais vérifier… puis
… ») avec les lignes d’outil dans le brouillon. Consultez
Diffusion en continu et segmentation pour la
structure de configuration partagée entre les canaux.
Lorsque la voie de commentaires est activée, les préambules sont affichés uniquement sous forme de ces lignes 💬
intercalées ; le titre d’état ci-dessous reste à l’écart afin que la voie conserve sa
structure documentée.
Titre d’état
Sur Discord et Telegram en mode progression, le préambule typé du modèle avant l’utilisation des outils devient le titre d’état du brouillon lorsqu’il est disponible. Les autres canaux en mode progression conservent leur comportement d’état existant. Le titre est activé par défaut et ne contourne pas le seuil d’activité normal pour les tours courts ; l’activation destreaming.progress.commentary transmet plutôt les préambules à la voie de
commentaires intercalés.
Sur Discord, lorsqu’un modèle utilitaire est résolu pour l’agent — un
utilityModel explicite ou la valeur par défaut
de petit modèle déclarée par le fournisseur principal (OpenAI → gpt-5.6-luna,
Anthropic → claude-haiku-4-5) — il fournit un court texte temporaire en langage courant
lorsque le modèle n’émet aucun préambule ou reste silencieux pendant environ 20 secondes
(le titre de Telegram repose aujourd’hui uniquement sur le préambule) :
streaming.progress.narration, valeur par défaut
true) et ne se rabat jamais sur le modèle principal : elle s’exécute uniquement avec un
utilityModel explicite ou une valeur par défaut déclarée par le fournisseur principal
de l’agent. Définissez utilityModel: "" pour désactiver entièrement le routage utilitaire. Les lignes d’outil
continuent de s’accumuler en dessous et réapparaissent si les deux sources d’état s’arrêtent. Les modifications
du brouillon attendent toujours le seuil d’activité normal et un véritable
changement de texte, ce qui évite les apparitions fugaces lors des tours rapides et réduit les modifications répétées dans les canaux
très actifs. Définissez narration: false pour désactiver uniquement le texte temporaire du modèle utilitaire ; les titres
de préambule du modèle restent activés :
commandText: "status", l’entrée de narration omet également le texte des commandes exec/bash,
conformément à ce qu’affiche le brouillon.
Limites de lignes
Limitez le nombre de lignes qui restent visibles (valeur par défaut : 8) :Affichage enrichi (Slack)
Slack peut afficher les lignes de progression sous forme de champs Block Kit structurés plutôt que de texte brut :Masquer les lignes d’outil/de tâche
Conservez le brouillon de progression unique, mais masquez les lignes d’outil et de tâche :toolProgress: false, OpenClaw supprime toujours les anciens messages autonomes
de progression des outils pour ce tour — le canal reste visuellement silencieux jusqu’à
la réponse finale, à l’exception du libellé si celui-ci est configuré.
Comportement des canaux
Les canaux qui ne prennent pas en charge la modification de façon sûre utilisent à la place les indicateurs de saisie ou
l’envoi de la réponse finale uniquement. Consultez Diffusion en continu et segmentation pour obtenir
la répartition complète du comportement d’exécution par canal.
Finalisation
Lorsque la réponse finale est prête, OpenClaw tente de préserver la clarté de la conversation :- En mode
progresssur Discord, la réponse finale est envoyée sous forme de nouveau message auquel est ajouté un petit reçu d’activité-#(par exemple-# 🧠 2 thoughts · 🛠️ 5 tool calls · ⏱️ 12s), et le brouillon d’état est supprimé une fois cette réponse livrée. Dans les canaux très actifs, aucun journal d’outil orphelin ne reste au-dessus de la réponse ; en cas d’erreur finale, le brouillon est conservé comme trace visible du tour ayant échoué. - Si le brouillon peut devenir la réponse finale de façon sûre (modes
partial/block), OpenClaw le modifie sur place. - Si le canal utilise une diffusion en continu native de la progression, OpenClaw finalise ce flux lorsque le transport natif accepte le texte final.
- Dans les autres cas (média, demande d’approbation, cible de réponse explicite, trop grand nombre de segments ou échec de modification/d’envoi), OpenClaw envoie la réponse finale par le chemin d’envoi normal du canal au lieu de remplacer le brouillon.
Résolution des problèmes
Je ne vois que la réponse finale. Vérifiez quechannels.<channel>.streaming.mode est défini sur progress pour le compte
ou le canal qui a traité le message. Certains chemins de groupe ou de réponse avec citation désactivent
les aperçus de brouillon pour un tour lorsque le canal ne peut pas modifier de façon sûre le
bon message.
Je vois le libellé, mais aucune ligne d’outil.
Vérifiez streaming.progress.toolProgress. S’il est défini sur false, OpenClaw conserve le
comportement à brouillon unique, mais masque les lignes de progression des outils et des tâches.
Je vois un nouveau message final plutôt qu’un brouillon modifié.
Il s’agit du mécanisme de repli de sécurité décrit dans Finalisation. Cela peut
se produire pour les réponses contenant des médias, les réponses longues, les cibles de réponse explicites, les anciens brouillons
Telegram, les cibles de fil Slack manquantes, les messages d’aperçu supprimés ou l’échec de
la finalisation du flux natif.
Je vois encore des messages autonomes de progression.
Le mode de progression supprime les messages autonomes de progression des outils par défaut lorsqu’un
brouillon est actif. Si des messages autonomes apparaissent encore, vérifiez que le tour utilise
bien le mode progress, et non streaming.mode: "off" ni un chemin de
canal qui ne peut pas créer de brouillon pour ce message.
Teams se comporte différemment de Discord ou Telegram.
Microsoft Teams utilise un flux natif dans les conversations personnelles plutôt que le transport générique
d’aperçu par envoi et modification, et associe streaming.mode: "block" à l’envoi par
blocs de Teams, car il ne dispose pas d’un mode de blocs d’aperçu de brouillon comme Discord et
Telegram.