Messages and delivery

Szkice postępów

Szkice postępu sprawiają, że długotrwałe tury agenta wydają się żywe na czacie, bez zamieniania rozmowy w stos tymczasowych odpowiedzi ze statusem.

Gdy szkice postępu są włączone, OpenClaw tworzy jedną widoczną wiadomość roboczą dopiero wtedy, gdy tura wykaże, że wykonuje rzeczywistą pracę, aktualizuje ją, gdy agent czyta, planuje, wywołuje narzędzia lub czeka na zatwierdzenie, a następnie zamienia ten szkic w odpowiedź końcową, gdy kanał może zrobić to bezpiecznie.

Shelling...
📖 Read: from docs/concepts/progress-drafts.md
🔎 Web Search: for "discord edit message"
🛠️ Exec: run tests

Używaj szkiców postępu, gdy chcesz mieć jedną uporządkowaną wiadomość statusową podczas pracy intensywnie korzystającej z narzędzi oraz odpowiedź końcową po zakończeniu tury.

Szybki start

Włącz szkice postępu dla kanału za pomocą streaming.mode: "progress":

{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
      },
    },
  },
}

To zwykle wystarcza. OpenClaw wybierze automatyczną jednowyrazową etykietę, poczeka, aż praca potrwa co najmniej pięć sekund albo wyemituje drugie zdarzenie pracy, doda zwięzłe wiersze postępu, gdy będzie wykonywana użyteczna praca, i wyciszy zduplikowane samodzielne komunikaty postępu dla tej tury.

Co widzą użytkownicy

Szkic postępu ma dwie części:

Część Cel
Etykieta Krótki tytuł, taki jak Thinking... lub Shelling....
Wiersze postępu Zwięzłe aktualizacje przebiegu z tymi samymi etykietami narzędzi i ikonami co szczegółowe wyjście.

Etykieta pojawia się po rozpoczęciu przez agenta znaczącej pracy i gdy pozostaje on zajęty przez pięć sekund albo emituje drugie zdarzenie pracy. Odpowiedzi zawierające wyłącznie zwykły tekst nie pokazują szkicu postępu. Wiersze postępu są dodawane tylko wtedy, gdy agent emituje użyteczne aktualizacje pracy, na przykład 🛠️ Exec, 🔎 Web Search lub ✍️ Write: to /tmp/file. Domyślnie używają tego samego zwięzłego trybu objaśnień co /verbose; ustaw agents.defaults.toolProgressDetail: "raw" podczas debugowania, gdy chcesz też dołączać surowe polecenia/szczegóły. Odpowiedź końcowa zastępuje szkic, gdy to możliwe; w przeciwnym razie OpenClaw wysyła odpowiedź końcową normalnie i czyści albo przestaje aktualizować szkic zgodnie z transportem kanału.

Wybór trybu

channels.<channel>.streaming.mode kontroluje widoczne zachowanie w toku:

Tryb Najlepszy do Co pojawia się na czacie
off Cichych kanałów Tylko odpowiedź końcowa.
partial Obserwowania pojawiania się tekstu odpowiedzi Jeden szkic edytowany najnowszym tekstem odpowiedzi.
block Większych fragmentów podglądu odpowiedzi Jeden podgląd aktualizowany lub dołączany w większych fragmentach.
progress Tur intensywnie korzystających z narzędzi lub długotrwałych Jeden szkic statusu, potem odpowiedź końcowa.

Wybierz progress, gdy użytkownikom bardziej zależy na tym, „co się dzieje”, niż na oglądaniu strumieniowania tekstu odpowiedzi token po tokenie.

Wybierz partial, gdy sama odpowiedź jest sygnałem postępu.

Wybierz block, gdy chcesz otrzymywać aktualizacje podglądu szkicu w większych fragmentach tekstu. W Discord i Telegram streaming.mode: "block" nadal oznacza strumieniowanie podglądu, a nie normalne dostarczanie bloków. Użyj streaming.block.enabled lub starszego blockStreaming, gdy chcesz normalnych odpowiedzi blokowych.

Konfiguracja etykiet

Etykiety postępu znajdują się pod channels.<channel>.streaming.progress.

Domyślna etykieta to auto, która wybiera z wbudowanej w OpenClaw puli jednowyrazowych etykiet z wielokropkiem:

Thinking...
Shelling...
Scuttling...
Clawing...
Pinching...
Molting...
Bubbling...
Tiding...
Reefing...
Cracking...
Sifting...
Brining...
Nautiling...
Krilling...
Barnacling...
Lobstering...
Tidepooling...
Pearling...
Snapping...
Surfacing...

Użyj stałej etykiety:

{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          label: "Investigating",
        },
      },
    },
  },
}

Użyj własnej automatycznej puli etykiet:

{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          label: "auto",
          labels: ["Checking", "Reading", "Testing", "Finishing"],
        },
      },
    },
  },
}

Ukryj etykietę i pokazuj tylko wiersze postępu:

{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          label: false,
        },
      },
    },
  },
}

Kontrolowanie wierszy postępu

Wiersze postępu są domyślnie włączone w trybie postępu. Pochodzą z rzeczywistych zdarzeń przebiegu: uruchomień narzędzi, aktualizacji elementów, planów zadań, zatwierdzeń, wyjścia poleceń, podsumowań poprawek i podobnej aktywności agenta.

OpenClaw używa tego samego formatera dla szkiców postępu i /verbose:

{
  agents: {
    defaults: {
      toolProgressDetail: "explain", // explain | raw
    },
  },
}

"explain" jest wartością domyślną i utrzymuje stabilność szkiców za pomocą zwięzłych etykiet, takich jak 🛠️ Exec: check JS syntax for /tmp/app.js. "raw" dołącza bazowe polecenie/szczegół, gdy jest dostępny, co jest przydatne podczas debugowania, ale powoduje więcej szumu na czacie.

Na przykład to samo polecenie wygląda inaczej w zależności od trybu szczegółowości:

Tryb Wiersz postępu
explain 🛠️ Exec: check JS syntax for /tmp/app.js
raw 🛠️ Exec: check JS syntax for /tmp/app.js, node --check /tmp/app.js

Ogranicz liczbę widocznych wierszy:

{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          maxLines: 4,
        },
      },
    },
  },
}

Wiersze postępu są automatycznie kompaktowane, aby zmniejszyć przesuwanie dymku czatu podczas edytowania szkicu.

OpenClaw domyślnie obcina długie wiersze postępu, aby powtarzane edycje szkicu nie zawijały się inaczej przy każdej aktualizacji. Prefiks pozostaje czytelny, a długie szczegóły, takie jak ścieżki lub surowe polecenia, są skracane wielokropkiem.

Slack może renderować wiersze postępu jako strukturalne pola Block Kit zamiast pojedynczej treści tekstowej:

{
  channels: {
    slack: {
      streaming: {
        mode: "progress",
        progress: {
          render: "rich",
        },
      },
    },
  },
}

Bogate renderowanie zachowuje ten sam zwykłotekstowy wariant awaryjny, dzięki czemu kanały i klienci, którzy nie obsługują bogatszego kształtu, nadal mogą pokazać zwięzły tekst postępu.

Zachowaj pojedynczy szkic postępu, ale ukryj wiersze narzędzi i zadań:

{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          toolProgress: false,
        },
      },
    },
  },
}

Przy toolProgress: false OpenClaw nadal wycisza starsze samodzielne wiadomości postępu narzędzi dla tej tury. Kanał pozostaje wizualnie cichy do odpowiedzi końcowej, z wyjątkiem etykiety, jeśli została skonfigurowana.

Zachowanie kanałów

Każdy kanał używa najczystszego obsługiwanego transportu:

Kanał Transport postępu Uwagi
Discord Wysyła jedną wiadomość, potem ją edytuje. Tekst końcowy jest edytowany w miejscu, gdy mieści się w jednej bezpiecznej wiadomości podglądu.
Matrix Wysyła jedno zdarzenie, potem je edytuje. Konfiguracja strumieniowania na poziomie konta kontroluje szkice na poziomie konta.
Microsoft Teams Natywny strumień Teams w czatach osobistych. streaming.mode: "block" mapuje się na dostarczanie bloków Teams.
Slack Natywny strumień lub edytowalny wpis szkicu. Dostępność wątku wpływa na to, czy można użyć natywnego strumieniowania.
Telegram Wysyła jedną wiadomość, potem ją edytuje. Starsze widoczne szkice mogą zostać zastąpione, aby znaczniki czasu odpowiedzi końcowych pozostały użyteczne.
Mattermost Edytowalny wpis szkicu. Aktywność narzędzi jest składana do tego samego wpisu w stylu szkicu.

Kanały bez bezpiecznej obsługi edycji zwykle wracają do wskaźników pisania lub dostarczania tylko odpowiedzi końcowej.

Finalizacja

Gdy odpowiedź końcowa jest gotowa, OpenClaw próbuje utrzymać porządek na czacie:

  • Jeśli szkic może bezpiecznie stać się odpowiedzią końcową, OpenClaw edytuje go w miejscu.
  • Jeśli kanał używa natywnego strumieniowania postępu, OpenClaw finalizuje ten strumień, gdy natywny transport zaakceptuje tekst końcowy.
  • Jeśli odpowiedź końcowa zawiera multimedia, prośbę o zatwierdzenie, jawny cel odpowiedzi, zbyt wiele fragmentów albo nieudaną edycję/wysyłkę, OpenClaw wysyła odpowiedź końcową przez normalną ścieżkę dostarczania kanału.

Ścieżka awaryjna jest celowa. Lepiej wysłać świeżą odpowiedź końcową niż stracić tekst, źle osadzić odpowiedź w wątku albo nadpisać szkic ładunkiem, którego kanał nie może bezpiecznie reprezentować.

Rozwiązywanie problemów

Widzę tylko odpowiedź końcową.

Sprawdź, czy channels.<channel>.streaming.mode jest ustawione na progress dla konta lub kanału, który obsłużył wiadomość. Niektóre ścieżki grupowe lub odpowiedzi cytowanej mogą wyłączyć podglądy szkiców dla tury, gdy kanał nie może bezpiecznie edytować właściwej wiadomości.

Widzę etykietę, ale nie widzę wierszy narzędzi.

Sprawdź streaming.progress.toolProgress. Jeśli ma wartość false, OpenClaw zachowuje zachowanie pojedynczego szkicu, ale ukrywa wiersze postępu narzędzi i zadań.

Widzę nową wiadomość końcową zamiast edytowanego szkicu.

To awaryjne zabezpieczenie. Może wystąpić przy odpowiedziach z multimediami, długich odpowiedziach, jawnych celach odpowiedzi, starych szkicach Telegram, brakujących celach wątków Slack, usuniętych wiadomościach podglądu lub nieudanej finalizacji natywnego strumienia.

Nadal widzę samodzielne wiadomości postępu.

Tryb postępu wycisza domyślne samodzielne wiadomości postępu narzędzi, gdy szkic jest aktywny. Jeśli samodzielne wiadomości nadal się pojawiają, sprawdź, czy tura rzeczywiście używa trybu postępu, a nie streaming.mode: "off" albo ścieżki kanału, która nie może utworzyć szkicu dla tej wiadomości.

Teams zachowuje się inaczej niż Discord lub Telegram.

Microsoft Teams używa natywnego strumienia w czatach osobistych zamiast ogólnego transportu podglądu typu wyślij-i-edytuj. Teams traktuje też streaming.mode: "block" jako dostarczanie bloków Teams, ponieważ nie ma tego samego trybu podglądu blokowego szkicu, którego używają Discord i Telegram.

Powiązane