هذه الصفحة مترجمة من الإنجليزية. اقرأ الصفحة الإنجليزية
ينشئ الأمر zeyn المشاريع، ويضيف الميزات (features)، ويفحص التطبيق، ويشغّل خادم MCP للوكلاء.
الأوامر
| الأمر | ماذا يفعل |
|---|---|
zeyn new <name> | ينشئ تطبيقًا ببنية الميزات القياسية |
zeyn new <name> --lib | ينشئ مكتبة من النماذج والميزات والنصوص تشترك فيها عدة تطبيقات |
zeyn g feature <name> | يضيف src/features/<name> مع النماذج والمخزن والإجراءات والشاشات |
zeyn routes | يسرد الميزات والشاشات والمسارات وواجهات API والوصول |
zeyn check | يصرّف المشروع ويبلّغ عن المشكلات البنيوية والترجمات الناقصة |
zeyn check --fix | يعيد كتابة واجهات Zeyn المعاد تسميتها في src وtests وexamples، ثم يفحص |
zeyn mcp | يشغّل خادم MCP على stdio لوكلاء الذكاء الاصطناعي |
ثبّته من crates.io:
cargo install zeyn-cli
zeyn new my-app
cd my-app
cargo runداخل هذا المستودع، شغّل الأداة عبر Cargo:
cargo run -p zeyn-cli -- new my-app
cd my-app
cargo runتطبيق جديد
يكتب zeyn new مشروعًا يُبنى وينجح في اختباراته ويتبع القواعد المعطاة للوكلاء:
AGENTS.mdوCLAUDE.md: قواعد المشروع وفهرس للإطار موجّه للوكلاء..mcp.json: يسجل خادم MCP المسمىzeyn، ليتمكن الوكيل من استدعاءzeyn_checkوzeyn_docs.config/app.json: القيم الافتراضية. تتجاوزها متغيرات البيئةAPP_*، مثلAPP_SERVER__ADDRللمفتاحserver.addr.locales/en.jsonوlocales/tr.json: كل نص يراه المستخدم.src/features/: مجلد واحد لكل ميزة، مع ميزة نموذجية اسمهاnotes.rustfmt.tomlوclippy.tomlوdeny.tomlوrust-toolchain.tomlو[lints]فيCargo.toml: معايير يفرضها CI. يضبطrustfmt.tomlالقيمةchain_width = 40، ليُقرأ الكود من الأعلى إلى الأسفل: سلسلة الاستدعاءات الأطول من ذلك تأخذ استدعاءً واحدًا في كل سطر، بمعدل نقطة أو نقطتين في السطر. يراجع الوكلاء والناس قائمة أسرع من سطر طويل واحد، وتُظهر الفروق (diffs) الاستدعاء الذي تغير وحده. أبقِ على هذا الإعداد.
DataGrid::of(search_items)
.paging(Paging::pages(25))
.column(Item::code)
.column(Item::qty)وليس DataGrid::of(search_items).paging(Paging::pages(25)).column(Item::code).column(Item::qty).
Dockerfileو.dockerignore: صورة حاوية صغيرة.- خطوط إنتاج (pipelines) لخوادم CI الشائعة، وكلها تجري الفحوص نفسها (
cargo fmt --checkوcargo clippy -D warningsوcargo testوcargo deny check) وترفض وسمًاvX.Y.Zلا يطابقCargo.toml:.github/workflows/ci.ymlلـ GitHub Actions، مع.github/dependabot.yml(تحديثات أسبوعية لـ Cargo والإجراءات) وقائمة مراجعة لطلبات السحب (pull requests)؛.gitlab-ci.ymlلـ GitLab؛Jenkinsfileلـ Jenkins (وكيل Docker، وتغطية بـcargo llvm-cov).
sonar-project.properties: تحليل SonarQube (مشكلات Clippy وتغطية LCOV منtarget/lcov.info). يشغّله سير عمل GitHub عندما يكون متغير المستودعSONAR_HOST_URLوالسرSONAR_TOKENمضبوطين؛ ويشغّله Jenkins عندما تضبط المهمةSONAR_ENABLED=true.SECURITY.mdوCHANGELOG.md(Keep a Changelog).- مستودع git محلي على الفرع
main، عندما يكون git مثبتًا (Windows أو macOS أو Linux) ولا يكون المجلد داخل مستودع أصلًا. لا يُنفَّذ أي commit، فيحمل أول commit اسمك وبريدك. يتخطاه الخيار--no-git.
راجع بنية المشروع لمعرفة كل مجلد.
فحص تطبيق
يشغّل zeyn check المصرّف (compiler) ثم فحوص التطبيق نفسه (App::check): المسارات المكررة، والشاشات المسجلة مرتين، والخدمات التي تحتاجها شاشة ولم يسجلها أحد، والاختصارات غير القابلة للاستخدام، ورموز السمة (theme tokens) التي يقل تباينها عن WCAG AA، ومفاتيح الترجمة الناقصة في لغة ما. ينتهي بخطأ عند وجود أي خلل، ليتمكن CI من تشغيله.
عندما يعيد إصدار من Zeyn تسمية واجهة API، يعيد zeyn check --fix كتابة الأسماء القديمة، مثل Grid إلى DataGrid وGridQuery إلى DataQuery، ثم يفحص مرة أخرى.
zeyn check --fixDocker
يبني Dockerfile المولَّد على مرحلتين ويعمل على صورة distroless بمستخدم بلا صلاحيات الجذر. يفحص الملف التنفيذي صحته بنفسه عبر <app> health، وهو ما يستخدمه HEALTHCHECK.
docker build -t my-app .
docker run -p 3000:3000 -e APP_SERVER__ADDR=0.0.0.0:3000 my-appحجم صورة التطبيق المولَّد نحو 43 ميغابايت، ويستخدم التطبيق في وضع الخمول بضعة ميغابايتات من الذاكرة.
خادم MCP
يتحدث zeyn mcp بروتوكول MCP عبر stdio. أدواته هي zeyn_docs (مرجع الإطار حسب الموضوع) وzeyn_describe (ميزات التطبيق في المجلد الحالي وشاشاته ومساراته ومشكلاته) وzeyn_check (مع fix: true يشغّل check --fix) وzeyn_test وzeyn_new_feature. راجع MCP ووكلاء الذكاء الاصطناعي.