الأتمتة

Cron مقابل Heartbeat

تتيح لك كل من نبضات القلب ومهام cron تشغيل المهام وفقًا لجدول زمني. يساعدك هذا الدليل في اختيار الآلية المناسبة لحالة الاستخدام الخاصة بك.

دليل قرار سريع

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

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

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

متى تستخدم heartbeat

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

مزايا Heartbeat

  • تجميع فحوصات متعددة: يمكن لدورة وكيل واحدة مراجعة صندوق الوارد والتقويم والإشعارات معًا.
  • يقلل من استدعاءات API: نبضة قلب واحدة أرخص من 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", // explicit alert delivery target (default is "none")
        activeHours: { start: "08:00", end: "22:00" }, // optional
      },
    },
  },
}

راجع Heartbeat للحصول على التكوين الكامل.

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

تعمل مهام Cron في أوقات دقيقة ويمكن أن تعمل في جلسات معزولة دون التأثير على السياق الرئيسي. يتم توزيع الجداول الزمنية المتكررة في بداية الساعة تلقائيًا بواسطة إزاحة حتمية لكل مهمة في نافذة من 0 إلى 5 دقائق.

متى تستخدم cron

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

مزايا Cron

  • توقيت دقيق: تعبيرات cron من 5 حقول أو 6 حقول (ثوانٍ) مع دعم النطاق الزمني.
  • نشر الحمل المدمج: يتم توزيع الجداول الزمنية المتكررة في بداية الساعة بشكل متدرج حتى 5 دقائق افتراضيًا.
  • تحكم لكل مهمة: تجاوز التوزيع بـ --stagger <duration> أو فرض التوقيت الدقيق بـ --exact.
  • عزل الجلسة: يعمل في cron:<jobId> دون تلويث السجل الرئيسي.
  • تجاوزات النموذج: استخدم نموذجًا أرخص أو أكثر قوة لكل مهمة.
  • تحكم في التسليم: المهام المعزولة افتراضيًا إلى announce (ملخص)؛ اختر none حسب الحاجة.
  • تسليم فوري: وضع الإعلان ينشر مباشرة دون انتظار نبضة القلب.
  • لا حاجة لسياق الوكيل: يعمل حتى إذا كانت الجلسة الرئيسية خاملة أو مضغوطة.
  • دعم لمرة واحدة: --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 للحصول على مرجع CLI الكامل.

مخطط انسيابي للقرار

هل تحتاج المهمة إلى التشغيل في وقت EXACT محدد؟
  نعم -> استخدم cron
  لا  -> تابع...

هل تحتاج المهمة إلى العزل عن الجلسة الرئيسية؟
  نعم -> استخدم cron (معزول)
  لا  -> تابع...

هل يمكن تجميع هذه المهمة مع فحوصات دورية أخرى؟
  نعم -> استخدم heartbeat (أضف إلى HEARTBEAT.md)
  لا  -> استخدم cron

هل هذا تذكير لمرة واحدة؟
  نعم -> استخدم cron مع --at
  لا  -> تابع...

هل يحتاج إلى نموذج مختلف أو مستوى تفكير؟
  نعم -> استخدم cron (معزول) مع --model/--thinking
  لا  -> استخدم 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 كـ عملية فرعية محلية (lobster CLI) في وضع الأداة ويعيد مغلف JSON.
  • إذا أعادت الأداة needs_approval، فإنك تستأنف بـ resumeToken وعلامة approve.
  • الأداة هي ملحق اختياري؛ قم بتمكينه بالإضافة عبر tools.alsoAllow: ["lobster"] (موصى به).
  • يتوقع Lobster أن يكون lobster CLI متاحًا على PATH.

راجع Lobster للحصول على الاستخدام الكامل والأمثلة.

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

يمكن لكل من heartbeat و cron التفاعل مع الجلسة الرئيسية، ولكن بشكل مختلف:

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

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

استخدم --session main مع --system-event عندما تريد:

  • ظهور التذكير/الحدث في سياق الجلسة الرئيسية
  • أن يتعامل الوكيل معه خلال نبضة القلب التالية مع السياق الكامل
  • لا يوجد تشغيل معزول منفصل
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 (رئيسي)يضيف حدثًا إلى نبضة القلب التالية (لا توجد دورة معزولة)
Cron (معزول)دورة وكيل كاملة لكل مهمة؛ يمكن استخدام نموذج أرخص

نصائح:

  • حافظ على صغر حجم HEARTBEAT.md لتقليل النفقات العامة للرموز المميزة.
  • قم بتجميع الفحوصات المماثلة في نبضة القلب بدلاً من مهام cron متعددة.
  • استخدم target: "none" على نبضة القلب إذا كنت تريد المعالجة الداخلية فقط.
  • استخدم cron المعزول مع نموذج أرخص للمهام الروتينية.

ذات صلة

  • Heartbeat - تكوين نبض القلب الكامل
  • مهام Cron - مرجع CLI و API الكامل لـ cron
  • النظام - أحداث النظام + عناصر تحكم نبض القلب

مهام Cronاستكشاف أخطاء الأتمتة وإصلاحها