
ستون حاوية على خادم واحد
صندوق معادن عارية واحد يشغل عشرات إلى مئات حاويات Hoody. يجعل KSM و BTRFS dedup التكلفة الإضافية قريبة من الصفر.
منتجك يُشغّل مئات جلسات الوكلاء يومياً. كل جلسة تكتب نسختها النصّية إلى رابط SQLite. في السادسة صباحاً، مُدخل cron يُرسل POST إلى وكيل مُشرف مع موجَّه واحد: اقرأ نُسخ الأمس النصّية، قيّمها، ضع علامة على الأسوأ ثلاثة. حين تجلس إلى مكتبك، يكون كشف العلامات مفتوحاً بالفعل.
مهمة cron هي المُشرف · والمُشرف هو وكيل أيضاً
مُدخل cron واحد من خمسة حقول يُرسل POST إلى خدمة الوكيل مع موجَّه. حاوية المُشرف تستيقظ، تقرأ آثار SQLite للأمس، تكتب درجاتها مرة أخرى إلى نفس قاعدة البيانات، ثم تخرج. لا مُنسّق، لا خدمة معايير، ولا أنبوب تقييم.
# POST /api/v1/cron/users/me/entries { "schedule": "0 6 * * *", "command": "curl -X POST $AGENT/api/v1/agent/tasks \ -d @grade.json", "comment": "nightly-supervisor" }
# grade.json — the supervisor's instructions { "description": "اقرأ نُسخ الأمس النصّية من /sqlite/sessions WHERE day = '2026-05-03'. خُذ عيّنة من 50. قيّم كل واحدة على الواقعية، صحّة استدعاءات الأدوات، انحراف اللهجة. اكتب النتائج إلى جدول التقرير. ضع علامة على الأسوأ ثلاثة للمراجعة البشرية.", "mode": "code" }
سطر cron يُقرّر متى. الموجَّه يُقرّر ماذا. حاوية المُشرف تُؤدّي العمل في حوالي 20 دقيقة بين عشية وضحاها ثم تختفي. العيّنة المُقيَّمة تكون على القرص قبل أن يصل أي شخص إلى مكتبه.
شاشات AgentOps تُريك السجلات. معايير LangSmith تُعطيك الدرجات. مُشرف مُقيَّم يُغلق الحلقة — يقرأ النُسخ النصّية، ويُقرّر ما هو سيّئ، ويكتب الحُكم.
ليس مجرد مقاييس. المُشرف يفتح كل جلسة، يقرأ استدعاءات الأدوات، يتحقّق من الحقيقة الأساسية، يزن اللهجة. ورقة معايير تعدّ؛ وكيل مُشرف يحكم.
من بين 400 تشغيل، 397 جيدة. مهمة المُشرف هي إبراز الثلاثة التي ليست كذلك — بالاسم، مع ملاحظة من سطر واحد. لا تتصفّح لوحة تحكّم، تقرأ أربعة أسطر.
كل درجة وكل ملاحظة تهبط في نفس رابط SQLite الذي يستخدمه الوكلاء. مُشرف الغد يُقارن. الانحراف يصبح استعلاماً، لا إحساساً.
ثلاثة أشياء تحدث بين السادسة والسادسة وواحد وعشرين دقيقة صباحاً. ولا واحد منها يحتاج إليك.
وكيل المُشرف يستعلم من نفس رابط SQLite الذي كتب إليه العمّال. SELECT * FROM sessions WHERE day = yesterday. خُذ عيّنة من 50 عشوائياً.
لكل جلسة: واقعية، صحّة استدعاء الأدوات، انحراف اللهجة، عدد الهلاوس. درجة حرفية + سبب من سطر واحد. التكلفة: مهمة وكيل واحدة.
INSERT في جدول التقرير. ضع علامة على الأسوأ ثلاثة للمراجعة البشرية. الصفحة في /grades/[date] ليست سوى SELECT على ذلك الجدول.
بحلول السادسة وواحد وعشرين دقيقة صباحاً، توجد عيّنة مُقيَّمة على القرص وثلاث نُسخ نصّية مُعلَّمة في الطابور. المُقيِّم لا يراقب الوكلاء — يعمل بإيقاع منتظم ويحكم عليهم، كمعلّم يقرأ الواجبات بين عشية وضحاها.
أرقام مبنيّة على أسطح cron + agent + SQLite. لا مقاييس مُختلَقة.
خمسة حقول تُقرّر متى يستيقظ المُشرف. غيّر الجدول، غيّر الإيقاع — كل ساعة، يومياً، عند الطلب. السطر هو المُجدوِل بأكمله.
مهمة مُشرف تأخذ عيّنة من 50 جلسة، تقرأ كل واحدة، وتكتب الأحكام، تنتهي عادة خلال 20 دقيقة. الحاوية تخرج حين تنتهي المهمة.
لا Airflow، لا خدمة تقييم، لا مُجدوِل DAG. مُدخل cron هو صفّ في /etc/crontab. الحُكم صفّ في SQLite. لا يوجد شيء ثالث.
تعابير cron قياسية من خمسة حقول وفق Hoody Cron API. طول جلسة المُشرف يعتمد على حجم العيّنة وتعقيد المعايير. SQLite هو نفس رابط hoody-sqlite الذي يكتب إليه وكلاء العمل أصلاً — لا مخزن ثانٍ.
مهمة cron هي المُشرف؛ والمُشرف هو وكيل أيضاً.
الحزمة القياسية لجودة الوكلاء: لوحات تحكّم للقراءة فقط، مراجعة سجلات يدوية، وأدوات معايير تُقيّم لكنها لا تتصرّف. مُشرف cron يفعل الثلاثة في عشرين دقيقة.
توقّف عن قراءة السجلات في الحادية عشرة ليلاً. جدوِل وكيلاً ليفعلها بين عشية وضحاها، واقرأ كشف علاماته مع قهوتك.