الانتقال إلى المحتوى الرئيسي

Cron مقابل Heartbeat: متى تستخدم كلًّا منهما

تتيح لك كلٌّ من heartbeats ووظائف cron تشغيل المهام وفق جدول زمني. يساعدك هذا الدليل على اختيار الآلية المناسبة لحالة الاستخدام لديك.

دليل اتخاذ القرار السريع

حالة الاستخدامالموصى بهالسبب
فحص صندوق الوارد كل 30 دقيقةHeartbeatيُجمَّع مع فحوصات أخرى، واعٍ للسياق
إرسال تقرير يومي الساعة 9 صباحًا تمامًاCron (معزول)يتطلب توقيتًا دقيقًا
مراقبة التقويم للأحداث القادمةHeartbeatملاءمة طبيعية للوعي الدوري
تشغيل تحليل معمّق أسبوعيCron (معزول)مهمة مستقلة، ويمكن استخدام نموذج مختلف
ذكرني في 20 دقيقةCron (الرئيسي، --at)مهمة لمرة واحدة بتوقيت دقيق
فحص صحة المشروع في الخلفيةHeartbeatالحشوة في الدورة الحالية

Heartbeat: الوعي الدوري

تعمل heartbeats ضمن الجلسة الرئيسية على فاصل زمني منتظم (الافتراضي: 30 دقيقة). صُمِّمت ليقوم الوكيل بتفقّد الأمور وإبراز أي شيء مهم.

متى تستخدم heartbeat

  • فحوصات دورية متعددة: بدل 5 وظائف cron منفصلة لفحص البريد والتقويم والطقس والإشعارات وحالة المشروع، يمكن لنبضة واحدة أن تُجمّع كل ذلك.
  • قرارات واعية بالسياق: يمتلك الوكيل سياق الجلسة الرئيسية كاملًا، ما يمكّنه من اتخاذ قرارات ذكية حول ما هو عاجل وما يمكن تأجيله.
  • استمرارية محادثية: تشترك تشغيلات heartbeat في الجلسة نفسها، لذا يتذكر الوكيل المحادثات الأخيرة ويتابع بشكل طبيعي.
  • مراقبة منخفضة العبء: نبضة واحدة تحل محل العديد من مهام الاستطلاع الصغيرة.

مزايا heartbeat

  • تجميع فحوصات متعددة: يمكن لدور واحد للوكيل مراجعة البريد والتقويم والإشعارات معًا.
  • تقليل استدعاءات واجهة البرمجة: نبضة واحدة أقل تكلفة من 5 وظائف cron معزولة.
  • وعي بالسياق: يعرف الوكيل ما تعمل عليه ويمكنه تحديد الأولويات وفقًا لذلك.
  • كبح ذكي: إذا لم يكن هناك ما يتطلب الانتباه، يرد الوكيل بـ HEARTBEAT_OK ولا تُسلَّم أي رسالة.
  • توقيت طبيعي: ينحرف قليلًا بحسب حمل الطابور، وهو مناسب لمعظم سيناريوهات المراقبة.

مثال heartbeat: قائمة HEARTBEAT.md

# Heartbeat checklist

- Check email for urgent messages
- Review calendar for events in next 2 hours
- If a background task finished, summarize results
- If idle for 8+ hours, send a brief check-in
يقرأ الوكيل هذا في كل نبضة ويتعامل مع جميع العناصر في دور واحد.

تهيئة heartbeat

{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m", // interval
        target: "last", // where to deliver alerts
        activeHours: { start: "08:00", end: "22:00" }, // optional
      },
    },
  },
}
اطّلع على Heartbeat للاطلاع على التهيئة الكاملة.

Cron: الجدولة الدقيقة

تعمل وظائف cron في أوقات محددة بدقة ويمكن أن تعمل ضمن جلسات معزولة دون التأثير على السياق الرئيسي.

متى تستخدم cron

  • الحاجة إلى توقيت دقيق: «أرسل هذا الساعة 9:00 صباحًا كل يوم اثنين» (وليس «حوالي الساعة 9»).
  • مهام مستقلة: مهام لا تحتاج إلى سياق محادثي.
  • نموذج/تفكير مختلف: تحليلات ثقيلة تستحق نموذجًا أقوى.
  • تذكيرات لمرة واحدة: «ذكّرني بعد 20 دقيقة» مع --at.
  • مهام كثيرة أو صاخبة: مهام قد تُربك سجل الجلسة الرئيسية.
  • محفزات خارجية: مهام يجب أن تعمل بغض النظر عن نشاط الوكيل.

مزايا cron

  • توقيت دقيق: تعابير cron من 5 حقول مع دعم المناطق الزمنية.
  • عزل الجلسة: يعمل ضمن cron:<jobId> دون تلويث السجل الرئيسي.
  • تجاوز النموذج: استخدام نموذج أرخص أو أقوى لكل مهمة.
  • التحكم في التسليم: الوظائف المعزولة افتراضيًا إلى announce (ملخّص)؛ اختر none عند الحاجة.
  • تسليم فوري: وضع الإعلان ينشر مباشرة دون انتظار heartbeat.
  • عدم الحاجة إلى سياق الوكيل: يعمل حتى إذا كانت الجلسة الرئيسية خاملة أو مضغوطة.
  • دعم المهام لمرة واحدة: --at لطوابع زمنية مستقبلية دقيقة.

مثال cron: موجز صباحي يومي

openclaw cron add \
  --name "Morning briefing" \
  --cron "0 7 * * *" \
  --tz "America/New_York" \
  --session isolated \
  --message "Generate today's briefing: weather, calendar, top emails, news summary." \
  --model opus \
  --announce \
  --channel whatsapp \
  --to "+15551234567"
يعمل هذا بالضبط الساعة 7:00 صباحًا بتوقيت نيويورك، ويستخدم Opus للجودة، ويعلن ملخصًا مباشرة إلى WhatsApp.

مثال cron: تذكير لمرة واحدة

openclaw cron add \
  --name "Meeting reminder" \
  --at "20m" \
  --session main \
  --system-event "Reminder: standup meeting starts in 10 minutes." \
  --wake now \
  --delete-after-run
اطّلع على Cron jobs للمرجع الكامل لـ CLI.

مخطط تدفق القرار

Does the task need to run at an EXACT time?
  YES -> Use cron
  NO  -> Continue...

Does the task need isolation from main session?
  YES -> Use cron (isolated)
  NO  -> Continue...

Can this task be batched with other periodic checks?
  YES -> Use heartbeat (add to HEARTBEAT.md)
  NO  -> Use cron

Is this a one-shot reminder?
  YES -> Use cron with --at
  NO  -> Continue...

Does it need a different model or thinking level?
  YES -> Use cron (isolated) with --model/--thinking
  NO  -> Use heartbeat

الجمع بين الاثنين

أكثر الإعدادات كفاءة تستخدم كليهما:
  1. Heartbeat يتولى المراقبة الروتينية (البريد، التقويم، الإشعارات) في دور مُجمَّع كل 30 دقيقة.
  2. Cron يتولى الجداول الدقيقة (التقارير اليومية، المراجعات الأسبوعية) والتذكيرات لمرة واحدة.

مثال: إعداد أتمتة فعّال

HEARTBEAT.md (يُفحَص كل 30 دقيقة):
# Heartbeat checklist

- Scan inbox for urgent emails
- Check calendar for events in next 2h
- Review any pending tasks
- Light check-in if quiet for 8+ hours
وظائف cron (توقيت دقيق):
# Daily morning briefing at 7am
openclaw cron add --name "Morning brief" --cron "0 7 * * *" --session isolated --message "..." --announce

# Weekly project review on Mondays at 9am
openclaw cron add --name "Weekly review" --cron "0 9 * * 1" --session isolated --message "..." --model opus

# One-shot reminder
openclaw cron add --name "Call back" --at "2h" --session main --system-event "Call back the client" --wake now

Lobster: مسارات عمل حتمية مع موافقات

Lobster هو مُشغّل مسارات العمل لـ سلاسل أدوات متعددة الخطوات التي تحتاج تنفيذًا حتميًا وموافقات صريحة. استخدمه عندما تكون المهمة أكثر من دور واحد للوكيل، وتريد مسار عمل قابلًا للاستئناف مع نقاط تحقّق بشرية.

متى يكون Lobster مناسبًا

  • أتمتة متعددة الخطوات: تحتاج خط أنابيب ثابتًا من استدعاءات الأدوات، وليس مُطالبة لمرة واحدة.
  • بوابات موافقة: يجب إيقاف الآثار الجانبية حتى تُوافق، ثم الاستئناف.
  • تشغيلات قابلة للاستئناف: متابعة مسار عمل متوقف دون إعادة تشغيل الخطوات السابقة.

كيف يقترن مع heartbeat وcron

  • Heartbeat/cron يقرران متى يحدث التشغيل.
  • Lobster يحدد ما الخطوات التي تحدث بعد بدء التشغيل.
لمسارات العمل المُجدولة، استخدم cron أو heartbeat لإطلاق دور للوكيل يستدعي Lobster. وللمسارات عند الطلب، استدعِ Lobster مباشرة.

ملاحظات تشغيلية (من الشيفرة)

  • يعمل Lobster كـ عملية فرعية محلية (CLI lobster) في وضع الأداة ويُرجِع غلاف JSON.
  • إذا أعادت الأداة needs_approval، فتابِع الاستئناف باستخدام resumeToken وعلم approve.
  • الأداة مكوّن إضافي اختياري؛ فعّلها تدريجيًا عبر tools.alsoAllow: ["lobster"] (موصى به).
  • إذا مرّرت lobsterPath، فيجب أن يكون مسارًا مطلقًا.
اطّلع على Lobster للاستخدام الكامل والأمثلة.

الجلسة الرئيسية مقابل الجلسة المعزولة

يمكن لكلٍّ من heartbeat وcron التفاعل مع الجلسة الرئيسية، لكن بطرق مختلفة:
HeartbeatCron (الرئيسي)Cron (معزول)
الجلسةالرئيسيةالرئيسية (عبر حدث نظام)cron:<jobId>
التاريخمشتركمشتركجديد في كل تشغيل
السياقكاملكاملبلا سياق (يبدأ نظيفًا)
النموذجنموذج الجلسة الرئيسيةنموذج الجلسة الرئيسيةقابل للتجاوز
الإخراجيُسلَّم إن لم يكن HEARTBEAT_OKمطالبة heartbeat + حدثإعلان ملخّص (افتراضي)

متى تستخدم cron ضمن الجلسة الرئيسية

استخدم --session main مع --system-event عندما تريد:
  • ظهور التذكير/الحدث ضمن سياق الجلسة الرئيسية
  • أن يتعامل الوكيل معه أثناء نبضة heartbeat التالية مع سياق كامل
  • عدم وجود تشغيل معزول منفصل
openclaw cron add \
  --name "Check project" \
  --every "4h" \
  --session main \
  --system-event "Time for a project health check" \
  --wake now

متى تستخدم cron المعزول

استخدم --session isolated عندما تريد:
  • صفحة نظيفة دون سياق سابق
  • إعدادات نموذج أو تفكير مختلفة
  • إعلان الملخصات مباشرة إلى قناة
  • سجلًا لا يزدحم به تاريخ الجلسة الرئيسية
openclaw cron add \
  --name "Deep analysis" \
  --cron "0 6 * * 0" \
  --session isolated \
  --message "Weekly codebase analysis..." \
  --model opus \
  --thinking high \
  --announce

اعتبارات التكلفة

الآليةملف التكلفة
Heartbeatدور واحد كل N دقيقة؛ يتدرج مع حجم HEARTBEAT.md
Cron (الرئيسي)يضيف حدثًا إلى نبضة heartbeat التالية (دون دور معزول)
Cron (معزول)دور وكيل كامل لكل مهمة؛ يمكن استخدام نموذج أرخص
نصائح:
  • أبقِ HEARTBEAT.md صغيرًا لتقليل عبء الرموز.
  • جمّع الفحوصات المتشابهة ضمن heartbeat بدل وظائف cron متعددة.
  • استخدم target: "none" على heartbeat إذا أردت معالجة داخلية فقط.
  • استخدم cron المعزول مع نموذج أرخص للمهام الروتينية.

ذات صلة

  • Heartbeat - التهيئة الكاملة لـ heartbeat
  • Cron jobs - مرجع CLI وواجهة برمجة cron الكامل
  • System - أحداث النظام + عناصر تحكم heartbeat