مرحلة التكرار السريع · قد تتغير الواجهات والوثائق
Liri Liri سجل التطوير
العودة إلى الرئيسية
AR
BUILD LOG

طريق لم يكتمل بعد

من v0.1 إلى v0.5.22 — 156 يوماً و116 إصداراً. ما هنا ليس قائمة ميزات، بل الأخطاء التي وقعنا فيها، والقواعد التي اكتسبناها، والفراغات التي لم نملأها بعد.

156 يوماً
منذ أول إصدار
116
إصداراً
9
لقطات بنية
20+
فحص بنية

لقطة بيانات 2026-11-01 · الأرقام جمعها sync-facts وhealth:arch من مستودع Liri الرئيسي

انتقل إلى الخط الزمني

النشأة

في 25 مايو 2026 صدر أول إصدار من Liri باسم v0.1: 100 التزام فعلي ومساعد ذكاء اصطناعي طرفي قادر على العمل.

كانت المشكلة محددة — أن يجلس النموذج فعلاً داخل الطرفية، يقرأ الملفات ويشغّل الأوامر ويعدّل الكود، بدل المحادثة داخل مربع نص في صفحة ويب. اخترنا النماذج المحلية أولاً لأن الملفات الخاصة يجب ألا تُرسَل إلى خوادم غيرك؛ واخترنا «الأمان المدمج» لأنه يحصل على جهاز حقيقي، لا على API فقط.

خلال الأشهر الثلاثة التالية أُضيفت الإمكانات طبقة طبقة: الأدوات، و27 قناة مراسلة، وعميل سطح المكتب، والصوت، وقاعدة المعرفة. وبحلول أغسطس كان في المستودع أكثر من 4,000 ملف.

وهنا أيضاً ظهرت المشكلة واضحة أول مرة. في مراجعة الكود بتاريخ 18 يونيو 2026: LocalHTTPService بـ7,200 سطر، وChatManager بـ3,263 سطراً، و150 ملف اختبار مقابل 3,742 ملف مصدر. وبعد شهرين جاء أول تقييم لصحة البنية: 10/40، درجة D، مع 105 ملفات متجاوزة الحد جميعها غير مسجلة.

وقتها أدركنا: قدرة مشروع على أن يتناوله غيرك لا تحددها كثرة ميزاته، بل القواعد التي ينموها بعد أن يتعثر.

خمس نقاط تحول

مرتبة بحسب السبب لا التقويم — بعض الفترات متداخلة.

2026-05-25 → 2026-08

الإمكانات أولاً، والحدود لاحقاً

الوضع
كان v0.1 بـ100 التزام؛ الإطلاق أهم من البنية.
القرار
املأ الإمكانات أولاً: الأدوات، القنوات، سطح المكتب، الصوت، المعرفة — واحداً بعد الآخر.
التكلفة
أول تدقيق كان قبيحاً: LocalHTTPService بـ7,200 سطر، وChatManager بـ3,263، ونسبة الاختبارات إلى المصدر نحو 4%، وأول تقييم لصحة البنية 10/40 (D) مع 105 ملفات متجاوزة الحد غير مسجلة.
النتيجة
أكثر من 4,000 ملف، و69 أداة، و27 قناة، و429 مكوّن سطح مكتب.

↳ مسارات المشاركة — تريد إضافة إمكانية جديدة؟ ابدأ وحدة تحت app/src، لا داخل النواة.

2026-08-09 → 2026-09-30

أن نتعلّم قياس أنفسنا

الوضع
الجميع كان يشعر بالمشكلة، لكن لا أحد يستطيع قول «بكم هي سيئة».
القرار
حوّل جودة البنية إلى تقييم قابل للتكرار مع سجل (architecture-health)، وألزم تسجيل كل ملف متجاوز الحد؛ وتخلّينا عن افتراض أن النظافة تصمد بالانضباط وحده.
التكلفة
التسجيل ليس تقسيمًا: فقد نما ChatManager من 3,263 إلى 7,036 سطراً (وقُسِّم منذ ذلك الحين إلى 2,570). ومعايير التقييم نفسها كانت تتغير، لذا فهي فحص صحي لا مؤشر أداء.
النتيجة
تسع لقطات؛ والملفات المتجاوزة غير المسجلة انتقلت من 105 إلى 0 (ثم عادت إلى 2)؛ والقائمة صارت سجلاً قابلاً للتتبع.

↳ مسارات المشاركة — تبنَّ ملفاً متجاوز الحد لتقسيمه (انظر طرق المساعدة أدناه).

2026-10-08 → 10-09

حذف خاطئ واحد اشترى لنا عملية حذف

الوضع
تراكم في الكود سطح يبدو ميتاً بلا استخدام. اعتبر تنظيف v0.4.69 نظام البيئة المعزولة والعزل كوداً ميتاً: 170 ملفاً متأثراً، +9,340 / −10,174 سطراً.
القرار
في اليوم التالي تراجعت v0.4.71 عن الأمر كله — أُعيد 24 ملفاً (IsolationManager وEnhancedSandboxManager وPTYSandbox وSSHSandbox وdocker/** وغيرها، مع 5 مجموعات اختبار) وأُعيدت 21 ملفاً حياً إلى حاله.
التكلفة
الحذف الآن يستغرق وقتاً أطول: تكتب الدليل أولاً. لكنه أرخص من التراجع.
النتيجة
حوّلت v0.4.72 الحذف إلى عملية موثقة، code-deletion.md (CD01–CD07): اجمع الدليل، ثم افصل نقاط الدخول، ثم احذف. ولم يعد «يبدو أن لا أحد يستخدمه» سبباً.

↳ مسارات المشاركة — راجع «مرشح كود ميت» واحداً وفق CD01–CD07.

2026-10-10 → 10-22

أن نحوّل القواعد إلى بوابات

الوضع
كانت القواعد في الوثائق وتُترك للانضباط؛ فبدأت الوثائق والكود ينزلقان.
القرار
صار كل شيء بوابة توقف CI لا نصيحة: خمس بوابات مع doc-gate ومهمة sandbox-negative إلزامية؛ و413 مفتاحاً في أساس التثبيت؛ ومفردات حالة من 34 قيمة بـ1,795 زوجاً مرجعياً؛ وبوابات لواجهة الإقلاع والوحدات الحرجة وسطح النواة.
التكلفة
ثوانٍ إضافية في كل التزام، ويجب إعادة توليد الأساس مع كل تغيير في المفردات — والمقصود بالتحديد ألا تنزلق التعريفات صامتة.
النتيجة
مخالفات lint:arch صفر؛ والاختبارات نمت من 3,029 إلى 7,488.

↳ مسارات المشاركة — شغّل البوابات محلياً (bun run ci) قبل الدفع — وأصلح ما يظهر بالأحمر.

2026-10-05 → 10-28

تقليص النواة: من 5,336 سطراً إلى حزمة مستقلة

الوضع
كان core مدخل التنفيذ وساحة الجميع المشتركة — يستطيع أي أحد الإضافة إليه.
القرار
ثلاث خطوات: التقليص (CoreAPIImpl من 5,336 إلى 2,521 سطراً)، ثم الاستخراج (@openliri/kernel حزمة مستقلة، وcore من 146 إلى 113 ملفاً مع بوابات K01–K08)، ثم الإخراج (37 وحدة لا تحقق «صفر إدخال/إخراج / صفر اعتماد صاعد» نُقلت إلى app/src، مع تحديث أكثر من 470 استيراداً وإعادة توليد خمس عائلات من الأساس).
التكلفة
ترحيل واحد كبير وإعادة توليد كامل للأساس؛ ومنذ 18 أكتوبر تُدمج الأعمال على دفعات، وكثافة الالتزامات خُفِّضت قصداً.
النتيجة
لم يعد للنواة سوى واجهة رقيقة؛ وللمساهمات الخارجية حد واضح أول مرة.
الدليل CHANGELOG v0.5.22

↳ مسارات المشاركة — الإمكانات الجديدة تعيش خارج حدود النواة وتبدأ في app/src.

البنية: طبقات كأنها نظام تشغيل

لم تُخترع البنية من الصفر. النواة الرقيقة، وحدود الأنظمة الفرعية، واتجاه اعتماد واحد، والبوابات، وقابلية المراقبة — كلها من عقود من ممارسة أنظمة التشغيل؛ كما تتقارب أدلة أنماط التصميم والهندسة المنشورة للوكلاء في العامين الماضيين على الأسئلة نفسها: الطبقات والحدود والحالة والحوكمة والتقييم. نلزم أنفسنا بالطريقة الأولى، وندقّق أنفسنا بقائمة الثانية.

مفهوم نظام التشغيل → موقع Liri

المفهوم المقابل في Liri الحالة
النواة @openliri/kernel حزمة مستقلة تعرض واجهة رقيقة فقط، تحرسها بوابات K01–K08 مطبَّق
الأنظمة الفرعية الأدوات / القنوات / الذاكرة / التوجيه / البيئة المعزولة / المهام / الصوت / سطح المكتب، لكل منها نقاط دخول وحدود قيد التقارب
المشغلات محوّلات المزودين ومحوّلات القنوات و6 واجهات خلفية للعزل (Landlock / Docker / SSH / PTY / macOS / Windows) مطبَّق
العمليات والجدولة تنفيذ الجلسات، PDCA، Swarm، Cron مطبَّق
نموذج الأذونات خمس طبقات دفاع + أربع مراحل موافقة (requested → presented → decided → recorded) بانتظار تدقيق خارجي
المراقبة والتدقيق سجل الأحداث، دفتر التكلفة، سجل الأدلة مطبَّق
المشرفون (MAINTAINERS) لم يُنشأ بعد: لا مالكين للأنظمة الفرعية ولا مسار تسليم فراغ

ما قارنّا أنفسنا به

قارنّا أنفسنا بنداً بنداً مع أنماط تصميم الوكلاء وأدلة الهندسة المنشورة علناً: كل الأنماط الـ21 لها تنفيذ حقيقي، لكن 3 مفاتيح رئيسية مطفأة افتراضياً — لذلك نقول «منفَّذ» ولا نقول «يعمل افتراضياً». وحلقة الهندسة تُدقَّق بالطريقة نفسها: البنية، البناء، التشغيل، الحوكمة، الضبط.

ثلاث فجوات

مشرفو الأنظمة الفرعية

بلا مالكين لا يوجد مسار تسليم. هذا أقرب جزء لنظام التشغيل، وهو ما ينقصنا.

عقود الأنظمة الفرعية

تصميم العقد موجود، لكن تنفيذ السجل / LoopProfile غير مُتحقَّق منه — ووعد استقرار الواجهة لم يُثبَّت بعد.

بوابة التغطية

نحو 4% وقت المراجعة؛ وCI يشغّل أكثر من 20 فحص بنية، لكن لا توجد عتبة تغطية بعد.

بصراحة: صحة البنية ما زالت D (10/40)؛ ومن 142 ملفاً متجاوز الحد ما زال 141 غير مسجل، وأكبرها ما يزال في وحدة chat (ChatManager قُسِّم من 7,036 إلى 2,570 سطراً). النواة موجودة، والحدود تتقارب، ونظام المشرفين لم يوجد بعد — وهذا معنى «لم يكتمل».

اعرض الطبقات الوظيفية الثماني الحالية

البنية في لمحة

ثماني طبقات وظيفية من نقطة الدخول إلى التغذية الراجعة؛ وتُفرض هندسياً بست بوابات اعتماد (entry > ui > app > service > infra > core)

L1

طبقة الدخول متعدد الوسائط

طرفية REPL
واجهة طرفية مبنية بـ React + Ink، مع نظام الرفيق Buddy مدمج
عميل Tauri لسطح المكتب
429 مكوّن TSX في 32 صفحة وظيفية (Tauri 2.11 + React 19)
بوابة MCP / القنوات
MCP Server مع 27 قناة مراسلة (WeChat وDingTalk وFeishu وTelegram وغيرها)
CLI / HTTP API
ثلاثة ملفات تنفيذية — Liri / liri-memory / liri-ink — إضافة إلى HTTP API
L2

طبقة الأمان الأولى

تحليل Rust AST وقت الترجمة
تحلّل طبقة FFI شجرة Bash AST وفق 37 قاعدة للأوامر الخطرة
تحليل TypeScript الدلالي
تُحكم الأوامر المركبة للقراءة فقط مقطعاً بمقطع، مع أسباب رفض قابلة للإسناد
محرك قواعد Guardrail
14 نمط حقن + 10 قاعدة خاصة بـ Shell
مصنّف AutoMode
يقيّم مخاطر المهمة تلقائياً ويقرر بين السماح والسؤال والرفض
L3

طبقة التوجيه الذكي

اكتشاف 19 نوع مهمة
البرمجة والكتابة والتحليل والأدوات والترجمة والبحث والأفكار والدردشة وغيرها
4 مستويات
simple / medium / complex / reasoning
خط قرار من 5 مراحل
مفتاح → مسار سريع → التصاق الجلسة → حكم LLM → تحديد المستوى
FallbackChain
تبديل مرتب عند تعذر المزود الأساسي، مقترن بـ RetryPolicy
L4

طبقة حقن الدماغ الثاني

قاعدة المعرفة
Markdown على القرص مع فهرسة دلالية، واسترجاع هجين بالكلمات المفتاحية / المتجهات / RRF
نظام الذاكرة
ذاكرة متعددة الطبقات مع جدول متجهات SQLite واسترجاع مرجّح بالصلة
أحداث الجلسة
events.jsonl للإضافة فقط — قابلة للإعادة والتدقيق
DreamEngine
ينظّم المعرفة في وقت الخمول: جمع → تحليل → توليد → كتابة → فهرسة
L5

حلقة قرار TAOR

Think
4 استراتيجيات وكيل: عام / برمجة / استكشاف / تخطيط
Act
69 أداة مدمجة تُسجَّل ديناميكياً حسب نسخة البناء
Observe
تقييم النتائج مع نوافذ سياق متعددة الطبقات وضغط تلقائي
Reason
إدارة ميزانية الرموز + استئناف من نقاط التفتيش + قطع الدائرة لكل جولة
L6

طبقة التنفيذ المعزول

Linux Landlock
قيود على الوصول إلى نظام الملفات على مستوى النواة
macOS / Windows
بيئات معزولة للنظام مع Low IL / كائن Job كخط احتياطي
حاوية Docker
عزل كامل للحاوية مع حدود للموارد وسياسات شبكة
SSH / PTY
بيئات تنفيذ بعيدة نظيفة ومسارات طرفية زائفة مُتحكَّم بها
L7

طبقة المهام الطويلة

خط PDCA
حلقة Plan-Do-Check-Act تتقدم بحسب وجود النواتج الفعلية
Swarm متعدد الوكلاء
AgentSwarm مع تنسيق شوريّ واكتشاف ديناميكي عبر سجل
جدولة Cron
تعبيرات once / interval / cron مع المناطق الزمنية
استمرارية المهام
لقطات الجلسة + الاستئناف من نقاط التوقف + عدّ تنازلي مرئي أثناء الانتظار
L8

طبقة التغذية الراجعة والتطور

استخلاص أنماط الفشل
تُعمَّم أنماط الفشل وتُعاد إلى التعليمات والمهارات، فتغلق حلقة التحسين
دفتر التكلفة
تُحتسب وفق جدول الأسعار في قاعدة البيانات، ويُسجَّل اسم النموذج الحقيقي الذي يعيده المزود
بوابات التقييم
مجموعات أساس مدمجة + قياس موثوقية pass^k + قياس أمني مزدوج
إعادة الأحداث
يمكن إعادة بناء سياق كل استدعاء نموذج بعد وقوعه

فلسفة البنية

🛡️
أمان مدمج
الأمان ليس إضافة — إنه حمض نووي في كل طبقة
🏠
محلي أولاً
البيانات محلية، والعمل ممكن دون اتصال، والخصوصية محمية افتراضياً
🧠
توجيه ذكي
19 فئة مهام تُطابق مع مستوى النموذج المناسب
🧬
الدماغ الثاني
قاعدة معرفة وذاكرة وسجلات أحداث: ثلاث طبقات سياق قابلة للاسترجاع
🔄
حلقة قابلة للتحقق
الدروس المستخلصة من الإخفاقات تعود إلى الداخل، والبوابات تمنع الانحدار
🔌
تعدد وسائط موحّد
الطرفية وسطح المكتب والمراسلة وAPI تتشارك محركاً واحداً

الخط الزمني

قيد واحد شهرياً — تغييرات البنية والحوكمة فقط، دون الالتزامات العادية.

  1. 2026-05-25 v0.1: 100 التزام فعلي، والمساعد الطرفي يعمل
  2. 2026-06-18 أول مراجعة كود: ملف واحد بـ7,200 سطر، ونسبة اختبارات إلى مصدر نحو 4%
  3. 2026-08-09 أول تقييم لصحة البنية: 10/40 (D)، و105 ملفات متجاوزة الحد غير مسجلة
  4. 2026-10-09 حُذفت البيئة المعزولة خطأً في تنظيف → تراجع كامل؛ وفي اليوم التالي عملية الحذف CD01–CD07
  5. 2026-10-20 بوابة مفردات الحالة: 34 قيمة و1,795 زوجاً مرجعياً
  6. 2026-10-28 اكتمل إخراج النواة؛ والأدوات المرئية للنموذج حُصرت في 12 أداة و1,397 رمزاً
  7. 2026-10-28 موقع الوثائق ثنائي اللغة وهذا الموقع صارا متاحين

ستُضاف التحديثات الشهرية اللاحقة هنا.

طرق المساعدة

هذه الصفحة ليست تقرير ختام، بل دعوة. ثلاث فجوات، وكلها تحتاج أيدي.

قائمة التدقيق الأمني

  • قواعد الأوامر الخطرة: 37 قاعدة — أين تعيش وكيف تُطلَق؛ ابنِ حالة واحدة وتحقق أنها تلتقط القاعدة المتوقعة
  • قواعد حقن التعليمات: 14 قاعدة — أدخل وثيقة خبيثة وانظر هل تُوقف
  • قواعد Shell: 10 قوائم سماح / منع — جرّب مسارات التحايل (الأنابيب، الأصداف الفرعية، الترميز)
  • تراجع البيئة المعزولة: متى تتراجع كل واجهة من الست، وهل تفشل مغلقة بعد التراجع
  • مراحل الموافقة: requested → presented → decided → recorded — ابحث عن مرحلة ناقصة أو غير مرتبة
  • سطح التجاوز: هل يستطيع استدعاء أداة تجاوز مصنف الأذونات والكتابة أو التنفيذ مباشرة؟

نقاط الدخول: app/src/security، app/src/sandbox، app/src/permission.

أبلغ عن تفاصيل الثغرات بشكل خاص وفق SECURITY.md — لا تفتح issue عامة. الـ issues العامة مخصصة لعملية التدقيق ونطاق التغطية فقط.

تفضّل الدعم المالي؟ اطّلع على صفحة الرعاية