كيف يعمل
كيف يعمل RADAR.
نظرة تقنية عامة للمطوّرين. يشغّل RADAR وكلاء البرمجة، ولا يُغلق مهمةً إلا بعد أن يعيد بنفسه تشغيل اختبار القبول الخاص بها. قول الوكيل «تمّ» ادعاء؛ وإعادة التشغيل هي البرهان.
01 الحلقة
حلقة واحدة لكل مهمة.
تمرّ كل مهمة بالحلقة نفسها، ولا تُنفَّذ أي خطوة إلا إذا نجحت الخطوة التي قبلها.
- 01 · فتح المهمة واختبار القبول يُكتبان قبل بدء العمل
- 02 · حجز مالك واحد وworktree خاص به lease وfence token
- 03 · عمل الوكيل يعمل في نسخته الخاصة من المشروع
- 04 · ادعاء الوكيل يقول: تمّ يُسجَّل ادعاءً لا نتيجة
- 05 · تحقق يعيد RADAR تشغيل الاختبار على المراجعة الحالية
- إذا نجح مُغلقة يُحفظ البرهان في السجل
- إذا فشل · المحاولة n من 3 أُعيد فتحها، والفشل مرفق يحاول الوكيل نفسه مجددًا من الخطوة 03
- بعد 3 محاولات وكيل آخر يتولى المهمة حتى 3 محاولات أخرى، من الخطوة 03
- بعد 3 أخرى المهمة تنتظرك يرفض السجل أي محاولات إضافية
- الفتح
- تُفتح المهمة بهدفها وبأمر قبول قابل لإعادة التشغيل. يُفحص الأمر عند فتح المهمة دون تشغيله: المعيار الذي لا يمكن تشغيله كما كُتب يُرفض حينها، ولا يُكتشف في النهاية.
- الحجز
- يحمل المهمة مالك واحد في كل مرة، عبر lease وfence token. وأي كتابة من مالك انتهت صلاحيته تُرفض.
- العمل
- يعمل الوكيل في git worktree خاص به، على فرعه الخاص.
- الادعاء
- يُسجَّل تقرير الوكيل بأنه انتهى على أنه ادعاء. والادعاء لا يُغلق المهمة.
- التحقق
- يشغّل RADAR أمر القبول بنفسه، على المراجعة الحالية من العمل. يُقرأ تقرير الوكيل نفسه، لكنه ليس برهانًا.
- الإغلاق أو إعادة الفتح
- النجاح يسمح بإغلاق المهمة، ويُحفظ سجل التحقق برهانًا عليها. والفشل يعيد فتح المهمة مع إرفاق الفشل بها.
- الحدود
- ثلاث محاولات للعامل، ثم ثلاث محاولات يتولى فيها وكيل آخر المهمة. بعد ذلك يرفض السجل مزيدًا من المحاولات وتنتظرك المهمة. تغيير النموذج أو الجلسة أو الجهاز لا يُصفّر العدّاد، ويجب أن تذكر كل إعادة محاولة ما الذي تغيّر.
02 السجل
سجل واحد يكتب فيه كل وكيل.
يقرأ كل وكيل من سجل المهام نفسه ويكتب فيه: ملف SQLite محلي. إنه المرجع الوحيد لمن يحمل كل مهمة، وما الذي ادُّعي، وما الذي أظهره الاختبار.
- المهام
- الهدف وأمر القبول، مكتوبان قبل بدء العمل.
- الملكية
- المالك الحالي لكل مهمة، مع lease وfence token الخاصين بها.
- المحاولات
- تُحسب لكل مهمة، عبر الوكلاء والنماذج والأجهزة.
- الادعاءات
- تقرير الوكيل بأن العمل قد أُنجز، محفوظًا بمعزل عن النتائج.
- سجلات التحقق
- كل تشغيل لاختبار القبول، مربوطًا بالـ commit وشجرة العمل اللذين جرى عليهما.
- التغييرات
- يُسجَّل أي تغيير في أمر القبول بنسخته القديمة والجديدة؛ ويُسجَّل التجاوز (override) أيضًا.
الذاكرة
القرارات والدروس ملاحظات Markdown لكلٍّ منها مصدر ونطاق. يبحث فيها فهرس محلي دون اتصال، ويضع hook الملاحظات المطابقة أمام الوكيل قبل أن يتصرّف. ولأن الملاحظات Markdown عادي، يمكنك فتحها في Obsidian.
03 العزل
كل محاولة في نسختها الخاصة.
- تعمل كل محاولة في git worktree خاص بها، على فرعها الخاص. لا يتشارك عاملان الشجرة نفسها أبدًا.
- لا يستطيع العامل إعادة كتابة أمر القبول الخاص به. وحده المدير يمكنه تغييره، وقبل إغلاق المهمة فقط؛ ويحتفظ كل تغيير بالنسخة القديمة والجديدة.
- لا يصل العمل إلى فرعك الرئيسي إلا بعد نجاح التحقق، ويُشغَّل أمر القبول مرة أخرى بعد الدمج.
- يُرفض الـ force-push لكل الأدوار.
- تُنفَّذ هذه القواعد كشيفرة، قبل استدعاء النموذج وبعده. إنها ليست prompt، فلا يستطيع الوكيل أن يتجاوزها بالكلام.
04 الوكلاء
الوكلاء الذين تستخدمهم بالفعل.
يشغّل RADAR كلًّا من Claude Code وCodex CLI وOMP وHermes Agent، على حاسوبك أو على خوادم Linux خاصة بك. وهو لا يحلّ محلّها: فهي ما زالت تؤدي العمل.
- Claude Code
- Codex CLI
- OMP
- Hermes Agent
- عقد واحد
- القواعد نفسها، والسجل نفسه، وبوابة التحقق نفسها، وحدود المحاولات نفسها تنطبق على الأربعة كلها.
- المدير
- الوكيل الذي تتحدث إليه هو المدير: يفتح المهام، ويسلّمها إلى العمّال، ولا يُغلق مهمةً إلا بسجل تحقق ناجح.
- العمّال
- يؤدي العمّال العمل في worktrees خاصة بهم. لا يمكنهم إغلاق المهام ولا تغيير أمر القبول الخاص بها.
05 محلي أولًا
محلي أولًا.
لا يحتاج RADAR إلى حساب ولا إلى سحابة.
- على جهازك
- السجل، وملاحظات الذاكرة، وworktrees، وكل تشغيل للتحقق، على حاسوبك أو على خوادم Linux خاصة بك.
- يحتاج إلى شبكة
- وكلاؤك، الذين يتواصلون مع مزوّديهم كما يفعلون اليوم. أما كل خدمة خارجية أخرى فاختيارية ومعطّلة حتى تفعّلها.
- المتطلبات
- Windows أو Linux (macOS غير مدعوم بعد)، وPython 3.12 أو أحدث، وGit. يستخدم RADAR مكتبة Python القياسية فقط.
- التكلفة
- لا فاتورة خاصة به. يواصل الوكلاء استخدام الحسابات التي سجّلت دخولهم بها. ولا تُستخدم واجهة API مدفوعة إلا إذا حدّدت المزوّد والميزانية.
- التثبيت
- أعطِ وكيل البرمجة لديك رابط المستودع وقل له: «ثبّت هذا». يفحص حاسوبك، ويسألك قبل تثبيت أي شيء ناقص، ويثبّت RADAR في بيئة افتراضية، ويبلغك بما يقوله radar init وradar doctor.
06 الأوامر
قائمة قصيرة من الأوامر.
الأوامر التي ستستخدمها أولًا. العناصر النائبة بين قوسين زاويين.
| الأمر | ما يفعله |
|---|---|
radar init | يُهيّئ مجلد RADAR الرئيسي والسجل. |
radar doctor | يفحص التثبيت ويسرد أي خدمات اختيارية لم تُعدّ بعد. |
radar task new --project P --goal "…" --accept "<command>" | يفتح مهمة مع أمر القبول الخاص بها. |
radar dispatch <task> | يسلّم مهمة إلى وكيل يعمل في worktree خاص به. |
radar status | يعرض النظام بأكمله. |
radar verify <task> | يعيد تشغيل أمر القبول على المراجعة الحالية. |
radar task done <task> --evidence "<verification report>" | يُغلق مهمة. يُرفض حتى ينجح التحقق. |
radar collect | يجمع العمل المُنجز. |
radar integrate | يدمج العمل الذي تم التحقق منه في main. |
radar stop | يضع العمل جانبًا ويفعّل STOP. |
radar go | يرفع STOP ويعرض ما يمكن متابعته. |
radar memory search --local "<words>" | يبحث في ملاحظات الذاكرة دون اتصال. |
radar uiradar web | يفتح لوحة التحكم (cockpit) في الطرفية أو في المتصفح. |
radar help --all | يعرض كل الأوامر. ويعطي radar <command> -h التفاصيل. |
07 ما لا يفعله
ما لا يفعله RADAR.
- لا يحلّ محلّ وكلائك. فهم ما زالوا يكتبون الشيفرة؛ ويمنحهم RADAR سجلًا واحدًا، وفحصًا واحدًا لا يمكنهم تخطيه، وذاكرة واحدة.
- لا يكتب اختباراتك. الفحص لا يكون أفضل من اختباره؛ ويجعل RADAR الاختبار صريحًا قبل بدء العمل، ليتمكن شخص من قراءته.
- لا يُغلق عملًا بلا اختبار. المهمة التي ليس لها أمر قبول قابل للتشغيل تُرفض عند فتحها.
- لا يُبقي وكلاءك دون اتصال. فهم ما زالوا يتواصلون مع مزوّديهم، كما يفعلون اليوم.
- الإصدار المفتوح مخصّص للمطوّرين الأفراد، لا للفرق؛ وإصدار الشركات قيد التطوير.
08 الحالة
في مرحلة الوصول المبكر
وصول مبكر الآن. مفتوح المصدر عند الإطلاق العام.
RADAR في مرحلة الوصول المبكر. وسيُنشر مفتوح المصدر بترخيص Apache-2.0 عند الإطلاق العام. للانضمام، راسلنا.