---
read_when:
    - تريد مهامًا مجدولة وعمليات إيقاظ
    - أنت تقوم بتصحيح أخطاء تنفيذ Cron والسجلات
summary: مرجع CLI لـ `openclaw cron` (جدولة مهام الخلفية وتشغيلها)
title: Cron
x-i18n:
    generated_at: "2026-05-11T20:27:02Z"
    model: gpt-5.5
    provider: openai
    source_hash: ad261871e48704061be7147f0a2722001cdc7e95156c0dc44f46c41d7e415cc6
    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 المعزولة مع إخفاقات الوكيل على مستوى التشغيل كأخطاء مهمة حتى عندما
لا يتم إنتاج حمولة رد، لذلك تظل إخفاقات النموذج/المزوّد تزيد عدادات الأخطاء
وتشغّل إشعارات الفشل.

إذا انتهت مهلة تشغيل معزول قبل أول طلب نموذج، فسيتضمن `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>`، الذي يفسر وقت ساعة الحائط في المنطقة الزمنية المحددة.

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

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

تستخدم المهام المتكررة تراجع إعادة المحاولة الأسي بعد الأخطاء المتتالية: 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>` لمتابعة النتيجة النهائية.

<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 list --agent ops
openclaw cron get <job-id>
openclaw cron show <job-id>
openclaw cron run <job-id>
openclaw cron run <job-id> --due
openclaw 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 المقصود، والهدف المحسوم، وإرسالات أداة الرسائل، واستخدام الاحتياط، وحالة التسليم.

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

```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)
