Skip to content

Latest commit

 

History

History
200 lines (161 loc) · 11.8 KB

File metadata and controls

200 lines (161 loc) · 11.8 KB

بنية ARK

مبادئ التصميم

الفكرة الأساسية: ثق بحكم الذكاء الاصطناعي؛ الكود يتولى التنفيذ والحواجز الوقائية فقط.

  • قاعدة البيانات كمصدر وحيد للحقيقة — إعدادات وحالة المشروع في SQLite؛ YAML للحالة التشغيلية للوكلاء فقط
  • عزل لكل مشروع — كل مشروع يحصل على بيئة conda خاصة، HOME معزول، و PYTHONNOUSERSITE=1
  • المهارات بدلاً من القواعد المُبرمجة — مجموعات تعليمات نمطية (skills) تُحمّل أثناء التشغيل لفرض أفضل الممارسات

نظرة عامة على خط الأنابيب

يمرّ ARK بثلاث مراحل متتابعة:

┌─────────────────────────────────────────────────────────────────┐
│                        ARK Pipeline                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  المرحلة ١: Research (٤ خطوات)                                  │
│  ┌──────────────┐  ┌─────────────┐  ┌─────────┐  ┌──────────┐ │
│  │Deep Research  │─▶│  المُهيّئ    │─▶│ المخطط  │─▶│ المُجرِّب │ │
│  │(Gemini)       │  │(تمهيد)      │  │(تخطيط)  │  │(تشغيل)  │ │
│  └──────────────┘  └─────────────┘  └─────────┘  └──────────┘ │
│                                                                 │
│  المرحلة ٢: Dev                                                 │
│  ┌───────────────────────────────────────────────────────┐     │
│  │  تخطيط → تجارب Slurm → تحليل → كتابة مسودة           │     │
│  └───────────────────────────────────────────────────────┘     │
│                                                                 │
│  المرحلة ٣: Review (حلقة تكرارية)                               │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │ تجميع    │─▶│ مراجعة   │─▶│ المخطط   │─▶│ تنفيذ    │──┐   │
│  │ LaTeX    │  │ تقييم    │  │ قرار     │  │ تشغيل    │  │   │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘  │   │
│       ▲                                                   │   │
│       └──── تحقّق ◀───────────────────────────────────────┘   │
│             (إعادة تجميع)                                      │
│                                                                 │
│  تكرار حتى الدرجة ≥ العتبة أو تدخل بشري                       │
└─────────────────────────────────────────────────────────────────┘

مرحلة Research (خط أنابيب من ٤ خطوات)

الخطوة الوكيل ما يحدث
١ Deep Research مسح أدبي بواسطة Gemini، جمع المعرفة الخلفية
٢ المُهيّئ تمهيد بيئة conda، تثبيت المهارات المدمجة، تحضير الاستشهادات
٣ المخطط توليد خطة بحث أولية من نتائج المسح
٤ المُجرِّب تشغيل الجولة الأولى من التجارب بناءً على الخطة

حلقة المراجعة

كل تكرار يمرّ بـ ٥ خطوات: تجميع → مراجعة → تخطيط → تنفيذ → تحقّق.

المخطط يُخرج خطط عمل منظّمة بصيغة YAML:

actions:
  - agent: experimenter
    task: "تشغيل تجربة التحقق من الحيرة"
    priority: 1
  - agent: writer
    task: "تحديث القسم ٤.٢"
    priority: 2

المكونات الأساسية

١. نظام الذاكرة (memory.py)

يتتبع الدرجات، يكتشف الركود، ويمنع الإخفاقات المتكررة:

class SimpleMemory:
    scores: List[float]       # سجل الدرجات (آخر ٢٠)
    best_score: float         # أعلى درجة تاريخية
    stagnation_count: int     # عدد مرات الركود المتتالية

    def record_score(score)   # تسجيل درجة
    def is_stagnating()       # كشف الركود
    def get_context()         # الحصول على السياق (مرساة الهدف + اتجاه الدرجات)

ميزات إضافية:

  • تتبع المشكلات: إزالة التكرار بناءً على المحتوى — يحصي عدد مرات ظهور كل مشكلة عبر التكرارات
  • التحقق من الإصلاح: يتأكد أن الإصلاحات المُجرّبة حلّت المشكلة فعلاً
  • تصعيد الاستراتيجية: يحظر الأساليب غير الفعالة تلقائياً ويقترح بدائل
  • التصحيح الفوقي: يُشغّل التشخيص عند توقف النظام

٢. مرساة الهدف

كل استدعاء لوكيل يتضمن "مرساة هدف" ثابتة تصف الأهداف الجوهرية للمشروع. هذا يمنع الوكلاء من الانحراف عن الموضوع عبر التكرارات المتعددة.

٣. المُنسّق (orchestrator.py)

تصميم قائم على Mixin مع ٥ مزيجات:

class Orchestrator(ResearchMixin, DevMixin, ReviewMixin, FigureMixin, BaseMixin):
    # يوزّع على المرحلة الصحيحة بناءً على الوضع
    # يزامن الحالة مع قاعدة البيانات بعد كل خطوة
    # يتعامل مع إشعارات Telegram

٤. نظام المهارات (skills/)

مجموعات تعليمات نمطية تُحمّل أثناء التشغيل:

المهارة الغرض
research-integrity مضاد للمحاكاة: الوكلاء يجب أن يُجروا تجارب حقيقية
human-intervention بروتوكول التصعيد عبر Telegram
env-isolation حدود بيئة لكل مشروع
figure-integrity التحقق من تطابق الأشكال مع البيانات الفعلية
page-adjustment التحكم في كثافة المحتوى ضمن حدود الصفحات

تُثبّت المهارات تلقائياً أثناء مرحلة التمهيد (Research المرحلة ٢).

٥. عزل البيئات (webapp/jobs.py)

كل مشروع يحصل على بيئة conda معزولة:

  • provision_project_env() يستنسخ البيئة الأساسية إلى <project>/.env/
  • project_env_ready() يتحقق من وجود البيئة
  • المُنسّق يعمل بـ HOME=<project_dir>, PYTHONNOUSERSITE=1
  • كل من CLI (ark run) وبوابة الويب يكتشفان ويستخدمان بيئة المشروع تلقائياً

٦. إدارة الحالة (webapp/db.py)

SQLite هو المصدر الوحيد للحقيقة لإعدادات وحالة المشروع:

  • إنشاء المشروع، الإعدادات، حالة المرحلة
  • سجل الدرجات، تتبع التكلفة
  • CLI و webapp يقرآن ويكتبان في نفس قاعدة البيانات
  • ملفات YAML تحت auto_research/state/ للحالة التشغيلية للوكلاء فقط

قائمة الوكلاء (٩ وكلاء)

الوكيل الدور
المُهيّئ تمهيد المشروع: بيئة conda، المهارات، الاستشهادات
المراجع مراجعة وتقييم الورقة
المخطط تحليل المشكلات، توليد خطة عمل (وضع الورقة والتطوير)
المُجرِّب تصميم وتشغيل وتحليل التجارب
الباحث البحث الأدبي وتحليل نتائج التجارب
الكاتب كتابة/مراجعة أقسام الورقة
المُصوّر فحص وإصلاح جودة الأشكال/الجداول
المُصحّح الفوقي تشخيص على مستوى النظام
المُبرمج تنفيذ تغييرات الكود (وضع التطوير)

هيكل الملفات

ARK/
├── ark/
│   ├── orchestrator.py      # الحلقة الرئيسية (قائم على Mixin)
│   ├── pipeline.py          # خط أنابيب Research من ٤ خطوات
│   ├── memory.py            # تتبع الدرجات، إزالة تكرار المشكلات، كشف الركود
│   ├── agents.py            # استدعاء الوكلاء
│   ├── execution.py         # تنفيذ الوكلاء وحقن المهارات
│   ├── cli.py               # أوامر CLI (ark new/run/status/...)
│   ├── compiler.py          # تجميع LaTeX
│   ├── citation.py          # التحقق من الاستشهادات عبر DBLP/CrossRef
│   ├── deep_research.py     # تكامل Gemini Deep Research
│   ├── telegram.py          # إشعارات Telegram + التدخل البشري
│   ├── compute.py           # خلفيات الحوسبة Slurm/السحابة
│   ├── templates/agents/    # قوالب موجّهات الوكلاء
│   │   ├── initializer.prompt
│   │   ├── reviewer.prompt
│   │   ├── planner.prompt
│   │   ├── experimenter.prompt
│   │   ├── researcher.prompt
│   │   ├── writer.prompt
│   │   ├── visualizer.prompt
│   │   └── coder.prompt
│   └── webapp/
│       ├── app.py           # تطبيق Flask
│       ├── db.py            # نماذج SQLite + إدارة الحالة
│       ├── jobs.py          # إطلاق المهام، توفير بيئة conda
│       ├── routes.py        # مسارات API + SSE
│       └── static/app.html  # واجهة SPA
├── skills/
│   ├── index.json           # سجل المهارات
│   └── builtin/             # المهارات المدمجة
│       ├── research-integrity/
│       ├── human-intervention/
│       ├── env-isolation/
│       ├── figure-integrity/
│       └── page-adjustment/
├── venue_templates/         # قوالب LaTeX لكل مؤتمر
├── tests/                   # ١١٥ اختبار
└── projects/                # مجلدات المشاريع (gitignored)

مُهمل

  • events.py — نظام مدفوع بالأحداث (استُبدل بقرارات المخطط)
  • تتبع ذاكرة معقد (issues, effective_actions, failed_attempts) — تم تبسيطه