Messages and delivery
مسودات التقدم
مسودات التقدّم تجعل أدوار الوكيل طويلة التشغيل تبدو حيّة في الدردشة دون تحويل المحادثة إلى كومة من ردود الحالة المؤقتة.
عند تفعيل مسودات التقدّم، ينشئ OpenClaw رسالة عمل قيد التقدّم مرئية واحدة فقط بعد أن يثبت الدور أنه ينجز عملاً حقيقياً، ويحدّثها بينما يقرأ الوكيل أو يخطط أو يستدعي الأدوات أو ينتظر الموافقة، ثم يحوّل تلك المسودة إلى الإجابة النهائية عندما تستطيع القناة فعل ذلك بأمان.
Shelling...
📖 Read: from docs/concepts/progress-drafts.md
🔎 Web Search: for "discord edit message"
🛠️ Exec: run tests
استخدم مسودات التقدّم عندما تريد رسالة حالة واحدة مرتبة أثناء العمل الكثيف بالأدوات والإجابة النهائية عند اكتمال الدور.
البدء السريع
فعّل مسودات التقدّم لكل قناة باستخدام streaming.mode: "progress":
{
channels: {
discord: {
streaming: {
mode: "progress",
},
},
},
}
يكفي ذلك عادةً. سيختار OpenClaw تسمية تلقائية من كلمة واحدة، وينتظر حتى يستمر العمل خمس ثوانٍ على الأقل أو يصدر حدث عمل ثانياً، ويضيف أسطر تقدّم موجزة أثناء حدوث العمل المفيد، ويمنع دردشة التقدّم المستقلة المكررة لذلك الدور.
ما يراه المستخدمون
تتكوّن مسودة التقدّم من جزأين:
| الجزء | الغرض |
|---|---|
| التسمية | عنوان قصير مثل Thinking... أو Shelling.... |
| أسطر التقدّم | تحديثات تشغيل موجزة تستخدم تسميات الأدوات والأيقونات نفسها مثل المخرجات المطوّلة. |
تظهر التسمية بعد أن يبدأ الوكيل عملاً ذا معنى وإما أن يظل مشغولاً لخمس ثوانٍ
أو يصدر حدث عمل ثانياً. لا تُظهر الردود النصية فقط مسودة تقدّم. تُضاف أسطر
التقدّم فقط عندما يصدر الوكيل تحديثات عمل مفيدة، مثل 🛠️ Exec أو 🔎 Web Search أو ✍️ Write: to /tmp/file.
افتراضياً، تستخدم وضع الشرح الموجز نفسه مثل /verbose؛ اضبط
agents.defaults.toolProgressDetail: "raw" عند التصحيح وعندما تريد أيضاً إلحاق
الأوامر/التفاصيل الخام.
تحل الإجابة النهائية محل المسودة عندما يكون ذلك ممكناً؛ وإلا يرسل OpenClaw
الإجابة النهائية بشكل عادي وينظّف المسودة أو يتوقف عن تحديثها وفقاً لنقل القناة.
اختيار وضع
يتحكم channels.<channel>.streaming.mode في سلوك العمل قيد التقدّم المرئي:
| الوضع | الأنسب لـ | ما يظهر في الدردشة |
|---|---|---|
off |
القنوات الهادئة | الإجابة النهائية فقط. |
partial |
مشاهدة نص الإجابة أثناء ظهوره | مسودة واحدة تُحرّر بأحدث نص للإجابة. |
block |
مقاطع معاينة إجابة أكبر | معاينة واحدة تُحدّث أو تُلحق بمقاطع أكبر. |
progress |
الأدوار الكثيفة بالأدوات أو طويلة التشغيل | مسودة حالة واحدة، ثم الإجابة النهائية. |
اختر progress عندما يهتم المستخدمون أكثر بـ"ما يحدث" من مشاهدة نص الإجابة
يتدفق رمزاً تلو الآخر.
اختر partial عندما تكون الإجابة نفسها هي إشارة التقدّم.
اختر block عندما تريد تحديثات معاينة المسودة في مقاطع نصية أكبر. على
Discord وTelegram، لا يزال streaming.mode: "block" بث معاينة، وليس تسليم كتل
عادياً. استخدم streaming.block.enabled أو blockStreaming القديم عندما تريد
ردود كتل عادية.
تكوين التسميات
توجد تسميات التقدّم ضمن channels.<channel>.streaming.progress.
التسمية الافتراضية هي auto، والتي تختار من مجموعة تسميات OpenClaw المدمجة
المكوّنة من كلمة واحدة مع علامات الحذف:
Thinking...
Shelling...
Scuttling...
Clawing...
Pinching...
Molting...
Bubbling...
Tiding...
Reefing...
Cracking...
Sifting...
Brining...
Nautiling...
Krilling...
Barnacling...
Lobstering...
Tidepooling...
Pearling...
Snapping...
Surfacing...
استخدم تسمية ثابتة:
{
channels: {
discord: {
streaming: {
mode: "progress",
progress: {
label: "Investigating",
},
},
},
},
}
استخدم مجموعة التسميات التلقائية الخاصة بك:
{
channels: {
discord: {
streaming: {
mode: "progress",
progress: {
label: "auto",
labels: ["Checking", "Reading", "Testing", "Finishing"],
},
},
},
},
}
أخفِ التسمية وأظهر أسطر التقدّم فقط:
{
channels: {
discord: {
streaming: {
mode: "progress",
progress: {
label: false,
},
},
},
},
}
التحكم في أسطر التقدّم
تكون أسطر التقدّم مفعّلة افتراضياً في وضع التقدّم. تأتي من أحداث تشغيل حقيقية: بدء الأدوات، وتحديثات العناصر، وخطط المهام، والموافقات، ومخرجات الأوامر، وملخصات التصحيحات، ونشاط وكيل مشابه.
يستخدم OpenClaw المنسّق نفسه لمسودات التقدّم و/verbose:
{
agents: {
defaults: {
toolProgressDetail: "explain", // explain | raw
},
},
}
"explain" هو الوضع الافتراضي ويحافظ على استقرار المسودات بتسميات موجزة مثل
🛠️ Exec: check JS syntax for /tmp/app.js. يلحق "raw" الأمر/التفصيل الأساسي
عند توفره، وهو مفيد أثناء التصحيح لكنه أكثر ضجيجاً في الدردشة.
على سبيل المثال، يظهر الأمر نفسه بشكل مختلف حسب وضع التفصيل:
| الوضع | سطر التقدّم |
|---|---|
explain |
🛠️ Exec: check JS syntax for /tmp/app.js |
raw |
🛠️ Exec: check JS syntax for /tmp/app.js, node --check /tmp/app.js |
حدّد عدد الأسطر التي تبقى مرئية:
{
channels: {
discord: {
streaming: {
mode: "progress",
progress: {
maxLines: 4,
},
},
},
},
}
تُضغط أسطر التقدّم تلقائياً لتقليل إعادة تدفق فقاعة الدردشة أثناء تحرير المسودة.
يقصّر OpenClaw أسطر التقدّم الطويلة افتراضياً حتى لا تلتف تعديلات المسودة المتكررة بشكل مختلف مع كل تحديث. تبقى البادئة قابلة للقراءة، وتُختصر التفاصيل الطويلة مثل المسارات أو الأوامر الخام بعلامات الحذف.
يمكن لـ Slack عرض أسطر التقدّم كحقول Block Kit منظمة بدلاً من متن نصي واحد:
{
channels: {
slack: {
streaming: {
mode: "progress",
progress: {
render: "rich",
},
},
},
},
}
يحافظ العرض الغني على الرجوع الاحتياطي بالنص العادي نفسه حتى تتمكن القنوات والعملاء الذين لا يدعمون الشكل الأغنى من عرض نص التقدّم الموجز.
احتفظ بمسودة التقدّم الوحيدة لكن أخفِ أسطر الأدوات والمهام:
{
channels: {
discord: {
streaming: {
mode: "progress",
progress: {
toolProgress: false,
},
},
},
},
}
مع toolProgress: false، لا يزال OpenClaw يمنع رسائل تقدّم الأدوات المستقلة
الأقدم لذلك الدور. تبقى القناة هادئة بصرياً حتى الإجابة النهائية، باستثناء التسمية
إذا كانت مكوّنة.
سلوك القناة
تستخدم كل قناة أنظف نقل تدعمه:
| القناة | نقل التقدّم | ملاحظات |
|---|---|---|
| Discord | إرسال رسالة واحدة، ثم تحريرها. | تُحرّر النصوص النهائية في مكانها عندما تناسب رسالة معاينة آمنة واحدة. |
| Matrix | إرسال حدث واحد، ثم تحريره. | يتحكم تكوين البث على مستوى الحساب في المسودات على مستوى الحساب. |
| Microsoft Teams | بث Teams أصلي في الدردشات الشخصية. | يُطابق streaming.mode: "block" تسليم كتل Teams. |
| Slack | بث أصلي أو منشور مسودة قابل للتحرير. | يؤثر توفر السلسلة في إمكانية استخدام البث الأصلي. |
| Telegram | إرسال رسالة واحدة، ثم تحريرها. | قد تُستبدل المسودات المرئية الأقدم حتى تبقى الطوابع الزمنية النهائية مفيدة. |
| Mattermost | منشور مسودة قابل للتحرير. | يُطوى نشاط الأدوات داخل المنشور نفسه بنمط المسودة. |
عادةً تعود القنوات التي لا تدعم التحرير الآمن إلى مؤشرات الكتابة أو التسليم النهائي فقط.
الإنهاء
عندما تكون الإجابة النهائية جاهزة، يحاول OpenClaw إبقاء الدردشة نظيفة:
- إذا كان يمكن أن تصبح المسودة الإجابة النهائية بأمان، يحررها OpenClaw في مكانها.
- إذا كانت القناة تستخدم بث تقدّم أصلياً، ينهي OpenClaw ذلك البث عندما يقبل النقل الأصلي النص النهائي.
- إذا كانت الإجابة النهائية تحتوي على وسائط، أو مطالبة موافقة، أو هدف رد صريح، أو عدداً كبيراً جداً من المقاطع، أو فشل تحرير/إرسال، يرسل OpenClaw الإجابة النهائية عبر مسار تسليم القناة العادي.
مسار الرجوع الاحتياطي مقصود. من الأفضل إرسال إجابة نهائية جديدة بدلاً من فقدان النص، أو توجيه رد إلى سلسلة خاطئة، أو الكتابة فوق مسودة بحمولة لا تستطيع القناة تمثيلها بأمان.
استكشاف الأخطاء وإصلاحها
لا أرى سوى الإجابة النهائية.
تحقق من أن channels.<channel>.streaming.mode مضبوط على progress للحساب
أو القناة التي عالجت الرسالة. قد تعطل بعض مسارات المجموعات أو ردود الاقتباس
معاينات المسودات لدور ما عندما لا تستطيع القناة تحرير الرسالة الصحيحة بأمان.
أرى التسمية لكن لا أرى أسطر أدوات.
تحقق من streaming.progress.toolProgress. إذا كانت قيمته false، يحافظ OpenClaw
على سلوك المسودة الواحدة لكنه يخفي أسطر تقدّم الأدوات والمهام.
أرى رسالة نهائية جديدة بدلاً من مسودة محرّرة.
هذا رجوع احتياطي للسلامة. يمكن أن يحدث ذلك مع ردود الوسائط، أو الإجابات الطويلة، أو أهداف الرد الصريحة، أو مسودات Telegram القديمة، أو أهداف سلاسل Slack المفقودة، أو رسائل المعاينة المحذوفة، أو فشل إنهاء البث الأصلي.
ما زلت أرى رسائل تقدّم مستقلة.
يمنع وضع التقدّم رسائل تقدّم الأدوات المستقلة الافتراضية عندما تكون المسودة
نشطة. إذا استمرت الرسائل المستقلة في الظهور، فتحقق من أن الدور يستخدم فعلاً
وضع التقدّم وليس streaming.mode: "off" أو مسار قناة لا يمكنه إنشاء مسودة لتلك
الرسالة.
يتصرف Teams بشكل مختلف عن Discord أو Telegram.
يستخدم Microsoft Teams بثاً أصلياً في الدردشات الشخصية بدلاً من نقل المعاينة
العام القائم على الإرسال والتحرير. يتعامل Teams أيضاً مع streaming.mode: "block" على
أنه تسليم كتل Teams لأنه لا يملك وضع كتل معاينة المسودة نفسه المستخدم في
Discord وTelegram.