Эта страница переведена с английского. Читать страницу на английском
Команда 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 | Переписывает переименованные API Zeyn в src, tests и examples, затем проверяет |
zeyn mcp | Запускает MCP-сервер через stdio для ИИ-агентов |
Установите её из crates.io:
cargo install zeyn-cli
zeyn new my-app
cd my-app
cargo runВнутри этого репозитория запускайте CLI через 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, поэтому код читается сверху вниз: цепочка вызовов длиннее этого значения получает по одному вызову на строку, в среднем одна-две точки на строку. Агенты и люди просматривают список быстрее, чем одну длинную строку, а в диффах виден тот единственный вызов, который изменился. Сохраняйте эту настройку.
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: небольшой образ контейнера.- Конвейеры для распространённых 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 и actions) и чек-листом для pull request;.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) и папка ещё не находится внутри репозитория. Ничего не коммитится, поэтому первый коммит несёт ваше собственное имя и адрес e-mail.--no-gitпропускает этот шаг.
Каждая папка описана в разделе Структура проекта.
Проверка приложения
zeyn check запускает компилятор, а затем собственные проверки приложения (App::check): дублирующиеся маршруты, дважды зарегистрированные экраны, сервисы, которые нужны экрану, но никем не зарегистрированы, непригодные горячие клавиши, токены темы с контрастом ниже WCAG AA и ключи перевода, отсутствующие в каком-либо языке. При любой ошибке команда завершается с ошибкой, поэтому её может запускать CI.
Когда релиз Zeyn переименовывает API, zeyn check --fix переписывает старые имена, например Grid в DataGrid и GridQuery в DataQuery, затем проверяет снова.
zeyn check --fixDocker
Сгенерированный Dockerfile собирается в два этапа и работает на образе distroless от имени пользователя без прав root. Бинарный файл проверяет собственное состояние командой <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 и ИИ-агенты.