Automation
مهام الخلفية
تتعقب المهام الخلفية العمل الذي يعمل خارج جلسة محادثتك الرئيسية: تشغيلات ACP، وإنشاء الوكلاء الفرعيين، وتنفيذات مهام cron المعزولة، والعمليات التي يبدأها CLI.
لا تستبدل المهام الجلسات أو مهام cron أو Heartbeat - فهي سجل النشاط الذي يسجل العمل المنفصل الذي حدث، ومتى حدث، وما إذا كان قد نجح.
باختصار
- المهام سجلات وليست مجدولات - يقرر cron وHeartbeat متى يعمل العمل، وتتتبع المهام ما حدث.
- ينشئ ACP والوكلاء الفرعيون وكل مهام cron وعمليات CLI مهام. دورات Heartbeat لا تفعل ذلك.
- تنتقل كل مهمة عبر
queued → running → terminal(succeeded، أو failed، أو timed_out، أو cancelled، أو lost). - تبقى مهام Cron حية ما دام وقت تشغيل cron لا يزال يملك المهمة؛ إذا اختفت حالة وقت التشغيل الموجودة في الذاكرة، تتحقق صيانة المهام أولا من سجل تشغيلات cron الدائم قبل وسم المهمة بأنها مفقودة.
- الاكتمال مدفوع بالدفع: يمكن للعمل المنفصل أن يخطر مباشرة أو يوقظ جلسة الطالب/Heartbeat عند انتهائه، لذلك تكون حلقات استطلاع الحالة غالبا بالشكل الخطأ.
- تنظف تشغيلات cron المعزولة واكتمالات الوكلاء الفرعيين علامات تبويب/عمليات المتصفح المتتبعة لجلسة الابن بأفضل جهد قبل مسك دفاتر التنظيف النهائي.
- يمنع تسليم cron المعزول ردودا وسيطة قديمة من الوالد بينما لا يزال عمل الوكيل الفرعي التابع قيد التصريف، ويفضل مخرجات التابع النهائية عندما تصل قبل التسليم.
- تسلم إشعارات الاكتمال مباشرة إلى قناة أو توضع في قائمة انتظار Heartbeat التالية.
- يعرض
openclaw tasks listكل المهام؛ ويكشفopenclaw tasks auditالمشكلات. - تحفظ السجلات النهائية لمدة 7 أيام، ثم تشذب تلقائيا.
بدء سريع
List and filter
# List all tasks (newest first)openclaw tasks list # Filter by runtime or statusopenclaw tasks list --runtime acpopenclaw tasks list --status runningInspect
# Show details for a specific task (by ID, run ID, or session key)openclaw tasks show <lookup>Cancel and notify
# Cancel a running task (kills the child session)openclaw tasks cancel <lookup> # Change notification policy for a taskopenclaw tasks notify <lookup> state_changesAudit and maintenance
# Run a health auditopenclaw tasks audit # Preview or apply maintenanceopenclaw tasks maintenanceopenclaw tasks maintenance --applyTask flow
# Inspect TaskFlow stateopenclaw tasks flow listopenclaw tasks flow show <lookup>openclaw tasks flow cancel <lookup>ما الذي ينشئ مهمة
| المصدر | نوع وقت التشغيل | متى ينشأ سجل المهمة | سياسة الإشعار الافتراضية |
|---|---|---|---|
| تشغيلات ACP الخلفية | acp |
إنشاء جلسة ACP ابن | done_only |
| تنسيق الوكلاء الفرعيين | subagent |
إنشاء وكيل فرعي عبر sessions_spawn |
done_only |
| مهام Cron (كل الأنواع) | cron |
كل تنفيذ cron (في الجلسة الرئيسية والمعزول) | silent |
| عمليات CLI | cli |
أوامر openclaw agent التي تعمل عبر Gateway |
silent |
| مهام وسائط الوكيل | cli |
تشغيلات image_generate/music_generate/video_generate المدعومة بجلسة |
silent |
Notify defaults for cron and media
تستخدم مهام cron في الجلسة الرئيسية سياسة إشعار silent افتراضيا - فهي تنشئ سجلات للتتبع لكنها لا تنشئ إشعارات. مهام cron المعزولة تستخدم أيضا silent افتراضيا لكنها أكثر وضوحا لأنها تعمل في جلستها الخاصة.
تستخدم تشغيلات image_generate وmusic_generate وvideo_generate المدعومة بجلسة أيضا سياسة إشعار silent. لا تزال تنشئ سجلات مهام، لكن الاكتمال يعاد إلى جلسة الوكيل الأصلية كإيقاظ داخلي حتى يتمكن الوكيل من كتابة رسالة المتابعة وإرفاق الوسائط المنتهية بنفسه. يتبع الوكيل الطالب عقد الرد المرئي العادي الخاص به: رد نهائي تلقائي عند تهيئته، أو message(action="send") مع NO_REPLY عندما تتطلب الجلسة ردود أداة الرسائل. إذا لم تعد جلسة الطالب نشطة أو فشل إيقاظها النشط، وفات وكيل الاكتمال بعض الوسائط المولدة أو كلها، يرسل OpenClaw بديلا مباشرا عديم التكرار يحتوي فقط على الوسائط الناقصة إلى هدف القناة الأصلي.
Concurrent media-generation guardrail
بينما لا تزال مهمة توليد وسائط مدعومة بجلسة نشطة، تعمل أدوات الوسائط أيضا كحواجز حماية لإعادات المحاولة العرضية. تعيد استدعاءات image_generate المتكررة للموجه نفسه حالة المهمة النشطة المطابقة، بينما يمكن لموجه صورة مختلف بدء مهمته الخاصة. لا تزال استدعاءات music_generate وvideo_generate تعيد حالة المهمة النشطة لتلك الجلسة بدلا من بدء توليد ثان متزامن. استخدم action: "status" عندما تريد بحث تقدم/حالة صريحا من جهة الوكيل.
What does not create tasks
- دورات Heartbeat - الجلسة الرئيسية؛ راجع Heartbeat
- دورات الدردشة التفاعلية العادية
- ردود
/commandالمباشرة
دورة حياة المهمة
stateDiagram-v2
[*] --> queued
queued --> running : agent starts
running --> succeeded : completes ok
running --> failed : error
running --> timed_out : timeout exceeded
running --> cancelled : operator cancels
queued --> lost : session gone > 5 min
running --> lost : session gone > 5 min| الحالة | معناها |
|---|---|
queued |
أنشئت، وتنتظر بدء الوكيل |
running |
دورة الوكيل تنفذ بنشاط |
succeeded |
اكتملت بنجاح |
failed |
اكتملت مع خطأ |
timed_out |
تجاوزت المهلة المهيأة |
cancelled |
أوقفها المشغل عبر openclaw tasks cancel |
lost |
فقد وقت التشغيل حالة الدعم الموثوقة بعد فترة سماح مدتها 5 دقائق |
تحدث الانتقالات تلقائيا - عندما ينتهي تشغيل الوكيل المرتبط، تحدث حالة المهمة لتطابقه.
اكتمال تشغيل الوكيل هو المرجع الموثوق لسجلات المهام النشطة. ينهي التشغيل المنفصل الناجح كـ succeeded، وتنهي أخطاء التشغيل العادية كـ failed، وتنهي نتائج المهلة أو الإجهاض كـ timed_out. إذا كان المشغل قد ألغى المهمة بالفعل، أو كان وقت التشغيل قد سجل بالفعل حالة نهائية أقوى مثل failed أو timed_out أو lost، فلا تؤدي إشارة نجاح لاحقة إلى خفض تلك الحالة النهائية.
lost واعية بوقت التشغيل:
- مهام ACP: اختفت بيانات جلسة ACP الابنة الداعمة.
- مهام الوكلاء الفرعيين: اختفت الجلسة الابنة الداعمة من مخزن الوكيل الهدف.
- مهام Cron: لم يعد وقت تشغيل cron يتتبع المهمة كنشطة، ولا يظهر سجل تشغيلات cron الدائم نتيجة نهائية لذلك التشغيل. لا يتعامل تدقيق CLI غير المتصل مع حالة وقت تشغيل cron الفارغة داخل العملية الخاصة به كمرجع موثوق.
- مهام CLI: تستخدم المهام التي لديها معرف تشغيل/معرف مصدر سياق التشغيل الحي، لذلك
لا تبقي صفوف الجلسة الابنة أو جلسة الدردشة العالقة هذه المهام حية بعد
اختفاء التشغيل المملوك لـ Gateway. لا تزال مهام CLI القديمة التي لا تملك هوية تشغيل
تعود إلى الجلسة الابنة. كما تنتهي تشغيلات
openclaw agentالمدعومة بـ Gateway من نتيجة تشغيلها، لذلك لا تبقى التشغيلات المكتملة نشطة حتى يوسمها المنظف بأنهاlost.
التسليم والإشعارات
عندما تصل مهمة إلى حالة نهائية، يخطرك OpenClaw. هناك مسارا تسليم:
التسليم المباشر - إذا كان للمهمة هدف قناة (requesterOrigin)، تذهب رسالة الاكتمال مباشرة إلى تلك القناة (Telegram وDiscord وSlack وما إلى ذلك). أما اكتمالات مهام المجموعات والقنوات فتوجه عبر جلسة الطالب حتى يتمكن الوكيل الوالد من كتابة الرد المرئي. بالنسبة لاكتمالات الوكلاء الفرعيين، يحافظ OpenClaw أيضا على توجيه الخيط/الموضوع المرتبط عند توفره، ويمكنه ملء to / حساب مفقود من مسار جلسة الطالب المخزن (lastChannel / lastTo / lastAccountId) قبل التخلي عن التسليم المباشر.
التسليم الموضوع في قائمة انتظار الجلسة - إذا فشل التسليم المباشر أو لم يضبط أصل، يوضع التحديث كحدث نظام في جلسة الطالب ويظهر في Heartbeat التالية.
هذا يعني أن سير العمل المعتاد قائم على الدفع: ابدأ العمل المنفصل مرة واحدة، ثم اترك وقت التشغيل يوقظك أو يخطرك عند الاكتمال. لا تستطلع حالة المهمة إلا عندما تحتاج إلى تصحيح، أو تدخل، أو تدقيق صريح.
سياسات الإشعار
تحكم في مقدار ما تسمعه عن كل مهمة:
| السياسة | ما يتم تسليمه |
|---|---|
done_only (افتراضي) |
الحالة النهائية فقط (succeeded، failed، وما إلى ذلك) - هذا هو الافتراضي |
state_changes |
كل انتقال حالة وتحديث تقدم |
silent |
لا شيء إطلاقا |
غيّر السياسة أثناء تشغيل مهمة:
openclaw tasks notify <lookup> state_changesمرجع CLI
tasks list
openclaw tasks list [--runtime <acp|subagent|cron|cli>] [--status <status>] [--json]أعمدة الإخراج: معرف المهمة، النوع، الحالة، التسليم، معرف التشغيل، الجلسة الابنة، الملخص.
tasks show
openclaw tasks show <lookup>يقبل رمز البحث معرف مهمة أو معرف تشغيل أو مفتاح جلسة. يعرض السجل الكامل بما في ذلك التوقيت، وحالة التسليم، والخطأ، والملخص النهائي.
tasks cancel
openclaw tasks cancel <lookup>بالنسبة لمهام ACP والوكلاء الفرعيين، يقتل هذا الجلسة الابنة. بالنسبة للمهام المتتبعة عبر CLI، يسجل الإلغاء في سجل المهام (لا يوجد مقبض وقت تشغيل ابن منفصل). تنتقل الحالة إلى cancelled ويرسل إشعار تسليم عند انطباق ذلك.
tasks notify
openclaw tasks notify <lookup> <done_only|state_changes|silent>tasks audit
openclaw tasks audit [--json]يكشف المشكلات التشغيلية. تظهر النتائج أيضا في openclaw status عند اكتشاف مشكلات.
| النتيجة | الخطورة | المحفز |
|---|---|---|
stale_queued |
تحذير | في قائمة الانتظار لأكثر من 10 دقائق |
stale_running |
خطأ | قيد التشغيل لأكثر من 30 دقيقة |
lost |
تحذير/خطأ | اختفت ملكية المهمة المدعومة بوقت التشغيل؛ تبقى المهام المفقودة المحتفَظ بها كتحذيرات حتى cleanupAfter، ثم تصبح أخطاء |
delivery_failed |
تحذير | فشل التسليم وسياسة الإشعار ليست silent |
missing_cleanup |
تحذير | مهمة نهائية من دون طابع زمني للتنظيف |
inconsistent_timestamps |
تحذير | انتهاك في الخط الزمني (على سبيل المثال انتهت قبل أن تبدأ) |
tasks maintenance
openclaw tasks maintenance [--json]openclaw tasks maintenance --apply [--json]استخدم هذا لمعاينة أو تطبيق التسوية، ووضع طوابع التنظيف، والتقليم للمهام، وحالة Task Flow، وصفوف سجل جلسات تشغيل cron القديمة.
التسوية مدركة لوقت التشغيل:
- تتحقق مهام ACP/الوكيل الفرعي من جلسة الطفل الداعمة لها.
- يتم وسم مهام الوكيل الفرعي التي تملك جلسة طفل لها علامة حذف لاسترداد إعادة التشغيل بأنها مفقودة بدلًا من التعامل معها كجلسات داعمة قابلة للاسترداد.
- تتحقق مهام Cron مما إذا كان وقت تشغيل cron لا يزال يملك المهمة، ثم تستعيد الحالة النهائية من سجلات تشغيل cron/حالة المهمة المستمرة قبل الرجوع إلى
lost. تكون عملية Gateway وحدها مرجعية لمجموعة مهام cron النشطة داخل الذاكرة؛ يستخدم تدقيق CLI دون اتصال التاريخ الدائم لكنه لا يسم مهمة cron بأنها مفقودة فقط لأن تلك المجموعة المحلية فارغة. - تتحقق مهام CLI ذات هوية التشغيل من سياق التشغيل الحي المالك، وليس فقط من صفوف جلسة الطفل أو جلسة الدردشة.
التنظيف بعد الإكمال مدرك أيضًا لوقت التشغيل:
- يحاول إكمال الوكيل الفرعي، بأفضل جهد، إغلاق ألسنة/عمليات المتصفح المتتبعة لجلسة الطفل قبل متابعة تنظيف الإعلان.
- يحاول إكمال cron المعزول، بأفضل جهد، إغلاق ألسنة/عمليات المتصفح المتتبعة لجلسة cron قبل تفكيك التشغيل بالكامل.
- ينتظر تسليم cron المعزول متابعة الوكلاء الفرعيين المتحدرين عند الحاجة، ويكبت نص إقرار الأصل القديم بدلًا من إعلانه.
- يستخدم تسليم إكمال الوكيل الفرعي أحدث نص مساعد مرئي للطفل فقط. لا تتم ترقية مخرجات الأداة/toolResult إلى نص نتيجة الطفل. تعلن التشغيلات النهائية الفاشلة حالة الفشل من دون إعادة عرض نص الرد الملتقط.
- لا تحجب إخفاقات التنظيف نتيجة المهمة الحقيقية.
عند تطبيق الصيانة، يزيل OpenClaw أيضًا صفوف سجل الجلسات القديمة cron:<jobId>:run:<uuid> التي يزيد عمرها على 7 أيام، مع الحفاظ على صفوف مهام cron قيد التشغيل حاليًا وترك صفوف الجلسات غير الخاصة بـ cron دون تغيير.
tasks flow list | show | cancel
openclaw tasks flow list [--status <status>] [--json]openclaw tasks flow show <lookup> [--json]openclaw tasks flow cancel <lookup>استخدم هذه عندما يكون Task Flow المنسق هو ما تهتم به بدلًا من سجل مهمة خلفية فردية واحد.
لوحة مهام الدردشة (/tasks)
استخدم /tasks في أي جلسة دردشة لرؤية المهام الخلفية المرتبطة بتلك الجلسة. تعرض اللوحة المهام النشطة والمكتملة حديثًا مع وقت التشغيل، والحالة، والتوقيت، وتفاصيل التقدم أو الخطأ.
عندما لا تحتوي الجلسة الحالية على مهام مرتبطة مرئية، يرجع /tasks إلى أعداد المهام المحلية للوكيل حتى تحصل على نظرة عامة من دون تسريب تفاصيل جلسات أخرى.
لسجل المشغل الكامل، استخدم CLI: openclaw tasks list.
تكامل الحالة (ضغط المهام)
يتضمن openclaw status ملخصًا سريعًا للمهام:
Tasks: 3 queued · 2 running · 1 issuesيعرض الملخص:
- active - عدد
queued+running - failures - عدد
failed+timed_out+lost - byRuntime - تفصيل حسب
acp، وsubagent، وcron، وcli
يستخدم كل من /status وأداة session_status لقطة مهام مدركة للتنظيف: تُفضَّل المهام النشطة، وتُخفى الصفوف المكتملة القديمة، ولا تظهر الإخفاقات الحديثة إلا عندما لا يبقى عمل نشط. هذا يبقي بطاقة الحالة مركزة على ما يهم الآن.
التخزين والصيانة
أين توجد المهام
تستمر سجلات المهام في SQLite عند:
$OPENCLAW_STATE_DIR/tasks/runs.sqliteيتم تحميل السجل في الذاكرة عند بدء Gateway وتتم مزامنة الكتابات إلى SQLite لضمان المتانة عبر عمليات إعادة التشغيل.
يبقي Gateway سجل الكتابة المسبقة في SQLite محدودًا باستخدام عتبة
نقطة التحقق التلقائية الافتراضية في SQLite بالإضافة إلى نقاط تحقق دورية PASSIVE. لا تزال نقاط تحقق الإيقاف والصيانة
الصريحة تستخدم TRUNCATE حتى تتمكن عمليات الإغلاق العادية من
استعادة مساحة WAL من دون جعل الكناس الخلفي ينتظر القراء النشطين.
الصيانة التلقائية
يعمل كناس كل 60 ثانية ويتعامل مع أربعة أشياء:
Reconciliation
يتحقق مما إذا كانت المهام النشطة لا تزال تملك دعمًا مرجعيًا من وقت التشغيل. تستخدم مهام ACP/الوكيل الفرعي حالة جلسة الطفل، وتستخدم مهام cron ملكية المهمة النشطة، وتستخدم مهام CLI ذات هوية التشغيل سياق التشغيل المالك. إذا اختفت تلك الحالة الداعمة لأكثر من 5 دقائق، تُوسم المهمة بأنها lost.
ACP session repair
يغلق جلسات ACP النهائية أو اليتيمة ذات الاستخدام الواحد المملوكة للأصل، ويغلق جلسات ACP المستمرة النهائية القديمة أو اليتيمة فقط عندما لا يبقى أي ربط محادثة نشط.
Cleanup stamping
يضع طابعًا زمنيًا cleanupAfter على المهام النهائية (endedAt + 7 أيام). أثناء الاحتفاظ، لا تزال المهام المفقودة تظهر في التدقيق كتحذيرات؛ وبعد انتهاء cleanupAfter أو عند غياب بيانات التنظيف الوصفية، تصبح أخطاء.
Pruning
يحذف السجلات التي تجاوزت تاريخ cleanupAfter الخاص بها.
كيف ترتبط المهام بالأنظمة الأخرى
Tasks and Task Flow
Task Flow هي طبقة تنسيق التدفقات فوق المهام الخلفية. قد ينسق تدفق واحد عدة مهام طوال عمره باستخدام أوضاع مزامنة مُدارة أو معكوسة. استخدم openclaw tasks لفحص سجلات المهام الفردية وopenclaw tasks flow لفحص التدفق المنسق.
راجع Task Flow للتفاصيل.
Tasks and cron
توجد تعريفات مهام Cron، وحالة التنفيذ في وقت التشغيل، وسجل التشغيل في قاعدة بيانات حالة SQLite المشتركة في OpenClaw. ينشئ كل تنفيذ cron سجل مهمة، سواء كان في الجلسة الرئيسية أو معزولًا. تستخدم مهام cron في الجلسة الرئيسية سياسة إشعار silent افتراضيًا حتى تتتبع من دون توليد إشعارات.
راجع Cron Jobs.
Tasks and heartbeat
تشغيلات Heartbeat هي دورات جلسة رئيسية، ولا تنشئ سجلات مهام. عندما تكتمل مهمة، يمكنها تشغيل إيقاظ Heartbeat حتى ترى النتيجة سريعًا.
راجع Heartbeat.
Tasks and sessions
قد تشير المهمة إلى childSessionKey (حيث يعمل العمل) وrequesterSessionKey (من بدأه). يحدد agentId الوكيل الذي ينفذ العمل، بينما تحفظ حقول الطالب والمالك سياق الإطلاق والتحكم. الجلسات هي سياق المحادثة؛ أما المهام فهي تتبع النشاط فوق ذلك.
Tasks and agent runs
يربط runId الخاص بالمهمة بتشغيل الوكيل الذي ينفذ العمل. تقوم أحداث دورة حياة الوكيل (البدء، الانتهاء، الخطأ) بتحديث حالة المهمة تلقائيًا، ولا تحتاج إلى إدارة دورة الحياة يدويًا.
ذات صلة
- الأتمتة - كل آليات الأتمتة في لمحة
- CLI: المهام - مرجع أوامر CLI
- Heartbeat - دورات الجلسة الرئيسية الدورية
- المهام المجدولة - جدولة العمل الخلفي
- Task Flow - تنسيق التدفق فوق المهام