انتقل إلى المحتوى
use-cases / schedule-the-agent / hero
CRON · AGENT · 0 7 * * *

جدولة العامل، لا السكربت

سطر cron تقليدي يُشغّل reconcile.sh في الـ 2 صباحاً. سطر cron في Hoody يرسل POST بموجّه إلى hoody-agent. الجدول ثابت. العمل ليس كذلك. الحالات الحدّية تتوقف عن أن تكون فروعاً تصونها — تصبح سياقاً يستدلّ عليه العامل.

اقرأ مستندات cron + agent
use-cases / schedule-the-agent / mechanism

عنوانان URL، موجّه واحد

Hoody Cron هو crontab مُدار على كل حاوية. Hoody Agent هو عامل مستقل مدمج على نفس الحاوية. إدخال cron يستدعي العامل عبر curl. العامل يقرأ التاريخ، يقرأ البيانات، ويقرّر ما يتطلّبه اليوم. كلا السطحين HTTP — cron يعيش في /api/v1/cron/users/me/entries، والعامل في /api/v1/agent/tasks. لا كود غراء بينهما.

cron-1.containers.hoody.com · entry
POST · cron/users/me/entries
# POST /api/v1/cron/users/me/entries
{
  "schedule": "0 7 * * *",
  "command": "curl -X POST $AGENT/api/v1/agent/tasks \
     -d @prompt.json",
  "comment": "morning-reports"
}
agent-1.containers.hoody.com · task
POST · agent/tasks
# prompt.json — the body of the POST
{
  "description": "وفّق طلبات الأمس. أعِد التعيين إذا انحرف schema. توقّف ونبّه المناوب إذا كانت درجة الشذوذ > 3. إذا كان اليوم آخر يوم من الشهر، أدرج إغلاق الشهر على دفتر الأستاذ المُعدَّل ضريبياً.",
  "mode": "code"
}

POSTان وأنت انتهيت. سطر crontab لا يتغيّر مرة أخرى — الملف الوحيد الذي تصونه هو الموجّه. حالة حدّية جديدة؟ أضف جملة. قاعدة شذوذ جديدة؟ أضف جملة. الجدول يستمر في الانطلاق؛ العامل يكتشف ما يعنيه كل انطلاق.

use-cases / schedule-the-agent / powers

ثلاثة أشياء يفعلها موجّه ولا يستطيع سكربت فعلها

شكل العمل الذي يتلقّاه العامل دائماً نفسه — تاريخ، مجموعة بيانات، هدف. ما يتغيّر هو ما يقرّر العامل فعله بشأنها.

استدلال

يقرأ التاريخ، يقرأ البيانات، يقرّر

العامل يعمل بعد انطلاق cron. يفحص التقويم — نهاية الشهر، عطلة، إغلاق سنة مالية. يأخذ عيّنة من مجموعة البيانات — schema، حجم، درجة شذوذ. يختار الإجراء التالي بهذا السياق، لا من شجرة if ثابتة كتبتها قبل ستة أشهر.

تكيّف

أعمدة جديدة؟ عملات جديدة؟ نفس الموجّه.

عندما تضيف صادرات الأمس عمود refund_reason، يكسر السكربت ويُنبّهك. العامل يقرأ الـ schema، يطابقه على الحقل القديم، ويذكر التغيير في ملخص التشغيل. سطر crontab لم يكن مضطراً للمعرفة.

ملاحظة

كل تشغيل فقرة، لا رمز إرجاع

كل تشغيل يُعيد نشر ما قرّره العامل ولماذا. السجل بإنجليزية واضحة — "تخطّى: لا بيانات جديدة"، "تكيّف: أُضيف عمود refund"، "شذوذ: ارتفاع refund بنسبة 412%، نُبّه المناوب" — لا رمز خروج 0 / رمز خروج 1. سجلات cron تصبح يوميات.

use-cases / schedule-the-agent / flow

من الجدول إلى القرار

ثلاث خطوات — cron ينطلق، العامل يستدلّ، القرار يهبط. الخطوة الوسطى هي التي اعتدت كتابتها بنفسك في 400 سطر من سكربت shell بسبعة عشر فرعاً للحالات الحدّية. الآن هي موجّه.

حلقة يومية ذات ثلاث خطواتموجّه واحد · حالات حدّية لا نهائية
07:00

cron ينطلق

Hoody Cron يُشغّل الإدخال. سطر crontab هو curl واحد: POST /api/v1/agent/tasks مع جسم الموجّه. لا إعادة محاولات تكتبها بنفسك، ولا أنابيب تسجيل — خدمة cron تحقن الإدخال في crontab النظام وتتتبع التشغيل.

07:00 + ε

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

العامل يستلم الوصف، يفتح أدواته — terminal، files، sqlite، browser، exec — ويختار خطة عمل. قد يُشغّل، يتخطى، يتكيّف، أو يُنبّه. الاختيارات تتغير يومياً. التعليمات لا.

07:00 — 07:04

القرار يهبط

التشغيل ينتهي. العامل يُعيد نشر سطر ملخّص: تقارير مُعاد توليدها، تخطّى لعدم وجود بيانات جديدة، توقّف على شذوذ. تقرأه على هاتفك مع الإفطار.

الجدول لم يتغيّر. السكربت لم يتغيّر. ما تغيّر هو ما إذا كان عليك، أنت البشري، الاستيقاظ للتعامل معه. مع العامل في الحلقة، الإجابة تقريباً دائماً لا — وسجل التشغيل يخبرك لماذا.

use-cases / schedule-the-agent / capacity

ما تحصل عليه من زوج cron + العامل

Hoody Cron و Hoody Agent خدمتان على نفس الحاوية، كلتاهما متاحتان كـ HTTP. الأرقام تأتي من الأسطح الموثّقة — لا من معايير مُختلَقة.

  1. حجم CRONTAB1 line

    curl واحد في crontab، للأبد. جسم الموجّه هو الشيء الوحيد الذي تعيد كتابته — وتفعل ذلك في ملف JSON، لا بتشغيل crontab -e.

  2. نقاط نهاية AGENT100+

    hoody-agent يكشف السطح بالكامل — terminal exec، قراءة/كتابة الملفات، استعلام sqlite، أتمتة المتصفح، تحكم daemon — لمهمة العامل كاستدعاءات HTTP بسيطة.

  3. أسطر غراء0

    لا SDK بين cron والعامل. أرسل POST لعنوان URL، اقرأ آخر. كلتا الخدمتين تعيشان على نفس الحاوية، فالاستدعاء سريع بسرعة الشبكة المحلية.

Hoody Cron يدعم التعابير القياسية ذات الخمسة حقول (* * * * *) والماكروهات (@hourly, @daily, @weekly, @monthly, @yearly). إنشاء مهمة Hoody Agent هو POST /api/v1/agent/tasks واحد؛ التحديثات الحية تتدفق عبر /api/v1/agent/ws.

use-cases / schedule-the-agent / punchline

إدخال cron لا يُشغّل المهمة — يطلب من عامل أن يكتشف المهمة.

قبل · سكربت متفرّعبعد · موجّه متفرّع
إلى ماذا أشار إدخال CRON القديم0 2 * * * /usr/local/bin/reconcile.sh # 412 سطراً · 17 حالة حدّيةكل قاعدة جديدة لنهاية الشهر تعني تحرير السكربت والدعاء
إلى ماذا يشير الآن0 7 * * * curl POST agent/tasks -d @prompt.jsonسطر واحد، للأبد — الموجّه هو الأثر الوحيد الذي تصونه
اقرأ مواصفات مهمة العامل
use-cases / schedule-the-agent / replaces

ما يستبدله هذا

مجموعة الأشياء التي اعتدت كتابتها داخل reconcile.sh لأن cron كان يعرف فقط كيفية تشغيل الملفات. كل واحدة فرع، علم، إعداد — لا شيء منها يحتاج الجدول لمعرفته فعلاً. العامل يقرأ اليوم ويقرّر.

  • مهام cron مكتوبة هشّةفروع Bash تتعطّل عندما يتحرك عمود إدخال واحد
  • صيانة يدوية لـ schemas المتغيّرةتحرير reconcile.sh في كل مرة تنمو فيها صادرات upstream حقلاً
  • سكربتات ETL مكتوبة يدوياًمجلد من ملفات .sh يفهمها شخص واحد فقط في الفريق
  • منطق cron من نوع if X then Y else Zنهاية الشهر، عطلة، شذوذ — ثلاثة أعلام موصولة في سكربت واحد
  • سكربتات استطلاع للتغييراتcron منفصل يراقب مخرجات cron الأول ويقرّر
  • مجدوِلات if-else مكتوبة يدوياًموزّع 200 سطر مهمته الوحيدة اختيار أي سكربت يُشغَّل
use-cases / schedule-the-agent / cta

توقّف عن صيانة سكربتات cron. ابدأ صيانة موجّهات. الجدول ينطلق؛ العامل يكتشف.

اقرأ مستندات cron + agent
use-cases / schedule-the-agent / related

اقرأ الآخرين