هذه الصفحة مترجمة من الإنجليزية. اقرأ الصفحة الإنجليزية
صُمم Zeyn للوكلاء من جهتين: وكلاء يكتبون تطبيقات Zeyn، ووكلاء يستخدمون تطبيقاً قيد التشغيل نيابةً عن مستخدم.
الوكلاء الذين يكتبون التطبيقات
يحمل المشروع الذي يعمل فيه الوكيل قواعده وأدواته:
- يسرد
AGENTS.mdوCLAUDE.mdالأوامر وبنية المشروع وقواعد اللغة وفهرساً للإطار. - يسجّل
.mcp.jsonالأمرzeyn mcp، وهو خادم MCP عبر stdio بهذه الأدوات:
| الأداة | ما تفعله |
|---|---|
zeyn_docs | مرجع الإطار حسب الموضوع: rules وlanguage وprotocol |
zeyn_describe | ميزات التطبيق وشاشاته ومساراته وصلاحيات الوصول وواجهات API والمشكلات والترجمات الناقصة |
zeyn_check | يصرّف الشيفرة ويبلّغ عن المشكلات؛ وfix: true يعيد أولاً كتابة واجهات API التي تغيّرت أسماؤها |
zeyn_test | يشغّل cargo test ويعيد نهاية المخرجات |
zeyn_new_feature | ينشئ مجلد ميزة ويسجّلها |
المترجم هو الحارس الرئيسي. لكل قاعدة يستطيع فرضها اختبار compile_fail ورسالة #[diagnostic::on_unimplemented] مكتوبة ليتصرف الوكيل بناءً عليها، مثل:
error[E0277]: `min()` and `max()` cannot be used on a `bool` column
= note: `min()` and `max()` work on i32, i64, Money, Date, Time, DateTime, LocalDateTime and their Option formsيطبع ZEYN_DESCRIBE=1 cargo run الوصف نفسه الذي تعيده zeyn_describe ثم ينتهي.
الوكلاء الذين يستخدمون تطبيقاً
App::new(t!("app.name")).mcp(Mcp::read_only())مع agents تصبح شاشات التطبيق أدوات:
- أداة بحث واحدة لكل جدول،
- أداة حفظ واحدة لكل نموذج، وتكون حقول النموذج وقواعده هي مخططها (فقط مع
Mcp::read_write()).
يصل الوكلاء إليها بطريقتين:
- في المتصفح عبر WebMCP (
document.modelContext.registerTool)، عندما يدعمه المتصفح. تُسجَّل أدوات الشاشة الحالية عند فتحها وتُزال عند إغلاقها. - على الخادم عند
POST /_zeyn/mcp(JSON-RPC). يحتاج إلى ترويسةAuthorization، لذلك لا يمكن لجلسة متصفح وحدها أن تشغّله أبداً.
القواعد نفسها التي تنطبق على الناس
- يحصل الوكيل على صلاحيات المستخدم الذي يعمل نيابةً عنه بالضبط. لا تُدرج الأدوات الخاصة بالشاشات والإجراءات التي لا يحق للمستخدم فتحها.
- تمر الاستدعاءات عبر الحراس (guards) والمعترضات (interceptors) والتحقق وحدود المعدل الخاصة بالاستدعاء العادي.
- تعلّم سجلات التدقيق الاستدعاءات التي أجراها الوكلاء، ليتمكن المراجع من التمييز بينها.
- يتيح
Mcp::read_only()للوكلاء البحث دون الحفظ. اخترread_write()فقط للتطبيقات التي ينبغي فيها أن يغيّر الوكيل البيانات.