
شنو هو Unreal Agent؟
Unreal Agent هو إطار لتشغيل الوكلاء، مصمم من الأول باش يخدم بشكل غير متزامن، وطوراتو Unreal Labs. كيوفر بنية قابلة للتركيب باش يستقبل المدخلات، ويحافظ على تاريخ الجلسة، ويوجد سياق النموذج، وينسق دورات LLM، ويحوّل استدعاءات الأدوات، ويوزع العمليات غير المتزامنة القابلة للاستمرار.
المشروع كيفصل بين التنسيق المتزامن والتنفيذ غير المتزامن. محوّلات الأدوات كيتحققو من الطلبات اللي كيولدها النموذج وكيخرجو أوصاف عمليات قابلة للتسلسل بلا ما يديرو أي عمليات إدخال وإخراج. من بعد، مدير العمليات كينفذ العمليات المؤكدة خارج حلقة الأحداث ديال المنسق.
بنية المستودع
المستودع منظم فثلاثة مجالات رئيسية:
harness/: مكتبة إطار الوكيل القابلة لإعادة الاستعمال.cmd/: الملفات التنفيذية المبنية باستعمال المكتبة.benchmarks/: مشغلات الاختبارات المعيارية لتقييم المشروع.
بدا بـ harness/ ملي تبغي تدمج الإطار فشي تطبيق آخر. راجع cmd/ باش تلقى نقاط الدخول الفعلية للملفات التنفيذية، واستعمل benchmarks/ ملي تحتاج تفحص ولا تقيس سلوك التشغيل.
المفاهيم الأساسية
المدخلات وصندوق الوارد
المدخل هو حدث فيه معرّف فريد عالميا كيوفره المستدعي. خاص هاد المعرّف يبقى بلا تغيير إلا تعاود توصل الحدث.
صندوق وارد الجلسة كيستعمل هاد المعرّفات باش يدير إزالة التكرار فذاكرة المدخلات الخارجية، ومدخلات التحكم، ومدخلات الأعطال. هاد الخاصية ديال التنفيذ مرة وحدة مرتبطة بالجلسة ومؤقتة، وداكشي علاش خاص المستدعين يبقاو كيوفرو معرّفات مستقرة بشكل منتظم.
{
"id": "globally-unique-and-stable-id",
"type": "external-input",
"payload": "Example request"
}هاد الشكل تصوري وماشي نوع موثق من واجهة Unreal Agent البرمجية. الشرط المهم هو أن معرّف المدخل يكون مستقر وفريد عالميا.
الجلسات
الجلسة هي تاريخ محفوظ كيتزاد عليه وما كيتبدلش. يمكن استئناف الجلسات وتفريعها، وهادشي كيخلي التطبيق يكمل خدمة سابقة ولا يفتح فرعا انطلاقا من تاريخ سابق بلا ما يعاود يكتب التسلسل الأصلي.
مخزن الجلسة هو المسؤول على التاريخ canonical ديال الجلسة وعلى حالة العمليات. وكيقدر حتى يسجل بشكل ذري حالة تحويل استدعاء أداة مع العمليات اللي نتجات على هاد التحويل.
دورات LLM
دورة LLM هي التسلسل اللي كيدبرو المنسق حول طلب منطقي واحد للنموذج. المنسق كيحفظ المدخلات المقبولة، وكيفوجد الدورة، وكيحل محوّلات الأدوات، وكيمل حالة الخدمة الناتجة، وكيبعث العمليات المؤكدة للتنفيذ.
الأدوات والمحوّلات والعمليات
الأداة كتجمع بين مخطط ومحوّل. ملي كيولد النموذج استدعاء لأداة، المحوّل كيتحقق منو وكيحوّلو لعملية وحدة ولا أكثر.
محوّل الأداة كيخدم بشكل متزامن فحلقة الأحداث ديال المنسق. ما خاصوش يدير عمليات إدخال وإخراج ولا يوقف الحلقة.
نتيجة التحويل كتسمى حالة استدعاء الأداة. فيها إما خطأ ديال التحقق، وإما مراجع للعمليات اللي ترسلات. هاد الحالة مختلفة على حالة تنفيذ هاد العمليات.
العملية هي وصف قابل للتسلسل ومُرقّم بالإصدارات لخدمة غير متزامنة. المحوّلات كتوصف الخدمة؛ ومدير العمليات هو اللي كينفذها.
المكونات الرئيسية
- صندوق وارد الجلسة: كيوفر خاصية تنفيذ المدخلات مرة وحدة، بشكل مؤقت ومرتبط بالجلسة.
- المنسق: كيحفظ المدخلات المقبولة، وكيدير دورات LLM، وكيحل محوّلات الأدوات، وكيبعث العمليات المؤكدة للتنفيذ.
- مخزن الجلسة: كيحفظ التاريخ canonical ديال الجلسة وحالة العمليات، وكيدعم الاسترجاع والتفريع، وكيسجل بشكل ذري حالة استدعاء الأداة مع العمليات.
- باني السياق: كيجمع مدخل النموذج فالذاكرة وكيبلغ على المحتوى المحذوف أو المقتطع أو المضغوط. ما كيدير حتى عملية إدخال وإخراج وما عندوش تبعيات على الاستمرارية.
- محوّل LLM: كيرسل المدخل الموجد لمزوّد النموذج وكيرجع استجابة مكتملة وموحدة. هو المسؤول على المصادقة والإلغاء وأخطاء المزوّد.
- سجل الأدوات: هو المسؤول على تعريفات ومحوّلات أدوات Bash وViewImage وskill-use، وكيعرض المجموعة اللي اختارها المضيف.
- محوّل الأداة: كيتحقق من الاستدعاءات، وكيخرج الحالات والعمليات، وكيهيّأ الحالات المسجلة ومخرجات العمليات الموجدة للنموذج.
- مدير العمليات: كيوفر بيئة تشغيل الممثلين للعمليات القابلة للاستمرار. ويمكن تعويض التنفيذ المحلي.
التثبيت والإعداد
الـ README ما كيحددش مدير الحزم، ولا أمر تثبيت خاص بلغة معينة، ولا واجهة برمجية عامة ومستقرة. لذلك، خاص الإعداد يبدا من نسخة محلية من المستودع ومن ملفات البناء ديالو، وماشي من أمر حزم مفترض.
- نسخ ولا تحميل مستودع Unreal Agent.
- فتح جذر المستودع وفحص ملفات البناء والتبعيات باش تعرف سلسلة الأدوات المدعومة.
- بناء ولا تثبيت المكتبة الموجودة فـ
harness/باستعمال الأدوات المكونة فالمستودع. - فحص
cmd/باش تلقى أمثلة تنفيذية كتركب مكونات الإطار. - استعمال
benchmarks/غير من بعد ما ينجح بناء المشروع الأساسي.
cd <unreal-agent-repository>
# فحص مجلدات المكتبة والملفات التنفيذية والاختبارات المعيارية.
ls harness
ls cmd
ls benchmarksالتطبيق المضيف غادي يحتاج حتى هو لمحوّل LLM مكون للمزوّد اللي اختار. المصادقة، وسلوك الإلغاء، ومعالجة الأخطاء الخاصة بالمزوّد خاصها تكون داخل هاد المحوّل.
الاستعمال الأساسي: تتبع طلب واحد ديال الوكيل
حيت الـ README ما كينشرش أسماء فعلية للمنشئات ولا للطرق، فأأمن طريقة باش تفهم الاستعمال هي تتبع تدفق المكونات الموثق.
- صايب ولا كمّل سيشن. مخزن السيشن كيوفّر تاريخ محفوظ ودعم للاسترجاع.
- صيفط إدخال بمعرّف ثابت. عاود استعمل نفس المعرّف ملي كتعاود توصل نفس الحدث المنطقي.
- حيّد التكرار عبر صندوق الوارد ديال السيشن. صندوق الوارد كيرفض ولا كيتجاهل الإدخالات المكررة داخل السيشن النشيطة، حسب السلوك ديال التنفيذ.
- حفظ الإدخال المقبول. المنسّق كيسجلو فالتاريخ القانوني ديال السيشن، اللي كيتزاد غير فالأخير.
- بني سياق الموديل. باني السياق كيجمع إدخال الموديل فالذاكرة وكيبلّغ على أي محتوى حيدو، قصّرو، ولا ضغطو.
- شغّل دورة LLM. محوّل LLM كيبعث الإدخال المحضّر للمزوّد وكيرجّع جواب مكتمل وموحّد الصيغة.
- حلّ استدعاءات الأدوات. المنسّق كيقلب على كل أداة مسموح بها عبر السجل.
- ترجم بشكل متزامن. المترجم المختار كيتحقق من الاستدعاء وكينتج يا إما خطأ فالتدقيق يا إما عمليات قابلة للتسلسل.
- دير الالتزام بشكل ذري. مخزن السيشن كيسجّل حالة استدعاء الأداة والعمليات مجموعين.
- نفّذ بشكل غير متزامن. مدير العمليات كينفّذ العمليات اللي تلتازمو وكيّتبع حالة التنفيذ ديالها بشكل مستقل على حالة الترجمة.
- نسّق النتائج للموديل. المترجم كيجمع حالة الاستدعاء المسجّلة مع خرج العملية المحضّر باش ينتج نتيجة موجّهة للموديل.
مثال على دورة حياة استدعاء أداة
إدخال بمعرّف ثابت
-> إزالة التكرار من صندوق الوارد
-> حفظ حدث السيشن
-> بناء السياق
-> جواب LLM موحّد
-> البحث فـسجل الأدوات
-> التدقيق والترجمة بشكل متزامن
-> الالتزام الذري بالحالة والعملية
-> تنفيذ العملية بشكل غير متزامن
-> تنسيق النتيجة الموجّهة للموديلإلى فشل التدقيق، المترجم كيسجّل خطأ فالتدقيق بلا ما ينتج عمليات. وإلى نجح التدقيق، الحالة كتشير للعمليات اللي تصيفطات، بينما مدير العمليات كيتبع بشكل مستقل واش هاد العمليات باقية معلّقة، خدامة، سالات، ولا تعالجات بطريقة أخرى حسب التنفيذ ديالو.
اختيار الأدوات
سجل الأدوات كيمتلك التعريفات والمترجمات ديال Bash وViewImage واستعمال المهارات. المضيف هو اللي كيختار شنو من هاد الأدوات يعرّض.
عرّض غير القدرات اللي محتاجها نشر معيّن. الـREADME ما كيحدّدش سياسات التفويض ولا العزل، وهاد الأمور خاص البيئة المضيفة وطبقة تنفيذ العمليات يتكلفو بها.
توسيع الـHarness
مكوّنات Unreal Agent مصمّمة باش تكون قابلة للتركيب مع بعضها. تقدر تطبيقات بديلة تعوّض المكوّنات اللي ورا الواجهات، بشرط تحافظ على المسؤوليات والثوابت الموثّقة.
تنفيذ مترجم أداة
المترجم المخصص خاصو يتبع هاد التسلسل:
- تحقّق من الوسائط اللي أنتجها الموديل مقابل مخطط الأداة.
- رجّع خطأ فالتدقيق ملي يكون الطلب غير صالح.
- إلى كان صالح، صايب وصف واحد ولا أكثر لعمليات قابلة للتسلسل ومُرقّمة الإصدارات.
- رجّع حالة كتشير للعمليات اللي تصيفطات.
- وفّر منطق التنسيق اللي كيحوّل الحالة المسجّلة وخرج العملية المحضّر لنتيجة موجّهة للموديل.
خلي الترجمة حتمية وسريعة. ما تديرش طلبات للشبكة، وما تدخلش للملفات، وما تستناش عمليات فرعية، وما تدير حتى إدخال أو إخراج آخر داخل المترجم.
تعويض مدير العمليات
مدير العمليات المحلي قابل للتبديل. واحد التوسيع الموثّق هو مدير وكيل كيسلسل العمليات وكيصيفطها لمدير عمليات محلي آخر خدام داخل عملية صندوق رمل بعيدة.
هاد التصميم كيخلي المنسّق والمترجمين مركزين على التدقيق والنية الدائمة، مع السماح بالتنفيذ داخل بيئة معزولة.
تنفيذ التخزين
مخازن السيشن البديلة خاصها تحافظ على قابلية التسلسل، وترقيم الإصدارات، وسلوك الاسترجاع، والعلاقة الذرية بين حالة استدعاء الأداة والعمليات اللي تولدات.
المشروع كيسعى يحافظ على التوافق مع الإصدارات السابقة ديال السيشنات. إلى كانت نسخة السيشن ما مدعومةش، خاص استئنافها يفشل بخطأ واضح، ماشي يقرا البيانات بشكل خاطئ فصمت.
نصائح متقدمة
- ولّد معرّفات الإدخال عند حدود الاستدعاء. خزّن المعرّف مع الحدث الأصلي باش تعاود المحاولات وإعادة التسليم يحتافظو بنفس الهوية.
- ما تخلّطش بين إزالة التكرار فصندوق الوارد والتاريخ الدائم. صندوق الوارد متقلّب ومحدود بالجلسة، بينما مخزن الجلسة كيحتافظ بالأحداث الأساسية.
- خلّي المترجمات نقية ومتزامنة. ترجم الطلبات لعمليات بلا ما تنفّذ الخدمة مباشرة.
- دير إصدار لكل صيغة ديال العمليات. العمليات تقدر تبقى من بعد العملية اللي أنشأتها، ولا تدوز بين العمليات وحدود العزل.
- حافظ على الالتزامات الذرّية. تسجيل حالة نجاح استدعاء أداة بلا العمليات ديالها يقدر يخلّي الجلسة غير متسقة من بعد انهيار.
- تبّع الترجمة والتنفيذ بشكل مستقل. الاستدعاء الصحيح يقدر ينتج عملية ملتازم بها ولكن مازال ما كملاتش.
- استعمل البيانات الوصفية ديال باني السياق. راقب شنو تحيّد، ولا تقطع، ولا تدمج، باش تقدر تشخّص سلوك النموذج.
- مركّز اهتمامات المزوّد. خلّي بيانات الاعتماد، والإلغاء، وأخطاء المزوّد داخل محوّل LLM.
- فرّع الجلسات للتجريب. الفرع يقدر يجرّب متابعة مختلفة مع الحفاظ على التاريخ ديال الجلسة الأصلية، اللي كيتزاد فيه غير بالأحداث.
- استعمل مدير عمليات وسيط للعزل. العمليات المتسلسلة تقدر تتبعث لبيئة تشغيل داخل عزل بعيد بلا ما تنقل الترجمة المتزامنة لتمّا.
الثوابت المهمة
خاص الإضافات تحافظ على الضمانات التالية:
- عناصر مخزن الجلسة كيبقاو قابلين للتسلسل.
- صيغة التخزين كتبقى ذات إصدار.
- إصدارات الجلسات غير المدعومة كتنتج أخطاء واضحة عند الاستئناف.
- العمليات كتبقى قابلة للتسلسل وذات إصدار.
- بناء السياق ما كيدير حتى عملية إدخال وإخراج، وما كيقبل حتى اعتماديات ديال الاستمرارية.
- ترجمة الأدوات ما كتدير حتى عملية إدخال وإخراج، وما كتعلّقش أبداً حلقة الأحداث ديال المنسّق.
الخلاصة
Unreal Agent كيوفّر أساساً معيارياً للوكلاء اللي محتاجين جلسات دائمة، ومدخلات محيّدة التكرار، ودورات LLM منسّقة، واستدعاءات أدوات متحقَّق منها، وخدمة غير متزامنة دائمة. المبدأ المركزي فالتصميم ديالو هو حدّ واضح بين الترجمة المتزامنة والتنفيذ غير المتزامن. بْدا بالملفات التنفيذية الموجودة، وتبع تدفق الأحداث الموثّق، وحافظ على التسلسل، والإصدارات، والذرّية ملي كتبدّل المكوّنات ولا كتوسّعها.
