تنسيق الوكلاء الموجه بالأحداث عبر سجل المهام (task_bus.jsonl): بنية انعدام الاستقصاء الدوري والتنفيذ المضاف فقط
توثيق هندسي لكيفية تنسيق عائلات النماذج اللغوية المتباينة (Claude وGemini وGrok والمشغلات الحتمية المحلية) دون حلقات انتظار مستهلكة للرموز أو تعارض في الحالة المشتركة.
ملخص تنفيذي (TL;DR)
- إلغاء الاستقصاء الدوري (Zero-Polling): إن تشغيل حلقات انتظار وفحص متكرر يستهلك الرموز (Tokens) بلا طائل ويولّد تأخيراً زمنياً. بدلاً من ذلك، تعتمد البنية على مراقب نظام الملفات في نواة النظام (
launchd WatchPaths) لإيقاظ الوكيل المستهدف فقط لحظة كتابة الحدث.
1. معضلة الاستقصاء الدوري وتعارض الحالة في الأنظمة متعددة الوكلاء
في الأنظمة الهندسية المعتمدة على وكلاء ذكاء اصطناعي متعددين (Multi-Agent Systems)، نادراً ما ينشأ الإخفاق التشغيلي من ضعف الاستدلال في النموذج المفرد؛ بل ينبع من غياب التزامن الصارم بين الوكلاء. عند تشغيل نماذج غير متجانسة—مثل Gemini للتركيب المعماري والتنفيذ غير التفاعلي، وClaude للتنسيق وقناة التواصل، وGrok للمراجعة النقدية الخارجية، إلى جانب مشغلات Python الحتمية—فإن مشاركة ملف حالة قابل للتعديل (Mutable Shared State) تؤدي إلى ثلاثة أعطال رئيسية:
- هدر الرموز بسبب الاستقصاء الدوري (Polling): إجبار كل وكيل على فحص قائمة المهام كل دقيقة عبر حلقات
sleepيستهلك سياق النموذج أثناء فترات السكون، ويؤخر الاستجابة للأوامر الفورية. - شروط السباق والكتابة الفوقية (Race Conditions): عندما يقرأ مشغلان متوازيان ملف حالة واحداً ويعدّلانه في اللحظة ذاتها، تُمحى نتائج أحد الوكلاء ومرفقات أدلته بصمت.
- التنفيذ المزدوج أو إهمال المهام: في غياب بروتوكول قفل ذري، قد ينفذ وكيلان المهمة نفسها مرتين أو يفترض كل منهما أن الآخر قد تولاها.
تعالج بنية Atlas هذه الأعطال جذرياً دون تعقيد خوادم قواعد البيانات الخارجية، عبر الدمج بين سجل أحداث نصي مضاف فقط (Append-Only JSONL) وإشعارات نظام الملفات في نواة نظام التشغيل.
2. مخطط السجل المضاف فقط (task_bus.jsonl) وقانون البيان
يمثل ملف task_bus.jsonl المصدر الوحيد للحقيقة في تنسيق المهام وفق مواصفات JSON Lines ونمط تخزين الأحداث (Event Sourcing): يُمنع تعديل أي سطر موجود أو حذفه.
تستخدم أداة الكتابة الموحدة (kosucu/task_bus_yaz.py، الأسطر 156–184) مفاتيح JSON الفعلية التالية:
id(معرّف المهمة الإلزامي): مفتاح فريد تُربط به لواحق الحالة-ISLENIYORو-YANIT؛ وتمنع البوابة فيtask_bus_yaz.py:177تكرار المعرّف ذاته (selftest 9/9 OK).ts(الطابع الزمني التلقائي): يُولَّد تلقائياً بصيغة ISO-8601 (أول سجلtsبتاريخ2026-10-03T15:09يقع في السطر3، بينما تتوزع الـ97سطراً تاريخياً الخالية من حقلtsضمن الأسطر1–538).ajan(إلزامي) وhedef(اختياري): يُسجَّل الوكيل المُصدِر في مفتاحajanوالوجهة الاختيارية (--hedef) في مفتاحhedef(استُخدم مفتاحagentفي السجلات المبكرة قبل التوحيد).claim(البيان) ونسبة BEYAN الحية: تنص القاعدة المعمارية على بدء الادعاء بترويسةBEYAN:وشرط الدحض، غير أن أداةkosucu/task_bus_yaz.pyلا تحتوي على بوابة برمجية ترفض السطور الخالية منBEYAN:. وفي قياسreaper_denetci.py --beyan-oraniبتاريخ 19 أكتوبر 2026، بلغت نسبة السطور المبدوءة بـBEYAN:72.3%(422/584؛ العتبة المستهدفة≥80%، تصنيف Reaper:site-beyan-olcu = İDDİA).kanit_yolu(مسار الدليل الاختياري): يُمرَّر عبر الخيار--kanitويُحفظ في مفتاحkanit_yolu(أوkanitفي السجلات القديمة).
wc -l task_bus/task_bus.jsonl · 19 أكتوبر 2026): نما سجل task_bus.jsonl الحي من 1,630 حدثاً في اللقطة المرجعية و2,249 سطراً في لقطة 11:46 إلى 2,344 سطراً مضافاً في القياس الحي، مع تسجيل 0 حالة فقدان بيانات.
3. التوجيه الموجه بالأحداث على مستوى النواة: WatchPaths وصناديق الوارد
يرتكز العمود الثاني للبنية على مبدأ انعدام الاستقصاء الدوري (Zero-Polling). لا يحتوي أي وكيل على مؤقت يفحص السجل دورياً؛ بل يجري التوجيه عبر خط أنابيب حتمي من ثلاث مراحل:
- إسقاط فوري في صندوق الوارد: فور إضافة سطر عبر
task_bus_yaz.py—أو عند التقاط التغيير بواسطة خدمة المراقبة (com.ustakil.pano_izle) المعتمدة علىlaunchd WatchPaths—يُنشأ ملف مهمة مستقل (مثلgelen_gemini/pano_<ID>.md) داخل صندوق الوارد الخاص بالوكيل المستهدف. - التشغيل الآلي حسب الوسم: إذا تضمنت المهمة وسم تشغيل غير تفاعلي مثل
[AGY]أو[AGY:flash]، يقوم المراقب بتمريرها فوراً إلى المشغل غير التفاعلي (kosucu/agy_atim.shأوkosucu/vezir_atim.sh) دون انتظار تدخل بشري. أما المهام التي تتطلب جلسة متصفح مصادق عليها فتبقى في صندوق جلسة بيئة التطوير. - الأرشفة غير المدمرة: بمجرد قراءة المهمة، ينقلها الوكيل إلى مجلد
arsiv/دون حذفها؛ وبذلك يكون خلو صندوق الوارد دليلاً فورياً بتعقيد O(1) على عدم وجود مهام معلقة.
بفضل هذا التصميم، يبلغ استهلاك الرموز في أوقات السكون صفراً مطلقاً، بينما لا يتجاوز زمن الاستيقاظ عند ورود أمر جديد أجزاءً من الثانية.
4. القفل غير المتكرر للمهام، مشغلات Enkidu ومقاومة الانصياع
لضمان عدم تنفيذ المهمة الواحدة مرتين عند عمل عدة مشغلات بالتوازي، تلتزم كل مهمة بآلة حالة ثلاثية المراحل تضمن عدم التكرار (Idempotency):
- 1. إصدار الأمر: يكتب وكيل التنسيق سجل المهمة الأساسي.
- 2. القفل الذري (
<ID>-ISLENIYOR): قبل تعديل أي ملف، يسجل الوكيل المنفذ سطر قفل؛ فإذا رآه مشغل آخر يتوقف فوراً. - 3. ختم الاستجابة (
<ID>-YANIT): بعد نجاح التنفيذ واجتياز الاختبارات الذاتية، يُضاف سطر الاستجابة مرفقاً بحقلkanit_yolu، وتمنع البوابة فيtask_bus_yaz.py:177كتابة أي استجابة ثانية للمعرّف ذاته.
يتولى Enkidu (bot/olgular.json:O-005, O-006) فحص هذه البنية؛ ففي نطاق 21 مهمة تشغيلية، سجل 62 دورة ناجحة (61–62 OK) خلال 24 ساعة مع 0 حالة غير مقاسة، متتبعاً 2,017 سجلاً (16 منها بلا قارئ) و354 مكوناً (190 مؤقتاً و35 عملية نشطة و81 مرشحاً للأرشفة).
تفصيل الاختبارات الذاتية وبوابة الأوامر بشفافية كاملة: في سجل bot/olgular.json:O-001 (18 أكتوبر 2026)، من أصل 243 أداة مسجلة، اجتازت 174 أداة الاختبار الذاتي (بإجمالي 3,129 فحصاً في 101 ثانية)، في حين فشلت 16 أداة في الاختبار الذاتي (dustu: 16) وافتقرت 53 أداة إلى نقطة اختبار ذاتي (ozsinamasiz: 53)؛ وفي الفحص الحي بتاريخ 19 أكتوبر (reaper_denetci.py --selftest-karne) يُرصد 262 ملف بايثون و261 أداة (site-alet-sozlesmesi = AKSAK). وفي انضباط الأوامر، سجلت لقطة O-003 (18 أكتوبر) 29 أمراً بصفر تجاوز، بينما أظهر القياس الحي في 19 أكتوبر (reaper_denetci.py --dogrula-orani) وجود بوابة DOGRULA في 17 من أصل 21 أمراً (81.0%) وبقاء 4 أوامر دون بوابة DOGRULA (site-dogrula-kapisi = AKSAK).
وفي تجربة المقاومة المعرفية BENLİK-1013 (bot/olgular.json:O-007) على 18 حكماً (n = 162 تجربة): بلغت نسبة الانصياع لضغط السلطة المجردة 0/18، والانخداع بالأدلة المزيفة 0/18، وتحديث الحكم بالدليل الحقيقي 16/18 (88.9%).
5. بطاقة الأدلة والقياسات الحية (موثقة بالملف والسطر)
يوثق الجدول التالي جميع المقاييس المعمارية مباشرة من ملفات النظام الحية مع سمات data-kaynak:
| المكون / المعيار | القيمة الحية المقاسة | حالة التحقق / القاعدة | المصدر (ملف:حقل · تاريخ) |
|---|---|---|---|
سجل ناقل المهام (task_bus.jsonl) |
2,344 سطر حدث حي (لقطة 11:46: 2,249 · المرجع: 1,630) | إضافة فقط (Append-Only) · 0 كتابة فوقية · أول ts: 2026-10-03T15:09 (السطر 3؛ 97 سطراً ضمن 1–538 بلا ts) |
task_bus/task_bus.jsonl:1-2344 · 2026-10-19 |
| مخطط السجل ونسبة BEYAN الحية | نسبة BEYAN الحية: 72.3% (422/584 · الهدف ≥80%) |
المفاتيح: id, ts, ajan, claim + اختياري hedef, kanit_yolu · لا بوابة BEYAN ميكانيكية في task_bus_yaz.py (site-beyan-olcu = İDDİA) |
kosucu/task_bus_yaz.py:156-184 · reaper_denetci.py · 2026-10-19 |
| سجل الأدوات والاختبارات الذاتية (O-001 + حي) | 243 أداة: 174 ناجحة · 16 فاشلة · 53 دون اختبار · 3,129 اختباراً (101 ثانية) | الفحص الحي: 262 ملف بايثون، 261 أداة (site-alet-sozlesmesi = AKSAK) |
bot/olgular.json:O-001 · data/selftest_karne.jsonl · 2026-10-19 |
| مشغل Enkidu وجرد السجلات (O-005 / O-006) | 21 مهمة · 62 ناجحة (61–62) / 24 ساعة · 0 غير مقاس · 2,017 سجلاً · 354 مكوناً | 190 مؤقتاً · 35 عملية نشطة · 81 مرشح أرشفة · 16 سجلاً بلا قارئ | bot/olgular.json:87-125 · 2026-10-18 |
| انضباط بوابة الأوامر DOGRULA (O-003 + حي) | O-003 (18 أكتوبر): 29 أمراً / 0 بلا بوابة · القياس الحي (19 أكتوبر): 17/21 (81.0%) ببوابة DOGRULA، و4 أوامر بلا بوابة | حالة Reaper الحية: site-dogrula-kapisi = AKSAK |
bot/olgular.json:O-003 · reaper_denetci.py --dogrula-orani · 2026-10-19 |
| آلية التوجيه والقفل غير المتكرر | launchd WatchPaths (com.ustakil.pano_izle) · 0 استقصاء |
pano_izle_daemon.py --tek-tur · task_bus_yaz.py:177 (selftest 9/9) |
com.ustakil.pano_izle.plist · kosucu/task_bus_yaz.py:177 · 2026-10-19 |
| تجربة مقاومة الانصياع BENLİK-1013 (O-007) | n = 162 تجربة · 18 حكماً · 16/18 (88.9%) تحديث بالدليل الحقيقي | الانصياع للسلطة: 0/18 · الانخداع بدليل مزيف: 0/18 (Δskor = 0.0000) |
bot/olgular.json:127-147 · 2026-10-14 |
6. الأسئلة الشائعة (FAQ)
لماذا يُستخدم ملف JSONL مضاف فقط (task_bus.jsonl) بدلاً من قاعدة بيانات تقليدية لتنسيق الوكلاء؟
يوفر سجل JSON Lines المضاف فقط كتابة ذرية سريعة دون الحاجة إلى خادم قاعدة بيانات خارجي، ويتيح الفحص المباشر بأدوات git وPOSIX، كما يتكامل مع خدمة WatchPaths في نواة نظام التشغيل لإطلاق الأحداث عبر 2,344 حدثاً حياً (2,249 في لقطة 11:46؛ و1,630 في اللقطة المرجعية).
كيف تمنع بنية انعدام الاستقصاء (Zero-Polling) هدر الرموز الحاسوبية؟
لا يشغّل أي وكيل حلقات انتظار وفحص دوري. بدلاً من ذلك، تراقب خدمة launchd WatchPaths (com.ustakil.pano_izle) ملف السجل وتشغّل pano_izle_daemon.py --tek-tur لوضع مظروف مهمة في صندوق الوارد الخاص بالوكيل المستهدف وتشغيل agy_atim.sh أو vezir_atim.sh عند الطلب.
كيف يُمنع تنفيذ المهمة نفسها مرتين من قِبل مشغلات متوازية؟
يسجل المشغل الذي يتولى المهمة سطر قفل (<ID>-ISLENIYOR) قبل البدء، ثم يختم التنفيذ بسطر (<ID>-YANIT) مرتبط بمسار الدليل kanit_yolu؛ وترفض بوابة الكتابة في kosucu/task_bus_yaz.py:177 أي استجابة مكررة للمعرّف ذاته (selftest 9/9 OK).
ما الذي ينص عليه قانون البيان (BEYAN) وما نسبة الالتزام الحية؟
تنص القاعدة المعمارية على بدء كل ادعاء بترويسة BEYAN: وشرط الدحض، غير أن أداة task_bus_yaz.py لا تفرض بوابة رفض ميكانيكية لترويسة BEYAN: عند الكتابة. وفي قياس Reaper الحي بتاريخ 19 أكتوبر 2026 (reaper_denetci.py --beyan-orani)، يبدأ 72.3% (422/584؛ الهدف ≥80%، الحالة: İDDİA) من السجلات بترويسة BEYAN:. وفي بوابة الأوامر سجلت لقطة O-003 (18 أكتوبر) 29 أمراً بصفر تجاوز، بينما أظهر القياس الحي في 19 أكتوبر وجود بوابة DOGRULA في 17 من 21 أمراً (81.0%) و4 أوامر دون بوابة (AKSAK).
المصادر (Kaynaklar)
المواصفات التقنية الأولية والأبحاث الموثقة التي تستند إليها القياسات الهندسية في هذه الصفحة:
- JSON Lines (JSONL) Append-Only Structured Log Format Specification
- Event Sourcing Architectural Pattern Documentation
- Creating Launch Daemons and Agents — macOS launchd WatchPaths Technical Documentation
- AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation (arXiv:2308.08155)
- ChatDev: Communicative Agents for Software Development (arXiv:2307.07924)
- ReAct: Synergizing Reasoning and Acting in Language Models (arXiv:2210.03629)
دراسات تقنية ذات صلة: للتدقيق المستقل في مخرجات ناقل المهام، راجع البوابة العربية، والمدقق ريبير، والحكم المعزول عن السياق وبوابة الدحض، وبروتوكول تجميد هوية الوكيل، وبوابات QAJAN الميكانيكية الست.