Messages and delivery
Fortschrittsentwürfe
Fortschrittsentwürfe verwandeln eine Kanalnachricht in eine Live-Statuszeile, während ein
Agent arbeitet, statt einen Stapel temporärer „wird noch bearbeitet“-Antworten zu erzeugen. Legen Sie
channels.<channel>.streaming.mode: "progress" fest, und OpenClaw erstellt die
Nachricht, sobald die eigentliche Arbeit beginnt, bearbeitet sie, während der Agent liest, plant, Tools
aufruft oder auf eine Genehmigung wartet, und verwandelt sie anschließend in die endgültige Antwort.
Wird bearbeitet...📖 aus docs/concepts/progress-drafts.md🔎 Websuche: nach "discord edit message"🛠️ Bash: Tests ausführenSchnellstart
{ channels: { discord: { streaming: { mode: "progress", }, }, },}Ab hier gelten folgende Standardwerte: eine Startverzögerung von 5 Sekunden, kompakte Fortschrittszeilen, während sinnvolle Arbeit stattfindet, und die Unterdrückung der älteren eigenständigen Fortschrittsmeldungen für diesen Durchlauf. Entwürfe mit unverarbeiteten Tool-Zeilen verwenden automatisch eine Einwortbezeichnung; eine Statusüberschrift lässt diesen redundanten Titel weg, sofern Sie nicht ausdrücklich einen konfigurieren.
Diese Seite behandelt die Bedienung von Fortschrittsentwürfen und ihre Konfigurationsoptionen. Die vollständige Matrix der Streaming-Modi, kanalspezifische Laufzeithinweise und die Migration veralteter Schlüssel finden Sie unter Streaming und Aufteilung.
Was Benutzende sehen
| Teil | Zweck |
|---|---|
| Statusüberschrift | Bei Discord und Telegram die Präambel des Modells; Discord ergänzt einen Hilfsmodell-Platzhalter. |
| Bezeichnung | Optionale Start-/Statuszeile wie Working. |
| Fortschrittszeilen | Kompakte Aktualisierungen des Durchlaufs mit denselben Tool-Symbolen und demselben Detailformatierer wie /verbose. |
Bei unverarbeitetem Tool-Fortschritt erscheint die Bezeichnung, sobald der Agent mit sinnvoller Arbeit beginnt
und über die anfängliche Verzögerung hinaus beschäftigt bleibt.
Sie steht oben in der fortlaufenden Liste der Fortschrittszeilen und scrollt daher aus dem sichtbaren Bereich,
sobald genügend konkrete Arbeitszeilen erscheinen. Eine Statusüberschrift zeigt nur den
Klartextstatus des Agents, sofern nicht ausdrücklich eine Bezeichnung konfiguriert ist. Reine Textantworten
zeigen niemals einen Fortschrittsentwurf; eine Zeile erscheint nur bei tatsächlichen Arbeitsaktualisierungen,
zum Beispiel 🛠️ Bash: run tests, 🔎 Web Search: for "discord edit message"
oder ✍️ Write: to /tmp/file.
Die endgültige Antwort ersetzt den Entwurf direkt, wenn der Kanal dies sicher unterstützt; andernfalls sendet OpenClaw die endgültige Antwort über die normale Zustellung und bereinigt den Entwurf oder aktualisiert ihn nicht weiter (siehe Abschluss).
Modus auswählen
channels.<channel>.streaming.mode steuert das sichtbare Verhalten während der Bearbeitung:
| Modus | Am besten geeignet für | Anzeige im Chat |
|---|---|---|
off |
Ruhige Kanäle | Nur die endgültige Antwort. |
partial |
Beobachten des entstehenden Antworttexts | Ein Entwurf, der mit dem neuesten Antworttext bearbeitet wird. |
block |
Größere Blöcke der Antwortvorschau | Eine Vorschau, die in größeren Blöcken aktualisiert oder ergänzt wird. |
progress |
Tool-intensive oder lange Durchläufe | Ein Statusentwurf, danach die endgültige Antwort. |
Wählen Sie progress, wenn Benutzenden „was gerade passiert“ wichtiger ist, als
den Antworttext Token für Token entstehen zu sehen; partial, wenn der Antworttext selbst
das Fortschrittssignal ist; block für größere Vorschaublöcke. Bei Discord und
Telegram ist streaming.mode: "block" weiterhin Vorschau-Streaming und keine normale
Blockantwort-Zustellung – verwenden Sie dafür streaming.block.enabled.
Bezeichnungen konfigurieren
Fortschrittsbezeichnungen befinden sich unter channels.<channel>.streaming.progress. Die standardmäßige
Bezeichnung für unverarbeitete Tool-Zeilen ist "auto", wodurch die einfache integrierte Bezeichnung Working
verwendet wird. Eine Statusüberschrift blendet diese implizite Bezeichnung aus; legen Sie
label: "auto" ausdrücklich fest, wenn Sie auch darüber eine Bezeichnung wünschen:
Wird bearbeitetEine feste Bezeichnung verwenden:
{ channels: { discord: { streaming: { mode: "progress", progress: { label: "Untersuchung läuft", }, }, }, },}Einen eigenen Bezeichnungspool verwenden (wird bei label: "auto" weiterhin zufällig/anhand des Seeds ausgewählt):
{ channels: { discord: { streaming: { mode: "progress", progress: { label: "auto", labels: ["Prüfung", "Lesen", "Testen", "Abschluss"], }, }, }, },}Die Bezeichnung ausblenden und nur Fortschrittszeilen anzeigen:
{ channels: { discord: { streaming: { mode: "progress", progress: { label: false, }, }, }, },}Fortschrittszeilen steuern
Fortschrittszeilen stammen aus tatsächlichen Durchlaufereignissen: Tool-Starts, Elementaktualisierungen, Aufgabenpläne,
Genehmigungen, Befehlsausgaben, Patch-Zusammenfassungen und ähnliche Agent-Aktivitäten.
Sie sind standardmäßig aktiviert (progress.toolProgress, Standardwert true).
Tools können außerdem typisierten Fortschritt ausgeben, während ein einzelner Aufruf noch läuft. So aktualisiert ein langsamer Abruf oder eine langsame Suche den sichtbaren Entwurf, bevor das Tool sein endgültiges Ergebnis zurückgibt. Die Fortschrittsaktualisierung ist ein partielles Tool-Ergebnis mit leerem Modellinhalt und expliziten öffentlichen Kanalmetadaten:
{ "content": [], "progress": { "text": "Seiteninhalt wird abgerufen...", "visibility": "channel", "privacy": "public", "id": "web_fetch:fetching" }}OpenClaw rendert nur progress.text in der Fortschrittsoberfläche des Kanals. Das normale
Tool-Ergebnis trifft später weiterhin als content/details ein und ist der einzige Teil,
der an das Modell zurückgegeben wird.
Wenn Sie einem Tool Fortschritt hinzufügen, geben Sie eine kurze, allgemeine Nachricht aus und verzögern Sie sie,
bis der Vorgang lange genug aussteht, damit die Anzeige nützlich ist. web_fetch
erledigt genau dies mit einer Verzögerung von 5 Sekunden:
const clearProgressTimer = scheduleToolProgress( onUpdate, { text: "Seiteninhalt wird abgerufen...", id: "web_fetch:fetching" }, 5_000, { signal },); try { return await runToolWork();} finally { clearProgressTimer();}Schnelle Aufrufe zeigen keine Fortschrittszeile; lange Aufrufe zeigen eine, solange sie noch ausstehen; abgebrochene Aufrufe löschen den Timer, bevor veralteter Fortschritt erscheinen kann. Fortschrittstext ist ein öffentlicher UI-Seitenkanal und darf daher niemals Geheimnisse, unverarbeitete Argumente, abgerufene Inhalte, Befehlsausgaben oder Seitentext enthalten.
Detailmodus
OpenClaw verwendet denselben Formatierer für Fortschrittsentwürfe und /verbose:
{ agents: { defaults: { toolProgressDetail: "explain", // explain | raw }, },}"explain" ist der Standardwert und hält Entwürfe mit prägnanten Bezeichnungen stabil.
"raw" hängt den zugrunde liegenden Befehl an, sofern verfügbar. Dies ist beim
Debuggen nützlich, im Chat jedoch unübersichtlicher. Beispielsweise wird ein node --check /tmp/app.js-Aufruf
je nach Modus unterschiedlich gerendert:
| Modus | Fortschrittszeile |
|---|---|
explain |
🛠️ check js syntax for /tmp/app.js |
raw |
🛠️ check js syntax for /tmp/app.js · node --check /tmp/app.js |
Befehls-/Exec-Text
streaming.progress.commandText (Standardwert "raw") steuert unabhängig vom obigen Detailmodus,
wie viele Befehlsdetails neben Exec-/Bash-Fortschrittszeilen angezeigt werden.
Setzen Sie den Wert auf "status", um eine Tool-Fortschrittszeile sichtbar zu halten und
den Befehlstext vollständig auszublenden:
{ channels: { discord: { streaming: { mode: "progress", progress: { commandText: "status", }, }, }, },}Kommentarspur
streaming.progress.commentary (Standardwert false) verschachtelt die
Kommentar-/Präambelerzählung des Modells vor dem Tool-Aufruf (💬, zum Beispiel „Ich prüfe ... und anschließend
...“) mit den Tool-Zeilen im Entwurf. Die
gemeinsame Konfigurationsstruktur für alle Kanäle finden Sie unter
Streaming und Aufteilung.
Wenn die Kommentarspur aktiviert ist, werden Präambeln nur als diese verschachtelten 💬-Zeilen gerendert; die darunterliegende Statusüberschrift wird ausgeblendet, damit die Spur ihre dokumentierte Struktur beibehält.
Statusüberschrift
Bei Discord und Telegram wird im Fortschrittsmodus die typisierte Präambel des Modells vor dem Tool-Aufruf
zur Statusüberschrift des Entwurfs, sofern sie verfügbar ist. Andere
Kanäle im Fortschrittsmodus behalten ihr bisheriges Statusverhalten bei. Die Überschrift ist
standardmäßig aktiviert und umgeht bei kurzen Durchläufen nicht die normale Aktivitätsschwelle;
durch Aktivieren von streaming.progress.commentary werden Präambeln stattdessen an die verschachtelte
Kommentarspur übergeben.
Wenn bei Discord ein Hilfsmodell für den Agent aufgelöst wird – entweder ein explizites
utilityModel oder der vom primären
Provider deklarierte Standardwert für kleine Modelle (OpenAI → gpt-5.6-luna,
Anthropic → claude-haiku-4-5) –, liefert es einen kurzen Klartext-Platzhalter,
wenn das Modell keine Präambel ausgibt oder ungefähr 20 Sekunden lang still war
(die Überschrift von Telegram basiert derzeit ausschließlich auf der Präambel):
Das Standardmodell in Ihrer Konfiguration wird aktualisiert und anschließend wird das Gateway neu gestartet,damit die Änderung übernommen wird. Ein Aufruf zum Auflisten der Agents ist fehlgeschlagen und wird erneut versucht.Die Erzählung ist standardmäßig aktiviert (streaming.progress.narration, Standardwert
true) und greift niemals auf das primäre Modell zurück: Sie wird nur mit einem expliziten
utilityModel oder einem vom Provider deklarierten Standardwert für den primären
Provider des Agents ausgeführt. Setzen Sie utilityModel: "", um das Routing über das Hilfsmodell vollständig zu deaktivieren. Tool-Zeilen
werden darunter weiterhin gesammelt und erscheinen wieder, wenn beide Statusquellen aussetzen. Entwurfsbearbeitungen
warten weiterhin auf die normale Aktivitätsschwelle und eine tatsächliche
Textänderung. Dadurch werden kurzes Aufblitzen bei schnellen Durchläufen vermieden und die Anzahl der Bearbeitungen in stark frequentierten
Kanälen reduziert. Setzen Sie narration: false, um nur den Platzhalter des Hilfsmodells zu deaktivieren; Überschriften
aus Modellpräambeln bleiben aktiviert:
{ channels: { discord: { streaming: { mode: "progress", progress: { narration: false, }, }, }, },}Die Eingabe für die Erzählung ist begrenzt und bereinigt: Das Hilfsmodell erhält den
Text der eingehenden Anfrage sowie dieselben kompakten, bereinigten Tool-Zusammenfassungen, die der Entwurf
rendern würde – niemals unverarbeitete Befehlsausgaben oder Tool-Ergebnisse. Mit
commandText: "status" lässt die Eingabe für die Erzählung außerdem Exec-/Bash-Befehlstext weg,
entsprechend der Anzeige im Entwurf.
Zeilenbegrenzungen
Begrenzen Sie die Anzahl der sichtbaren Zeilen (Standardwert 8):
{ channels: { discord: { streaming: { mode: "progress", progress: { maxLines: 4, }, }, }, },}Fortschrittszeilen werden automatisch komprimiert, um den Umbruch der Chatblase während der Entwurfsbearbeitung zu reduzieren. OpenClaw kürzt außerdem lange Zeilen, damit sie bei wiederholten Entwurfsbearbeitungen nicht bei jeder Aktualisierung anders umbrechen. Das standardmäßige Budget pro Zeile beträgt 120 Zeichen; Fließtext wird an einer Wortgrenze abgeschnitten, während lange Details wie Pfade oder unverarbeitete Befehle mit Auslassungspunkten in der Mitte gekürzt werden, sodass das Ende sichtbar bleibt.
Das Budget pro Zeile anpassen:
{ channels: { discord: { streaming: { mode: "progress", progress: { maxLineChars: 160, }, }, }, },}Umfangreiche Darstellung (Slack)
Slack kann Fortschrittszeilen als strukturierte Block-Kit-Felder statt als Klartext rendern:
{ channels: { slack: { streaming: { mode: "progress", progress: { render: "rich", }, }, }, },}Bei der umfangreichen Darstellung wird zusammen mit den Block-Kit-Feldern stets derselbe Klartextinhalt gesendet, sodass Clients, die die umfangreichere Struktur nicht rendern können, weiterhin den kompakten Fortschrittstext anzeigen.
Tool-/Aufgabenzeilen ausblenden
Den einzelnen Fortschrittsentwurf beibehalten, aber Tool- und Aufgabenzeilen ausblenden:
{ channels: { discord: { streaming: { mode: "progress", progress: { toolProgress: false, }, }, }, },}Mit toolProgress: false unterdrückt OpenClaw für diesen Durchlauf weiterhin die älteren eigenständigen
Meldungen zum Tool-Fortschritt – der Channel bleibt visuell ruhig, bis
die endgültige Antwort erscheint, mit Ausnahme des Labels, sofern eines konfiguriert ist.
Channel-Verhalten
| Channel | Fortschrittsübertragung | Hinweise |
|---|---|---|
| Discord | Eine Nachricht senden und anschließend bearbeiten. | Verwendet standardmäßig den Modus progress; die endgültige Antwort enthält einen -#-Aktivitätsbeleg, und der Statusentwurf wird gelöscht, nachdem die Antwort eingegangen ist. |
| Matrix | Ein Ereignis senden und anschließend bearbeiten. | Die Streaming-Konfiguration auf Kontoebene steuert Entwürfe auf Kontoebene. |
| Microsoft Teams | Nativer Teams-Stream in persönlichen Chats. | streaming.mode: "block" wird stattdessen der Teams-Blockzustellung zugeordnet. |
| Slack | Nativer Stream oder bearbeitbarer Entwurfsbeitrag. | Erfordert ein Antwort-Thread-Ziel; DMs auf oberster Ebene ohne ein solches Ziel erhalten weiterhin Entwurfsvorschauen und Bearbeitungen. |
| Telegram | Eine Nachricht senden und anschließend bearbeiten. | Wenn zwischen dem Fortschrittsentwurf und der Antwort eine Nachricht eingeht, wird der Entwurf darunter erneut veröffentlicht (zuerst neu veröffentlichen, dann den alten löschen), statt im Client einen Sprung beim Scrollen zu verursachen. |
| Mattermost | Bearbeitbarer Entwurfsbeitrag. | Im Modus block wird zwischen abgeschlossenem Text und Beiträgen zu Tool-Aktivitäten gewechselt; in anderen Modi werden Tool-Aktivitäten in denselben entwurfsartigen Beitrag integriert. |
Channels ohne sichere Unterstützung für Bearbeitungen greifen auf Tippindikatoren oder die ausschließliche Zustellung der endgültigen Antwort zurück. Unter Streaming und Aufteilung finden Sie die vollständige Aufschlüsselung des Laufzeitverhaltens je Channel.
Abschluss
Wenn die endgültige Antwort bereit ist, versucht OpenClaw, den Chat übersichtlich zu halten:
- Im Modus
progressauf Discord wird die endgültige Antwort als neue Nachricht gesendet, an die ein kleiner-#-Aktivitätsbeleg angehängt wird (zum Beispiel-# 🧠 2 thoughts · 🛠️ 5 tool calls · ⏱️ 12s); der Statusentwurf wird gelöscht, sobald diese Antwort zugestellt wurde. In stark frequentierten Channels bleibt oberhalb der Antwort kein verwaistes Tool-Protokoll zurück; bei endgültigen Fehlermeldungen bleibt der Entwurf als sichtbarer Nachweis des fehlgeschlagenen Durchlaufs erhalten. - Wenn der Entwurf sicher in die endgültige Antwort umgewandelt werden kann (Modi
partial/block), bearbeitet OpenClaw ihn direkt. - Wenn der Channel natives Fortschritts-Streaming verwendet, schließt OpenClaw diesen Stream ab, sobald die native Übertragung den endgültigen Text akzeptiert.
- Andernfalls (Medien, eine Genehmigungsaufforderung, ein explizites Antwortziel, zu viele Blöcke oder ein fehlgeschlagenes Bearbeiten/Senden) sendet OpenClaw die endgültige Antwort über den normalen Zustellungsweg des Channels, anstatt den Entwurf zu überschreiben.
Dieser Fallback ist beabsichtigt: Eine neue endgültige Antwort zu senden ist besser, als Text zu verlieren, eine Antwort dem falschen Thread zuzuordnen oder einen Entwurf mit Nutzdaten zu überschreiben, die der Channel nicht sicher darstellen kann.
Fehlerbehebung
Ich sehe nur die endgültige Antwort.
Prüfen Sie, ob channels.<channel>.streaming.mode für das Konto
oder den Channel, das bzw. der die Nachricht verarbeitet hat, auf progress gesetzt ist. Bei einigen Gruppen- oder Zitatantwortpfaden werden
Entwurfsvorschauen für einen Durchlauf deaktiviert, wenn der Channel nicht sicher die richtige
Nachricht bearbeiten kann.
Ich sehe das Label, aber keine Tool-Zeilen.
Prüfen Sie streaming.progress.toolProgress. Wenn es auf false gesetzt ist, behält OpenClaw das
Verhalten mit einem einzelnen Entwurf bei, blendet jedoch die Fortschrittszeilen für Tools und Aufgaben aus.
Ich sehe eine neue endgültige Nachricht statt eines bearbeiteten Entwurfs.
Dabei handelt es sich um den unter Abschluss beschriebenen Sicherheits-Fallback. Er kann bei Medienantworten, langen Antworten, expliziten Antwortzielen, alten Telegram- Entwürfen, fehlenden Slack-Thread-Zielen, gelöschten Vorschaunachrichten oder einer fehlgeschlagenen Finalisierung des nativen Streams auftreten.
Ich sehe weiterhin eigenständige Fortschrittsmeldungen.
Der Fortschrittsmodus unterdrückt standardmäßige eigenständige Meldungen zum Tool-Fortschritt, sobald ein
Entwurf aktiv ist. Wenn weiterhin eigenständige Meldungen erscheinen, prüfen Sie, ob der Durchlauf
tatsächlich den Modus progress und nicht streaming.mode: "off" oder einen Channel-
Pfad verwendet, der für diese Nachricht keinen Entwurf erstellen kann.
Teams verhält sich anders als Discord oder Telegram.
Microsoft Teams verwendet in persönlichen Chats einen nativen Stream anstelle der generischen
Vorschauübertragung durch Senden und Bearbeiten und ordnet streaming.mode: "block" der Teams-
Blockzustellung zu, da es keinen Blockmodus für Entwurfsvorschauen wie Discord und
Telegram bietet.