CLI commands
Cron
openclaw cron
إدارة مهام Cron لجدولة Gateway.
الجلسات
يقبل --session القيم main أو isolated أو current أو session:<id>.
مفاتيح الجلسات
- يربط
mainبجلسة الوكيل الرئيسية. - ينشئ
isolatedنصًا حواريًا جديدًا ومعرّف جلسة لكل تشغيل. - يربط
currentبالجلسة النشطة وقت الإنشاء. - يثبت
session:<id>مفتاح جلسة مستمرًا صريحًا.
دلالات الجلسة المعزولة
تعيد عمليات التشغيل المعزولة ضبط سياق المحادثة المحيط. تتم إعادة ضبط توجيه القناة والمجموعة، وسياسة الإرسال/الصف، والرفع، والمصدر، وربط وقت تشغيل ACP للتشغيل الجديد. يمكن نقل التفضيلات الآمنة واختيارات المستخدم الصريحة للنموذج أو تجاوزات المصادقة عبر عمليات التشغيل.
التسليم
يعرض openclaw cron list وopenclaw cron show <job-id> معاينة لمسار التسليم المحسوم. بالنسبة إلى channel: "last"، تعرض المعاينة ما إذا كان المسار قد حُسم من الجلسة الرئيسية أو الحالية، أو سيفشل بإغلاق آمن.
يمكن للأهداف ذات بادئات المزوّد إزالة الالتباس عن قنوات الإعلان غير المحسومة. على سبيل المثال، يحدد to: "telegram:123" Telegram عندما يكون delivery.channel محذوفًا أو last. البادئات التي يعلن عنها Plugin المحمّل فقط هي محددات مزوّدين. إذا كان delivery.channel صريحًا، يجب أن تطابق البادئة تلك القناة؛ يتم رفض channel: "whatsapp" مع to: "telegram:123". تبقى بادئات الخدمات مثل imessage: وsms: صياغة أهداف مملوكة للقناة.
ملكية التسليم
تسليم دردشة Cron المعزولة مشترك بين الوكيل والمشغّل:
- يمكن للوكيل الإرسال مباشرة باستخدام أداة
messageعندما يكون مسار دردشة متاحًا. - يقوم
announceبالتسليم الاحتياطي للرد النهائي فقط عندما لا يرسل الوكيل مباشرة إلى الهدف المحسوم. - ينشر
webhookالحمولة المكتملة إلى عنوان URL. - يعطل
noneالتسليم الاحتياطي من المشغّل.
--announce هو التسليم الاحتياطي من المشغّل للرد النهائي. يعطل --no-deliver ذلك الاحتياط، لكنه لا يزيل أداة message الخاصة بالوكيل عندما يكون مسار دردشة متاحًا.
تحافظ التذكيرات المنشأة من دردشة نشطة على هدف تسليم الدردشة الحية لتسليم الإعلان الاحتياطي. قد تكون مفاتيح الجلسات الداخلية بأحرف صغيرة؛ لا تستخدمها كمصدر حقيقة لمعرّفات مزوّدين حساسة لحالة الأحرف مثل معرّفات غرف Matrix.
تسليم الفشل
تُحسم إشعارات الفشل بهذا الترتيب:
delivery.failureDestinationفي المهمة.cron.failureDestinationالعام.- هدف الإعلان الأساسي للمهمة (عند عدم تعيين وجهة فشل صريحة).
ملاحظة: تتعامل عمليات تشغيل Cron المعزولة مع إخفاقات الوكيل على مستوى التشغيل كأخطاء مهمة حتى عندما لا يتم إنتاج حمولة رد، لذلك تظل إخفاقات النموذج/المزوّد تزيد عدادات الأخطاء وتشغّل إشعارات الفشل.
إذا انتهت مهلة تشغيل معزول قبل أول طلب نموذج، فسيتضمن openclaw cron show
وopenclaw cron runs خطأ خاصًا بالمرحلة مثل
setup timed out before runner start أو
stalled before first model call (last phase: context-engine).
بالنسبة إلى المزوّدين المدعومين عبر CLI، يبقى مراقب ما قبل النموذج نشطًا حتى تبدأ دورة
CLI الخارجية، لذلك يتم الإبلاغ عن حالات توقف البحث عن الجلسة، والخطاف، والمصادقة، والمطالبة، وإعداد CLI
كإخفاقات Cron قبل النموذج.
الجدولة
مهام تشغيل واحدة
يجدول --at <datetime> تشغيلًا لمرة واحدة. تُعامل التواريخ والأوقات بلا إزاحة على أنها UTC ما لم تمرر أيضًا --tz <iana>، الذي يفسر وقت ساعة الحائط في المنطقة الزمنية المحددة.
المهام المتكررة
تستخدم المهام المتكررة تراجع إعادة المحاولة الأسي بعد الأخطاء المتتالية: 30s، و1m، و5m، و15m، و60m. يعود الجدول إلى طبيعته بعد التشغيل الناجح التالي.
تُتبع عمليات التشغيل المتخطاة بشكل منفصل عن أخطاء التنفيذ. لا تؤثر في تراجع إعادة المحاولة، لكن يمكن لـ openclaw cron edit <job-id> --failure-alert-include-skipped إدراج عمليات التشغيل المتخطاة المتكررة ضمن تنبيهات الفشل.
بالنسبة إلى المهام المعزولة التي تستهدف مزوّد نموذج محليًا مكوّنًا، يشغل Cron فحصًا أوليًا خفيفًا للمزوّد قبل بدء دورة الوكيل. يتم فحص مزوّدي api: "ollama" من نوع Loopback، والشبكات الخاصة، و.local عند /api/tags؛ ويتم فحص مزوّدي OpenAI المتوافقين المحليين مثل vLLM وSGLang وLM Studio عند /models. إذا كانت نقطة النهاية غير قابلة للوصول، يُسجّل التشغيل بوصفه skipped وتُعاد المحاولة في جدول لاحق؛ وتُخزّن نقاط النهاية الميتة المطابقة لمدة 5 دقائق لتجنب أن تطرق مهام كثيرة الخادم المحلي نفسه.
ملاحظة: تعيش تعريفات مهام Cron في jobs.json، بينما تعيش حالة وقت التشغيل المعلقة في jobs-state.json. إذا تم تحرير jobs.json خارجيًا، يعيد Gateway تحميل الجداول المتغيرة ويمسح الخانات المعلقة القديمة؛ ولا تمسح عمليات إعادة الكتابة الخاصة بالتنسيق فقط الخانة المعلقة.
عمليات التشغيل اليدوية
يعيد openclaw cron run النتيجة بمجرد وضع التشغيل اليدوي في الصف. تتضمن الاستجابات الناجحة { ok: true, enqueued: true, runId }. استخدم openclaw cron runs --id <job-id> لمتابعة النتيجة النهائية.
النماذج
يحدد cron add|edit --model <ref> نموذجًا مسموحًا للمهمة.
يُعد --model في Cron أساسيًا للمهمة، وليس تجاوزًا لـ /model في جلسة دردشة. هذا يعني:
- تظل بدائل النموذج المكوّنة مطبقة عندما يفشل نموذج المهمة المحدد.
- تستبدل
fallbacksفي حمولة كل مهمة قائمة البدائل المكوّنة عند وجودها. - تجعل قائمة بدائل فارغة لكل مهمة (
fallbacks: []في حمولة/واجهة API المهمة) تشغيل Cron صارمًا. - عندما تكون لدى مهمة
--modelلكن لا توجد قائمة بدائل مكوّنة، يمرر OpenClaw تجاوز بدائل فارغًا صريحًا حتى لا يُضاف النموذج الأساسي للوكيل كهدف إعادة محاولة مخفي.
أسبقية نموذج Cron المعزول
يحسم Cron المعزول النموذج النشط بهذا الترتيب:
- تجاوز خطاف Gmail.
--modelالخاص بالمهمة.- تجاوز نموذج جلسة Cron المخزن (عندما يختار المستخدم واحدًا).
- اختيار نموذج الوكيل أو النموذج الافتراضي.
الوضع السريع
يتبع الوضع السريع في Cron المعزول اختيار النموذج الحي المحسوم. ينطبق إعداد النموذج params.fastMode افتراضيًا، لكن تجاوز fastMode المخزن للجلسة يظل متغلبًا على الإعداد.
إعادة محاولات تبديل النموذج الحي
إذا طرح تشغيل معزول LiveSessionModelSwitchError، يحفظ Cron المزوّد والنموذج المحوّلين (وتجاوز ملف المصادقة المحوّل عند وجوده) للتشغيل النشط قبل إعادة المحاولة. حلقة إعادة المحاولة الخارجية محدودة بإعادة محاولتين للتبديل بعد المحاولة الأولية، ثم تُجهض بدلًا من الدوران إلى الأبد.
مخرجات التشغيل والرفض
كبت الإقرار القديم
تكبت دورات Cron المعزولة الردود القديمة التي تقتصر على الإقرار. إذا كانت النتيجة الأولى مجرد تحديث حالة مؤقت ولم تكن أي عملية تشغيل وكيل فرعي تابع مسؤولة عن الإجابة النهائية، يعيد Cron المطالبة مرة واحدة للحصول على النتيجة الحقيقية قبل التسليم.
كبت الرمز الصامت
إذا أعاد تشغيل Cron معزول الرمز الصامت فقط (NO_REPLY أو no_reply)، يكبت Cron كلًا من التسليم الصادر المباشر ومسار الملخص المصطف الاحتياطي، لذلك لا يُنشر أي شيء مرة أخرى إلى الدردشة.
الرفض المنظم
تفضّل عمليات تشغيل Cron المعزولة بيانات تعريف رفض التنفيذ المنظمة من التشغيل المضمن، ثم ترجع إلى علامات الرفض المعروفة في المخرجات النهائية، مثل SYSTEM_RUN_DENIED وINVALID_REQUEST وعبارات رفض ربط الموافقة.
يعرض cron list وسجل التشغيل سبب الرفض بدلًا من الإبلاغ عن أمر محظور بوصفه ok.
الاحتفاظ
يتم التحكم في الاحتفاظ والتقليم في الإعدادات:
- يقوم
cron.sessionRetention(الافتراضي24h) بتقليم جلسات التشغيل المعزولة المكتملة. - يقوم
cron.runLog.maxBytesوcron.runLog.keepLinesبتقليم~/.openclaw/cron/runs/<jobId>.jsonl.
ترحيل المهام الأقدم
التعديلات الشائعة
حدّث إعدادات التسليم من دون تغيير الرسالة:
openclaw cron edit <job-id> --announce --channel telegram --to "123456789"عطّل التسليم لمهمة معزولة:
openclaw cron edit <job-id> --no-deliverفعّل سياق تمهيد خفيفًا لمهمة معزولة:
openclaw cron edit <job-id> --light-contextأعلن إلى قناة محددة:
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"أعلن إلى موضوع منتدى Telegram:
openclaw cron edit <job-id> --announce --channel telegram --to "-1001234567890" --thread-id 42أنشئ مهمة معزولة بسياق تمهيد خفيف:
openclaw cron add \ --name "Lightweight morning brief" \ --cron "0 7 * * *" \ --session isolated \ --message "Summarize overnight updates." \ --light-context \ --no-deliverينطبق --light-context على مهام دورات الوكيل المعزولة فقط. بالنسبة إلى عمليات تشغيل Cron، يبقي الوضع الخفيف سياق التمهيد فارغًا بدلًا من حقن مجموعة تمهيد مساحة العمل الكاملة.
أوامر الإدارة الشائعة
التشغيل اليدوي والفحص:
openclaw cron listopenclaw cron list --agent opsopenclaw cron get <job-id>openclaw cron show <job-id>openclaw cron run <job-id>openclaw cron run <job-id> --dueopenclaw cron runs --id <job-id> --limit 50يعرض openclaw cron list جميع المهام المطابقة افتراضيًا. مرر --agent <id> لعرض المهام التي يطابق معرّف وكيلها الفعلي المطبّع فقط؛ تُحتسب المهام التي لا تحتوي على معرّف وكيل مخزن كأنها تخص الوكيل الافتراضي المكوّن.
يعيد openclaw cron get <job-id> JSON المهمة المخزنة مباشرة. استخدم cron show <job-id> عندما تريد العرض المقروء للبشر مع معاينة مسار التسليم.
يتضمن cron list --json وcron show <job-id> --json حقل status ذا مستوى أعلى في كل مهمة، محسوبًا من enabled وstate.runningAtMs وstate.lastRunStatus. القيم: disabled أو running أو ok أو error أو skipped أو idle. يعكس هذا عمود الحالة المقروء للبشر حتى تتمكن الأدوات الخارجية من قراءة حالة المهمة من دون إعادة اشتقاقها.
تتضمن إدخالات cron runs تشخيصات التسليم مع هدف Cron المقصود، والهدف المحسوم، وإرسالات أداة الرسائل، واستخدام الاحتياط، وحالة التسليم.
إعادة استهداف الوكيل والجلسة:
openclaw cron edit <job-id> --agent opsopenclaw cron edit <job-id> --clear-agentopenclaw cron edit <job-id> --session currentopenclaw cron edit <job-id> --session "session:daily-brief"يحذّر openclaw cron add عندما يُحذف --agent في مهام دورات الوكيل ويرجع إلى الوكيل الافتراضي (main). مرر --agent <id> وقت الإنشاء لتثبيت وكيل محدد.
تعديلات التسليم:
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"openclaw cron edit <job-id> --best-effort-deliveropenclaw cron edit <job-id> --no-best-effort-deliveropenclaw cron edit <job-id> --no-deliver