Messages and delivery
İlerleme taslakları
İlerleme taslakları, bir agent çalışırken tek bir kanal mesajını canlı bir durum
satırına dönüştürür; böylece geçici "hâlâ çalışıyor" yanıtlarından oluşan bir yığın
yerine tek mesaj kullanılır. channels.<channel>.streaming.mode: "progress" değerini ayarladığınızda OpenClaw,
gerçek çalışma başlar başlamaz mesajı oluşturur; agent okurken, planlarken, araçları
çağırırken veya onay beklerken mesajı düzenler ve ardından nihai yanıta dönüştürür.
Çalışıyor...📖 docs/concepts/progress-drafts.md dosyasından🔎 Web Araması: "discord mesaj düzenleme" için🛠️ Bash: testleri çalıştırHızlı başlangıç
{ channels: { discord: { streaming: { mode: "progress", }, }, },}Buradan itibaren varsayılanlar: 5 saniyelik başlangıç gecikmesi, yararlı çalışmalar yapılırken kısa ilerleme satırları ve o tur için eski bağımsız ilerleme mesajlarının gizlenmesi. Ham araç satırı taslakları otomatik tek kelimelik bir etiket kullanır; açıkça bir etiket yapılandırmadığınız sürece durum başlığı bu gereksiz başlığı kullanmaz.
Bu sayfa, ilerleme taslağı deneyimini ve yapılandırma seçeneklerini kapsar. Tam akış modu matrisi, kanallara göre çalışma zamanı notları ve eski anahtar geçişleri için Akış ve parçalara ayırma bölümüne bakın.
Kullanıcıların gördükleri
| Bölüm | Amaç |
|---|---|
| Durum başlığı | Discord ve Telegram'da model önsözü; Discord bir yardımcı dolgu metni ekler. |
| Etiket | Working gibi isteğe bağlı başlangıç/durum satırı. |
| İlerleme satırları | /verbose ile aynı araç simgelerini ve ayrıntı biçimlendiricisini kullanan kısa çalışma güncellemeleri. |
Ham araç ilerlemesinde etiket, agent anlamlı bir çalışmaya başlayıp ilk gecikme
süresince meşgul kaldığında görünür.
Kayan ilerleme satırları listesinin en üstünde yer aldığından, yeterli sayıda
somut çalışma satırı göründüğünde kaydırılarak görünümden çıkar. Bir durum başlığı,
açıkça bir etiket yapılandırılmadığı sürece yalnızca agent'ın sade dille yazılmış
durumunu gösterir. Yalnızca düz metin içeren yanıtlar hiçbir zaman ilerleme taslağı
göstermez; bir satır yalnızca 🛠️ Bash: run tests, 🔎 Web Search: for "discord edit message"
veya ✍️ Write: to /tmp/file gibi gerçek çalışma güncellemeleri için görünür.
Kanal bunu güvenli biçimde yapabiliyorsa nihai yanıt taslağın yerini alır; aksi takdirde OpenClaw nihai yanıtı normal teslimat yoluyla gönderir ve taslağı temizler veya güncellemeyi durdurur (bkz. Sonlandırma).
Bir mod seçin
channels.<channel>.streaming.mode, görünür devam eden çalışma davranışını kontrol eder:
| Mod | En uygun kullanım | Sohbette görünenler |
|---|---|---|
off |
Sessiz kanallar | Yalnızca nihai yanıt. |
partial |
Yanıt metninin görünmesini izleme | En son yanıt metniyle düzenlenen tek bir taslak. |
block |
Daha büyük yanıt önizleme parçaları | Daha büyük parçalarla güncellenen veya eklenen tek bir önizleme. |
progress |
Araç ağırlıklı veya uzun süren turlar | Tek bir durum taslağı, ardından nihai yanıt. |
Kullanıcılar yanıt metninin belirteç belirteç akışını izlemekten çok "neler olup
bittiğini" önemsiyorsa progress; ilerleme sinyali yanıt metninin kendisiyse
partial; daha büyük önizleme parçaları için block seçin.
Discord ve Telegram'da streaming.mode: "block" hâlâ önizleme akışıdır, normal
blok yanıt teslimatı değildir — bunun için streaming.block.enabled kullanın.
Etiketleri yapılandırma
İlerleme etiketleri channels.<channel>.streaming.progress altında bulunur. Varsayılan
ham araç satırı etiketi "auto" olup yerleşik düz Working
etiketini kullanır. Durum başlığı bu örtük etiketi gizler; başlığın üzerinde de
bir etiket istiyorsanız label: "auto" değerini açıkça ayarlayın:
ÇalışıyorSabit bir etiket kullanın:
{ channels: { discord: { streaming: { mode: "progress", progress: { label: "İnceleniyor", }, }, }, },}Kendi etiket havuzunuzu kullanın (label: "auto" olduğunda seçim yine rastgele/tohuma göre yapılır):
{ channels: { discord: { streaming: { mode: "progress", progress: { label: "auto", labels: ["Kontrol ediliyor", "Okunuyor", "Test ediliyor", "Tamamlanıyor"], }, }, }, },}Etiketi gizleyip yalnızca ilerleme satırlarını gösterin:
{ channels: { discord: { streaming: { mode: "progress", progress: { label: false, }, }, }, },}İlerleme satırlarını kontrol etme
İlerleme satırları gerçek çalışma olaylarından gelir: araç başlangıçları, öğe
güncellemeleri, görev planları, onaylar, komut çıktıları, yama özetleri ve benzer
agent etkinlikleri. Varsayılan olarak etkindir (progress.toolProgress, varsayılan
true).
Araçlar, tek bir çağrı çalışmaya devam ederken türü belirlenmiş ilerleme bilgileri de yayınlayabilir. Yavaş bir getirme veya arama işlemi, araç nihai sonucunu döndürmeden önce görünür taslağı bu şekilde günceller. İlerleme güncellemesi, boş model içeriği ve açık genel kanal meta verileri içeren kısmi bir araç sonucudur:
{ "content": [], "progress": { "text": "Sayfa içeriği getiriliyor...", "visibility": "channel", "privacy": "public", "id": "web_fetch:fetching" }}OpenClaw, kanal ilerleme arayüzünde yalnızca progress.text öğesini işler.
Normal araç sonucu daha sonra content/details olarak gelir
ve modele döndürülen tek bölümdür.
Bir araca ilerleme eklerken kısa ve genel bir mesaj yayınlayın ve işlemin yararlı
olacak kadar uzun süre beklemede kalmasına kadar bunu geciktirin.
web_fetch, 5 saniyelik gecikmeyle tam olarak bunu yapar:
const clearProgressTimer = scheduleToolProgress( onUpdate, { text: "Sayfa içeriği getiriliyor...", id: "web_fetch:fetching" }, 5_000, { signal },); try { return await runToolWork();} finally { clearProgressTimer();}Hızlı çağrılarda ilerleme satırı gösterilmez; uzun çağrılarda işlem hâlâ beklemedeyken bir satır gösterilir; iptal edilen çağrılar, eski ilerleme bilgisinin görünmesini önlemek için zamanlayıcıyı temizler. İlerleme metni, genel bir kullanıcı arayüzü yan kanalıdır; bu nedenle hiçbir zaman gizli bilgiler, ham bağımsız değişkenler, getirilen içerik, komut çıktısı veya sayfa metni içermemelidir.
Ayrıntı modu
OpenClaw, ilerleme taslakları ve /verbose için aynı biçimlendiriciyi kullanır:
{ agents: { defaults: { toolProgressDetail: "explain", // explain | raw }, },}"explain" varsayılandır ve kısa etiketlerle taslakların kararlı
kalmasını sağlar. "raw", kullanılabilir olduğunda temel komutu
ekler; bu, hata ayıklama sırasında yararlıdır ancak sohbeti daha gürültülü
hâle getirir. Örneğin bir node --check /tmp/app.js çağrısı, moda göre farklı işlenir:
| Mod | İlerleme satırı |
|---|---|
explain |
🛠️ check js syntax for /tmp/app.js |
raw |
🛠️ check js syntax for /tmp/app.js · node --check /tmp/app.js |
Komut/exec metni
streaming.progress.commandText (varsayılan "raw"), yukarıdaki ayrıntı modundan
bağımsız olarak exec/bash ilerleme satırlarının yanında ne kadar komut ayrıntısı
gösterileceğini kontrol eder. Komut metnini tamamen gizlerken araç ilerleme
satırını görünür tutmak için bunu "status" olarak ayarlayın:
{ channels: { discord: { streaming: { mode: "progress", progress: { commandText: "status", }, }, }, },}Yorum akışı
streaming.progress.commentary (varsayılan false), modelin araç öncesi
yorumunu/önsöz anlatımını (💬, örneğin "Kontrol edeceğim... ardından
...") taslaktaki araç satırlarının arasına ekler. Kanallar arasında paylaşılan
yapılandırma biçimi için
Akış ve parçalara ayırma bölümüne bakın.
Yorum akışı etkinken önsözler yalnızca araya eklenen bu 💬 satırları olarak işlenir; aşağıdaki durum başlığı görünmez ve böylece akış belgelenen biçimini korur.
Durum başlığı
Discord ve Telegram'da ilerleme modundayken modelin türü belirlenmiş araç öncesi
önsözü, kullanılabilir olduğunda taslağın durum başlığına dönüşür. İlerleme
modundaki diğer kanallar mevcut durum davranışlarını korur. Başlık varsayılan
olarak açıktır ve kısa turlar için normal etkinlik eşiğini atlamaz;
streaming.progress.commentary etkinleştirildiğinde önsözler bunun yerine araya eklenen
yorum akışına aktarılır.
Discord'da agent için bir yardımcı model çözümlendiğinde — açık bir
utilityModel veya birincil
sağlayıcının bildirdiği varsayılan küçük model (OpenAI → gpt-5.6-luna,
Anthropic → claude-haiku-4-5) — model bir önsöz yayınlamadığında veya yaklaşık
20 saniye boyunca sessiz kaldığında kısa ve sade bir dolgu metni sağlar
(Telegram başlığı günümüzde yalnızca önsöz kullanır):
Yapılandırmanızdaki varsayılan model güncelleniyor, ardından değişikliğinuygulanması için Gateway yeniden başlatılıyor. Bir agent listeleme çağrısıbaşarısız oldu ve yeniden deneniyor.Yardımcı anlatım varsayılan olarak açıktır (streaming.progress.narration, varsayılan
true) ve hiçbir zaman birincil modele geri dönmez: yalnızca açık
bir utilityModel veya agent'ın birincil sağlayıcısı için sağlayıcı
tarafından bildirilmiş bir varsayılan olduğunda çalışır. Yardımcı yönlendirmeyi
tamamen devre dışı bırakmak için utilityModel: "" değerini ayarlayın. Araç
satırları altta birikmeye devam eder ve her iki durum kaynağı da durursa yeniden
görünür. Taslak düzenlemeleri yine normal etkinlik eşiğini ve gerçek bir metin
değişikliğini bekler; bu, hızlı turlarda kısa süreli görünümleri önler ve yoğun
kanallardaki düzenleme hareketliliğini azaltır. Yalnızca yardımcı model dolgu
metnini devre dışı bırakmak için narration: false değerini ayarlayın; model
önsözü başlıkları etkin kalır:
{ channels: { discord: { streaming: { mode: "progress", progress: { narration: false, }, }, }, },}Anlatım girdisi sınırlandırılmış ve hassas verilerden arındırılmıştır: yardımcı
model, gelen istek metninin yanı sıra taslağın işleyeceği aynı kısa ve
hassas verilerden arındırılmış araç özetlerini alır; ham komut çıktısını veya
araç sonuçlarını hiçbir zaman almaz. commandText: "status" ile anlatım girdisi,
taslağın gösterdiğiyle uyumlu olarak exec/bash komut metnini de içermez.
Satır sınırları
Kaç satırın görünür kalacağını sınırlayın (varsayılan 8):
{ channels: { discord: { streaming: { mode: "progress", progress: { maxLines: 4, }, }, }, },}Taslak düzenlenirken sohbet balonunun yeniden akışını azaltmak için ilerleme satırları otomatik olarak sıkıştırılır. Ayrıca OpenClaw, yinelenen taslak düzenlemelerinin her güncellemede farklı şekilde kaymaması için uzun satırları kısaltır. Varsayılan satır başına sınır 120 karakterdir; düz yazı bir sözcük sınırında kesilirken yollar veya ham komutlar gibi uzun ayrıntılar, son bölümün görünür kalması için ortada üç noktayla kısaltılır.
Satır başına sınırı ayarlayın:
{ channels: { discord: { streaming: { mode: "progress", progress: { maxLineChars: 160, }, }, }, },}Zengin işleme (Slack)
Slack, ilerleme satırlarını düz metin yerine yapılandırılmış Block Kit alanları olarak işleyebilir:
{ channels: { slack: { streaming: { mode: "progress", progress: { render: "rich", }, }, }, },}Zengin işleme, Block Kit alanlarının yanında her zaman aynı düz metin gövdesini de gönderir; böylece daha zengin biçimi işleyemeyen istemciler yine kısa ilerleme metnini gösterir.
Araç/görev satırlarını gizleme
Tek ilerleme taslağını koruyup araç ve görev satırlarını gizleyin:
{ channels: { discord: { streaming: { mode: "progress", progress: { toolProgress: false, }, }, }, },}toolProgress: false ile OpenClaw, söz konusu tur için eski bağımsız
araç ilerleme mesajlarını yine de bastırır — bir etiket yapılandırılmışsa etiket
dışında kanal, nihai yanıt gelene kadar görsel olarak sessiz kalır.
Kanal davranışı
| Kanal | İlerleme aktarımı | Notlar |
|---|---|---|
| Discord | Bir mesaj gönderir, ardından düzenler. | Varsayılan olarak progress modunu kullanır; nihai yanıt bir -# etkinlik makbuzu taşır ve yanıt ulaştıktan sonra durum taslağı silinir. |
| Matrix | Bir etkinlik gönderir, ardından düzenler. | Hesap düzeyindeki akış yapılandırması, hesap düzeyindeki taslakları denetler. |
| Microsoft Teams | Kişisel sohbetlerde yerel Teams akışı. | streaming.mode: "block", bunun yerine Teams blok teslimine eşlenir. |
| Slack | Yerel akış veya düzenlenebilir taslak gönderi. | Bir yanıt dizisi hedefi gerektirir; hedefi olmayan üst düzey doğrudan mesajlarda yine de taslak önizleme gönderileri ve düzenlemeleri kullanılır. |
| Telegram | Bir mesaj gönderir, ardından düzenler. | İlerleme taslağı ile yanıt arasına bir mesaj gelirse taslak, istemcinin kaydırma konumunu sıçratmak yerine onun altına yeniden gönderilir (önce yeniyi gönder, sonra eskiyi sil). |
| Mattermost | Düzenlenebilir taslak gönderi. | block modu, tamamlanan metin ile araç etkinliği gönderileri arasında geçiş yapar; diğer modlar araç etkinliğini aynı taslak tarzı gönderide birleştirir. |
Güvenli düzenleme desteği olmayan kanallar, yazıyor göstergelerine veya yalnızca nihai yanıt teslimine geri döner. Kanal başına eksiksiz çalışma zamanı davranışı dökümü için Akış ve parçalara ayırma bölümüne bakın.
Sonlandırma
Nihai yanıt hazır olduğunda OpenClaw sohbeti temiz tutmaya çalışır:
- Discord'da
progressmodunda nihai yanıt, sonuna küçük bir-#etkinlik makbuzu eklenmiş yeni bir mesaj olarak gönderilir (örneğin-# 🧠 2 thoughts · 🛠️ 5 tool calls · ⏱️ 12s) ve bu yanıt teslim edildikten sonra durum taslağı silinir. Yoğun kanallarda yanıtın üzerinde sahipsiz bir araç günlüğü kalmaz; hatalı nihai yanıtlarda taslak, başarısız turun görünür kaydı olarak tutulur. - Taslak güvenli biçimde nihai yanıta dönüştürülebiliyorsa (
partial/blockmodları), OpenClaw taslağı yerinde düzenler. - Kanal yerel ilerleme akışı kullanıyorsa yerel aktarım nihai metni kabul ettiğinde OpenClaw bu akışı sonlandırır.
- Aksi takdirde (medya, onay istemi, açık bir yanıt hedefi, çok fazla parça ya da başarısız bir düzenleme/gönderme) OpenClaw, taslağın üzerine yazmak yerine nihai yanıtı normal kanal teslim yolu üzerinden gönderir.
Bu geri dönüş kasıtlıdır: yeni bir nihai yanıt göndermek; metni kaybetmekten, yanıtı yanlış diziye göndermekten veya kanalın güvenli biçimde temsil edemediği bir yükle taslağın üzerine yazmaktan daha iyidir.
Sorun giderme
Yalnızca nihai yanıtı görüyorum.
Mesajı işleyen hesap veya kanal için channels.<channel>.streaming.mode değerinin
progress olduğunu denetleyin. Kanal doğru mesajı güvenli biçimde
düzenleyemediğinde bazı grup veya alıntılı yanıt yolları, ilgili tur için
taslak önizlemelerini devre dışı bırakır.
Etiketi görüyorum ancak araç satırlarını görmüyorum.
streaming.progress.toolProgress değerini denetleyin. Değer false ise OpenClaw
tek taslak davranışını korur ancak araç ve görev ilerleme satırlarını gizler.
Düzenlenmiş bir taslak yerine yeni bir nihai mesaj görüyorum.
Bu, Sonlandırma bölümünde açıklanan güvenlik amaçlı geri dönüştür. Medya yanıtlarında, uzun yanıtlarda, açık yanıt hedeflerinde, eski Telegram taslaklarında, eksik Slack ileti dizisi hedeflerinde, silinmiş önizleme mesajlarında veya yerel akışın sonlandırılamadığı durumlarda gerçekleşebilir.
Hâlâ bağımsız ilerleme mesajları görüyorum.
İlerleme modu, bir taslak etkin olduğunda varsayılan bağımsız araç ilerleme
mesajlarını bastırır. Bağımsız mesajlar hâlâ görünüyorsa turun gerçekten
progress modunu kullandığını ve streaming.mode: "off" modunu ya da
söz konusu mesaj için taslak oluşturamayan bir kanal yolunu kullanmadığını
doğrulayın.
Teams, Discord veya Telegram'dan farklı davranıyor.
Microsoft Teams, genel gönder-ve-düzenle önizleme aktarımı yerine kişisel
sohbetlerde yerel bir akış kullanır ve Discord ile Telegram'daki gibi bir
taslak önizleme blok modu bulunmadığından streaming.mode: "block" değerini Teams
blok teslimine eşler.