مرحبًا بعودتك إلى حفلة الأتمتة
Tutorial 21: Scheduled Tasks (Cron) — easy-to-understand guide based on official docs
مرحبًا بعودتك إلى حفلة الأتمتة
في البرنامج التعليمي العشرين، بنينا بوتًا للملخص اليومي يطمئن عليك كل صباح. لطيف، أليس كذلك؟ حسنًا، اليوم سننتقل إلى مستوى أعلى. نظام cron في Hermes يمكنه فعل أكثر بكثير من مجرد قول “صباح الخير”. نحن نتحدث عن مراقبة المواقع، وملخصات أسبوعية، ومتابعة GitHub، وحتى خطوط معالجة البيانات — كلها تعمل تلقائيًا.
أفضل جزء؟ لست بحاجة لأن تكون مبرمجًا لإعدادها. كل ما تحتاجه هو معرفة ما تريد أتمتته، وHermes يتولى المهام الثقيلة.
القاعدة الذهبية: الأوامر المكتفية بذاتها
قبل أن نغوص في الأنماط، هناك مفهوم واحد يجب أن تفهمه تمامًا: مهام cron تعمل في جلسات وكيل جديدة تمامًا. هذا يعني أن وكيلك لا يملك أي ذاكرة عن محادثتك الحالية. لا “تذكر ما تحدثنا عنه بالأمس” — لا شيء من هذا القبيل.
لذا يجب أن يكون كل أمر تكتبه مكتفيًا بذاته تمامًا. اذكر كل ما يحتاج الوكيل إلى معرفته: الأوامر التي يجب تشغيلها، والمصادر التي يجب فحصها، والتنسيق الذي تريده. اشرح كل شيء بالتفصيل.
فكر في الأمر ككتابة تعليمات لمتدرب ذكي جدًا دخل للتو من الباب. لن تقول “افعل ذلك الشيء الذي ناقشناه”. بل ستقول “هذا بالضبط ما يجب فعله، خطوة بخطوة”.
النمط 1: مراقب تغييرات المواقع
تريد أن تعرف اللحظة التي يغيّر فيها منافسك صفحة الأسعار؟ أو عندما يتم تحديث مدونتك المفضلة؟ هذا النمط يراقب عنوان URL ولا يزعجك إلا عندما يتغير شيء فعليًا.
الحيلة تكمن في معامل --script. سكربت Python يعمل قبل كل تنفيذ، ويقوم بالعمل الميكانيكي (الجلب، والمقارنة)، ومخرجاته تصبح سياقًا للوكيل. ثم يقرر الوكيل: هل هذا التغيير مثير للاهتمام؟
إليك السكربت الذي يقوم بالعمل الشاق:
# ~/.hermes/scripts/watch-site.py
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
req = urllib.request.Request(URL, headers={"User-Agent": "Hermes-Monitor/1.0"})
content = urllib.request.urlopen(req, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
if prev_hash and prev_hash != current_hash:
print(f"CHANGE DETECTED on {URL}")
print(f"Previous hash: {prev_hash}")
print(f"Current hash: {current_hash}")
print(f"\nCurrent content (first 2000 chars):\n{content[:2000]}")
else:
print("NO_CHANGE")
ثم قم بإعداد مهمة cron:
/cron add "every 1h" "If the script output says CHANGE DETECTED, summarize what changed on the page and why it might matter. If it says NO_CHANGE, respond with just [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram
نصيحة احترافية: لاحظت تعليمة [SILENT]؟ هذه علامة الهدوء الخاصة بك. عندما يرد الوكيل فقط بـ [SILENT]، يعرف Hermes ألا يزعجك. لا رسائل مزعجة خارج ساعات العمل.
النمط 2: التقرير الأسبوعي
هذا مثالي للبقاء على اطلاع بمجال عملك. يعمل كل يوم اثنين الساعة 9 صباحًا ويجمع ملخصًا من مصادر متعددة.
/cron add "0 9 * * 1" "Generate a weekly report covering:
1. Search the web for the top 5 AI news stories from the past week
2. Search GitHub for trending repositories in the 'machine-learning' topic
3. Check Hacker News for the most discussed AI/ML posts
Format as a clean summary with sections for each source. Include links.
Keep it under 500 words — highlight only what matters." --name "Weekly AI digest" --deliver telegram
0 9 * * 1 هي صيغة cron القياسية: الدقيقة 0، الساعة 9، أي يوم من الشهر، أي شهر، الاثنين (1). سهلة بمجرد أن تعرفها.
النمط 3: مراقب مستودعات GitHub
تابع أي مستودع دون تحديث الصفحة كل خمس دقائق.
/cron add "every 6h" "Check the GitHub repository NousResearch/hermes-agent for:
- New issues opened in the last 6 hours
- New PRs opened or merged in the last 6 hours
- Any new releases
Use the terminal to run gh commands:
gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
gh pr list --repo NousResearch/hermes-agent --state all --json number,title,author,createdAt,mergedAt --limit 10
Filter to only items from the last 6 hours. If nothing new, respond with [SILENT].
Otherwise, provide a concise summary of the activity." --name "Repo watcher" --deliver discord
لاحظ كيف يتضمن الأمر أوامر gh الدقيقة؟ هذه هي قاعدة الاكتفاء الذاتي في العمل. الوكيل لن يتذكر كيف فعلت هذا في المرة السابقة — عليك إخباره في كل مرة.
النمط 4: خط معالجة البيانات
هذا لعشاق البيانات. اجمع الأسعار أو المقاييس أو أي بيانات API على فترات منتظمة، واحفظها في ملفات، ودع الوكيل يكتشف الاتجاهات.
السكربت يتولى الجمع (بدون إهدار رموز LLM على الجلب)، والوكيل يتولى التحليل. ادمجهما للحصول على نظام قوي لاكتشاف الاتجاهات.
بدائل بدون رموز LLM
لست بحاجة إلى LLM إطلاقًا؟ خياران:
-
مهام cron بسكربت فقط: إذا كان سكربتك ينتج الرسالة الدقيقة بالفعل (تنبيهات الذاكرة، تحذيرات القرص، إشارات النبض)، فتخطَّ الوكيل تمامًا. فقط اطلب من Hermes إعداده — أداة
cronjobتعرف متى تستخدمno_agent=True. -
إرسال لمرة واحدة من سكربت قيد التشغيل: استخدم
hermes sendلنقل stdout أو ملف مباشرة إلى Telegram أو Discord أو Slack. مثالي لخطوات CI أو خطافات ما بعد الالتزام أو سكربتات النشر.
الخلاصة
لديك الأنماط الآن. اذهب وأتمتِ شيئًا مملًا. نسختك المستقبلية ستشكرك.
للحصول على مرجع الميزات الكامل، راجع وثائق المهام المجدولة (Cron). وتذكر: أوامر مكتفية بذاتها، و[SILENT] للهدوء، وسكربتات للعمل الميكانيكي. هذه هي اللعبة كلها.
📖 التوثيق الرسمي
この記事は Hermes Agent のالتوثيق الرسميに基づいています:التوثيق الرسمي › guides/automate-with-cron