
شنو هو Open Math Harness؟
Open Math Harness هو بيئة التشغيل مفتوحة المصدر اللي كاينة ورا Open Math OS. الجيل اللول ديالو، اللي تسمّى Nucleus، مكتوب بـ Rust وكيضمّ النواة، والخدمات، والوكلاء اللي كتستعملهم المنصّة.
هاد بيئة التشغيل مصمّمة باش تعاون فالبحث الرياضي التعاوني. تقدر تدعم وكلاء خدامين بنماذج مفتوحة الأوزان، والاستكشاف المتوازي للمسائل عبر Ultramath، والبحث على البراهين اللي كيتحقّق منها Lean، وذاكرة المشاريع، والأدوات، وموافقة الإنسان على العمليات المحمية.
الحدّ الحالي: بيئة التشغيل الكاملة كتحتاج لبيئة النشر ديال Open Math OS. المستودع يقدر يتبنى من المصدر وكيضمّ مثال صغير مستقل، ولكن مازال ما كيوفّرش بيئة محلية مستقلة للوكلاء التفاعليين، ولا Ultramath، ولا الذاكرة، ولا البحث على البراهين.
التصميم والخصائص الأساسية
العزل المبني على الصلاحيات
Open Math Harness كيستعمل نواة صغرى مبنية على الصلاحيات. كل عملية كتوصّل غير للصلاحيات اللي عطاها ليها التركيب ديالها، وأي عملية كتطلقها ما كتوصّلش لصلاحيات أكثر من اللي يقدر الأب يفوّضها. هاد الشي كينطبق على الوكلاء وعلى البرامج الأخرى حتى هي.
أجوبة النماذج، ونتائج الأدوات، وملفات المستودع، وأي نصوص أخرى كيتعاملو معاها على أنها مدخلات ما خاصش الوثوق فيها. النص ما يقدرش يمنح الصلاحيات، ولا يوافق على العمليات المحمية، ولا يحدّد واش البرهان صحيح. بيانات الولوج كتبقى عند مزوّدين عندهم صلاحيات محدودة بزاف، وما كتتعرضش للنماذج، ولا لسجلات المحادثات، ولا للسجلات.
الوكلاء وأدوات البحث
- الوكلاء ديال النماذج المفتوحة: الجلسات تقدر تستعمل نماذج مفتوحة الأوزان مع أجوبة متدفقة، وأدوات، ووكلاء فرعيين، وتاريخ محفوظ.
- Ultramath: وكلاء متعددين كيقلبو بشكل غير متزامن على مقاربات مختلفة لمسألة صعيبة، وكيشاركو النتائج، وكيقدمو تقارير لوكيل منسّق.
- البحث على البراهين: العمال كيقلبو ففروع شجرة ديال براهين Lean المحتملة. المرشح كينجح غير إلا تحقّق Lean منو مقابل العبارة الأصلية.
- أدوات المشروع: الوكلاء يقدرو يخدمو بملفات المستودع، وبالـ shell، وبأدوات الويب وPDF، وبمهارات المشروع، وخوادم MCP، والإضافات.
- تحكّم الإنسان: العمليات المحمية ككتسنى الموافقة، وسجلات الجلسات كيتفتشو على الأسرار قبل ما يتعرضو.
ذاكرة المشروع
الذاكرة كتتحافظ بشكل منفصل لكل مشروع. منين كتولي الجلسة هادئة، خدمة الذاكرة تقدر تستخرج المواد المفيدة من التاريخ ديالها وتجمع المعلومات المختارة فـ MEMORY.md. الجلسات اللاحقة كيتعطا ليها هاد الذاكرة كسياق وكتشير للمادة اللي استعملات.
الذاكرة كتوفّر السياق فقط. ما تقدرش تمنح الصلاحيات ولا تتجاوز التعليمات الحالية ديال المستخدم.
المتطلبات المسبقة
قبل ما تبني Open Math Harness، وجد بيئة Linux مدعومة فيها التبعيات التالية:
- Linux: Windows وmacOS ما مدعومينش كمضيفين أصليين لبيئة التشغيل.
- أدوات البناء الأصلية: نصّب مترجم C وlinker للتبعيات الأصلية.
- Rust عبر rustup: الملف
rust-toolchain.tomlديال المستودع كيثبّت سلسلة الأدوات المطلوبة وكيضم مكوّنات التنسيق وفحص الشيفرة. - bubblewrap: نصّب
bwrap، وحطّو فـPATH، وتأكد باللي المضيف كيسمح بـ user namespaces غير المميّزة.
العزل إجباري. إلا ما قدرش bubblewrap ينشئ sandbox بسبب سياسة الأمان ديال المضيف، بيئة التشغيل غادي تفشل وقت الإقلاع.
بناء Open Math Harness من المصدر
نسخ المستودع، دخل للمجلد ديالو، وبني مساحة العمل الكاملة ديال Rust:
git clone https://github.com/openmathmodel/open-math-harness.git
cd open-math-harness
cargo build --locked --workspaceالخيار --locked كيخلّي Cargo يستعمل إصدارات التبعيات المسجّلة فملف القفل. من بعد بناء ناجح، ملفات التشغيل الثنائية ديال المشغّل والخدمات كتكون فـ target/debug/.
الملفات اللي فـ
deploy/vm/موجّهة للآلة الافتراضية المُدارة ديال Open Math OS. ماشي مُثبّت مستقل للحاسوب الشخصي.
تشغيل مثال الشريحة المستقل
المستودع فيه مثال مبرمج تحت examples/slice/. كيشغّل وكيل، وعامل، وخدمة ديال نظام الملفات باش يبيّن فحوصات الصلاحيات والتفويض.
هاد المثال ما كيتاصلش بمزوّد نموذج وما كيحتاجش لبيانات ولوج النموذج ولا لنشر Open Math OS. وما كيشغّلش الدردشة التفاعلية، ولا Ultramath، ولا الذاكرة، ولا البحث على البراهين. مع ذلك، Linux وbubblewrap خدام بالعزل الوظيفي مازال مطلوبين.
الخطوة 1: شغّل المثال
من جذر المستودع، نفّذ:
cargo run --locked --manifest-path cli/Cargo.toml -- run examples/slice/config.jsonالخطوة 2: فهم العرض
أثناء التشغيل، الوكيل المبرمج كيدير ثلاثة أنواع مهمّة من الأنشطة:
- كيقرا الملفات اللي الصلاحيات الممنوحة ليه كتسمح ليه يوصل ليها.
- كيفوّض للعامل ديالو الولوج لمجلد أصغر.
- كيحاول يدير عمليات كتترفض من طرف النواة حيث كتفوت الصلاحيات ديالو.
هاد الشي كيخلّي مثال الشريحة عرض مختصر للقاعدة المركزية ديال المشروع: العملية تقدر تستعمل وتفوّض غير الصلاحيات اللي عندها فعلاً.
الخطوة 3: فحص النتائج
من بعد التشغيل، فحص سجلات الوكيل والعامل:
examples/slice/out/agent/transcript.jsonl
examples/slice/out/agent/worker/transcript.jsonlخدمة نظام الملفات كتسجّل بوحدها النداءات اللي كتوصلها:
examples/slice/log/access.jsonlالمثال كينشئ حتى هاد التقرير:
examples/slice/data/work/report.txtقارن بين السجلات النصية وسجل الولوج للنظام ديال الملفات باش تشوف شنو هي العمليات اللي تطلبات، تفوضات، تقبلات، ولا ترفضات.
عاود شغّل المثال
الملف المولّد report.txt كيأثر على التشغيلات المتكررة. حيدو قبل ما تعاود تشغّل المثال إلا بغيتي إنشاء التقرير ينجح من جديد:
rm examples/slice/data/work/report.txt
cargo run --locked --manifest-path cli/Cargo.toml -- run examples/slice/config.jsonالاحتفاظ بالملفات القديمة ديال السجلات النصية وسجلات الولوج يقدر يبقى مفيد ملي كتقارن السلوك بين التشغيلات، لذلك راجع مجلدات الإخراج قبل ما تحيد ملفات أخرى.
شغّل مجموعة الاختبارات
من بعد ما تبني مساحة العمل، شغّل اختبارات Rust الافتراضية من جذر المستودع:
cargo test --workspaceمجموعة الاختبارات الافتراضية ما كتحتاجش لواجهات نماذج مؤدى عليها ولا لبيانات اعتماد ديال الإنتاج. بعض اختبارات التكامل كتشغّل عمليات فرعية حقيقية وكتستعمل bubblewrap، لذلك نفس متطلبات العزل على Linux كتبقى مطبقة.
الاختبارات اللي كتحتاج مزودين خارجيين للنماذج ولا تثبيت Lean مفعّلة بشكل صريح وما كتخدمش إلا بالاختيار. حتى سير العمل ديال CI فالمستودع كيحدد اختبارات التنسيق، وClippy، وأدوات Python، وتكامل MCP مع Node.js.
الاستعمال المتقدم ونصائح التطوير
استعمل السجلات باش تدرس حدود الصلاحيات
مثال slice كيكون مفيد بزاف ملي كتتعامل مع ملفات JSON Lines ديالو كسجل للتدقيق. راجع سجل الوكيل، وسجل العامل، وسجل الولوج للنظام ديال الملفات مجموعين. هاد الشي كيبين كيفاش الولوج المفوّض كيولي أضيق، وكيفاش النواة كترفض العمليات اللي كيتجاوزو الصلاحيات المعيّنة.
خلّي متطلبات النشر منفصلة
بناء مساحة العمل ما كينتجش أوتوماتيكيا تثبيت محلي كامل ديال Open Math OS. الوكلاء التفاعليين كيحتاجو كذلك إعداد الخدمات، وبيانات اعتماد مزود النموذج، وعميل. والبحث على البرهان كيحتاج حتى هو بيئة Lean وMathlib مهيّأة.
تجنّب التعامل مع إعدادات الآلة الافتراضية المُدارة فـ deploy/vm/ على أنها سكريبت تثبيت عام للاستعمالات المختلفة. المستودع كيوثّق حاليا مثال slice على أنه العرض المحلي الذاتي المكتفي والمدعوم.
حافظ على حلّ Cargo القابل لإعادة الإنتاج
استعمل --locked مع أوامر البناء والتشغيل الموثّقة. هاد الشي كيخلي حلّ الاعتماديات متوافق مع ملف القفل ديال المستودع وكيقلّل الاختلافات غير المتوقعة بين البيئات.
تحقّق من العزل بكري
إلا فشل التشغيل عند البداية، تفقد bubblewrap قبل ما تبدا تصحح مشاكل الخدمات ذات المستوى الأعلى. تأكد بلي bwrap كاين فـ PATH وبلي سياسة أمان المضيف كتسمح بمساحات أسماء المستخدمين غير المميّزة. وقت التشغيل ما كيكملش عمدا بلا العزل الضروري ديالو.
فهم حدود التحقق من البراهين
فالبنية الكاملة، ثقة الوكيل ما كتثبتش بلي شي نظرية تبرهنات. البراهين المرشحة كتتقيّم فمساحات عمل معزولة وبآجال محددة، وLean هي اللي كتحدد واش دازو. سجلات البحث كتحافظ على العمل المرشح باش الجولات اللاحقة تقدر تكمل من الفروع السابقة.
تبع اختبارات المساهمة
قبل ما تقترح تغييرات، راجع CONTRIBUTING.md وسير العمل ديال CI فالمستودع. دليل المساهمة كيشرح الاختبارات، ومراجعة الذكاء الاصطناعي، والمعلومات المطلوبة فطلبات الدمج.
الخلاصة
Open Math Harness كيوفّر الأساس ديال وقت التشغيل الموجّه للأمان لـ Open Math OS. رغم أن البيئة التفاعلية الكاملة مازال ما ولاتش متاحة كتجهيز محلي مستقل، تقدر تبني مساحة عمل Nucleus، وتشغّل مثال slice الذاتي المكتفي، وتفحص فرض الصلاحيات، وتنّفذ الاختبارات الافتراضية. هاد الخطوات كتعطي مقدمة عملية للمبدأ الأساسي ديال وقت التشغيل: الوكلاء كيقتارحو وكيخدمو داخل صلاحيات واضحة، بينما الناس والمتحققين الموثوقين كيبقاو محتافظين بالتحكم.
