---
read_when:
    - تريد مهام مجدولة وعمليات إيقاظ
    - أنت تقوم بتصحيح أخطاء تنفيذ Cron والسجلات
summary: مرجع CLI لـ `openclaw cron` (جدولة مهام الخلفية وتشغيلها)
title: Cron
x-i18n:
    generated_at: "2026-05-02T07:21:26Z"
    model: gpt-5.5
    provider: openai
    source_hash: 298ac3fc868462eb301febbc1aa5296d8087cad7fdc466870487081444c5856f
    source_path: cli/cron.md
    workflow: 16
---

# `openclaw cron`

إدارة مهام Cron لمجدول Gateway.

<Tip>
شغّل `openclaw cron --help` للاطلاع على كامل سطح الأوامر. راجع [مهام Cron](/ar/automation/cron-jobs) للحصول على الدليل المفاهيمي.
</Tip>

## الجلسات

يقبل `--session` القيم `main` أو `isolated` أو `current` أو `session:<id>`.

<AccordionGroup>
  <Accordion title="مفاتيح الجلسة">
    - يربط `main` بجلسة الوكيل الرئيسية.
    - ينشئ `isolated` نص محادثة جديدًا ومعرّف جلسة لكل تشغيل.
    - يربط `current` بالجلسة النشطة وقت الإنشاء.
    - يثبت `session:<id>` مفتاح جلسة مستمرًا صريحًا.

  </Accordion>
  <Accordion title="دلالات الجلسة المعزولة">
    تعيد عمليات التشغيل المعزولة تعيين سياق المحادثة المحيط. تتم إعادة تعيين توجيه القناة والمجموعة، وسياسة الإرسال/الوضع في الطابور، والترقية، والأصل، وربط وقت تشغيل ACP للتشغيل الجديد. يمكن أن تنتقل التفضيلات الآمنة والنموذج المحدد صراحة من المستخدم أو تجاوزات المصادقة عبر عمليات التشغيل.
  </Accordion>
</AccordionGroup>

## التسليم

يعرض `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:` صياغة أهداف مملوكة للقناة.

<Note>
تستخدم مهام `cron add` المعزولة التسليم عبر `--announce` افتراضيًا. استخدم `--no-deliver` لإبقاء الإخراج داخليًا. يبقى `--deliver` اسمًا بديلًا مهملاً لـ `--announce`.
</Note>

### ملكية التسليم

تتم مشاركة تسليم دردشة Cron المعزولة بين الوكيل والمشغّل:

- يمكن للوكيل الإرسال مباشرة باستخدام أداة `message` عند توفر مسار دردشة.
- يقوم `announce` بالتسليم الاحتياطي للرد النهائي فقط عندما لا يرسل الوكيل مباشرة إلى الهدف المحلول.
- ينشر `webhook` الحمولة المكتملة إلى URL.
- يعطل `none` التسليم الاحتياطي من المشغّل.

`--announce` هو تسليم المشغّل الاحتياطي للرد النهائي. يعطل `--no-deliver` ذلك التسليم الاحتياطي لكنه لا يزيل أداة `message` الخاصة بالوكيل عند توفر مسار دردشة.

تحافظ التذكيرات المنشأة من دردشة نشطة على هدف تسليم الدردشة المباشر للتسليم الاحتياطي عبر الإعلان. قد تكون مفاتيح الجلسة الداخلية بأحرف صغيرة؛ لا تستخدمها مصدرًا للحقيقة لمعرّفات المزود الحساسة لحالة الأحرف مثل معرّفات غرف Matrix.

### تسليم الفشل

تُحل إشعارات الفشل بهذا الترتيب:

1. `delivery.failureDestination` في المهمة.
2. `cron.failureDestination` العام.
3. هدف الإعلان الأساسي للمهمة (عند عدم تعيين وجهة فشل صريحة).

<Note>
لا يجوز لمهام الجلسة الرئيسية استخدام `delivery.failureDestination` إلا عندما يكون وضع التسليم الأساسي هو `webhook`. تقبلها المهام المعزولة في كل الأوضاع.
</Note>

ملاحظة: تتعامل عمليات تشغيل Cron المعزولة مع حالات فشل الوكيل على مستوى التشغيل كأخطاء مهمة حتى عندما لا يتم إنتاج حمولة رد، لذلك لا تزال حالات فشل النموذج/المزود تزيد عدادات الأخطاء وتطلق إشعارات الفشل.

## الجدولة

### المهام لمرة واحدة

يجدول `--at <datetime>` تشغيلًا لمرة واحدة. تُعامل قيم التاريخ والوقت بلا إزاحة على أنها UTC ما لم تمرر أيضًا `--tz <iana>`، والذي يفسر وقت ساعة الحائط في المنطقة الزمنية المعطاة.

<Note>
تحذف المهام لمرة واحدة بعد النجاح افتراضيًا. استخدم `--keep-after-run` للاحتفاظ بها.
</Note>

### المهام المتكررة

تستخدم المهام المتكررة تراجع إعادة المحاولة الأسي بعد الأخطاء المتتالية: 30s، 1m، 5m، 15m، 60m. يعود الجدول إلى الوضع الطبيعي بعد التشغيل الناجح التالي.

تُتبع عمليات التشغيل المتخطاة بشكل منفصل عن أخطاء التنفيذ. لا تؤثر في تراجع إعادة المحاولة، لكن يمكن لـ `openclaw cron edit <job-id> --failure-alert-include-skipped` إدخال تنبيهات الفشل في إشعارات عمليات التشغيل المتخطاة المتكررة.

بالنسبة إلى المهام المعزولة التي تستهدف مزود نموذج محليًا مكوّنًا، يشغل Cron فحصًا تمهيديًا خفيفًا للمزود قبل بدء دورة الوكيل. يتم فحص مزودي `api: "ollama"` عبر local 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>` لمتابعة النتيجة النهائية.

<Note>
يشغّل `openclaw cron run <job-id>` التشغيل القسري افتراضيًا. استخدم `--due` للاحتفاظ بسلوك "التشغيل فقط إذا كان مستحقًا" الأقدم.
</Note>

## النماذج

يحدد `cron add|edit --model <ref>` نموذجًا مسموحًا للمهمة.

<Warning>
إذا لم يكن النموذج مسموحًا أو تعذر حله، يفشل Cron التشغيل بخطأ تحقق صريح بدلًا من الرجوع إلى وكيل المهمة أو اختيار النموذج الافتراضي.
</Warning>

يُعد `--model` في Cron **النموذج الأساسي للمهمة**، وليس تجاوزًا لـ `/model` في جلسة دردشة. يعني ذلك:

- تظل بدائل النماذج المكوّنة مطبقة عند فشل نموذج المهمة المحدد.
- تستبدل `fallbacks` في حمولة كل مهمة قائمة البدائل المكوّنة عند وجودها.
- تجعل قائمة بدائل كل مهمة الفارغة (`fallbacks: []` في حمولة المهمة/API) تشغيل Cron صارمًا.
- عندما تتضمن مهمة `--model` لكن لا توجد قائمة بدائل مكوّنة، يمرر OpenClaw تجاوز بدائل فارغًا صريحًا حتى لا تتم إضافة النموذج الأساسي للوكيل كهدف إعادة محاولة مخفي.

### أسبقية نموذج Cron المعزول

يحل Cron المعزول النموذج النشط بهذا الترتيب:

1. تجاوز خطاف Gmail.
2. `--model` لكل مهمة.
3. تجاوز نموذج جلسة Cron المخزن (عندما يختار المستخدم واحدًا).
4. اختيار الوكيل أو النموذج الافتراضي.

### الوضع السريع

يتبع الوضع السريع في 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`.

## ترحيل المهام الأقدم

<Note>
إذا كانت لديك مهام Cron من قبل تنسيق التسليم والتخزين الحالي، فشغّل `openclaw doctor --fix`. يطبع Doctor حقول Cron القديمة إلى الوضع الطبيعي (`jobId` و`schedule.cron` وحقول التسليم في المستوى الأعلى بما في ذلك `threadId` القديم وأسماء تسليم `provider` البديلة في الحمولة) ويرحّل مهام الرجوع الاحتياطي البسيطة لـ Webhook التي تستخدم `notify: true` إلى تسليم Webhook صريح عندما يكون `cron.webhook` مكوّنًا.
</Note>

## التعديلات الشائعة

حدّث إعدادات التسليم بدون تغيير الرسالة:

```bash
openclaw cron edit <job-id> --announce --channel telegram --to "123456789"
```

عطّل التسليم لمهمة معزولة:

```bash
openclaw cron edit <job-id> --no-deliver
```

فعّل سياق تمهيد خفيفًا لمهمة معزولة:

```bash
openclaw cron edit <job-id> --light-context
```

أعلن إلى قناة محددة:

```bash
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
```

أعلن إلى موضوع منتدى Telegram:

```bash
openclaw cron edit <job-id> --announce --channel telegram --to "-1001234567890" --thread-id 42
```

أنشئ مهمة معزولة بسياق تمهيد خفيف:

```bash
openclaw cron add \
  --name "Lightweight morning brief" \
  --cron "0 7 * * *" \
  --session isolated \
  --message "Summarize overnight updates." \
  --light-context \
  --no-deliver
```

ينطبق `--light-context` على مهام دورة الوكيل المعزولة فقط. بالنسبة إلى عمليات تشغيل Cron، يبقي الوضع الخفيف سياق التمهيد فارغًا بدلًا من حقن مجموعة تمهيد مساحة العمل الكاملة.

## أوامر الإدارة الشائعة

التشغيل اليدوي والفحص:

```bash
openclaw cron list
openclaw cron show <job-id>
openclaw cron run <job-id>
openclaw cron run <job-id> --due
openclaw cron runs --id <job-id> --limit 50
```

تتضمن إدخالات `cron runs` تشخيصات التسليم مع هدف Cron المقصود، والهدف المحلول، وإرسالات أداة الرسائل، واستخدام الرجوع الاحتياطي، وحالة التسليم.

إعادة استهداف الوكيل والجلسة:

```bash
openclaw cron edit <job-id> --agent ops
openclaw cron edit <job-id> --clear-agent
openclaw cron edit <job-id> --session current
openclaw cron edit <job-id> --session "session:daily-brief"
```

يحذر `openclaw cron add` عند حذف `--agent` في مهام دورة الوكيل ويرجع إلى الوكيل الافتراضي (`main`). مرر `--agent <id>` وقت الإنشاء لتثبيت وكيل محدد.

تعديلات التسليم:

```bash
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
openclaw cron edit <job-id> --best-effort-deliver
openclaw cron edit <job-id> --no-best-effort-deliver
openclaw cron edit <job-id> --no-deliver
```

## ذات صلة

- [مرجع CLI](/ar/cli)
- [المهام المجدولة](/ar/automation/cron-jobs)
