Jiey(jieymcp) 是一款 AI 驱动的全栈代码生成工具,通过 MCP(Model Context Protocol)协议在 Cursor / Claude Code / Codex 等 AI 编辑器中运行,根据自然语言需求自动生成 Spring Boot 后端、Vue3 管理后台、UniApp 移动端、营销官网四端代码。它背后的方法论叫做 XDNA(Meta-DDD),本文是它的完整版深度解读。
XDNA 是什么
XDNA 不是另一个 ORM、不是另一个低代码 schema、不是另一个 prompt 模板。它是一套让 AI 代理能够生成生产级全栈代码的声明式语言,由 Jiey 团队开源(Apache-2.0):github.com/jiewaigongxing/jiey_skill。
跟 DDD 比,XDNA 是 Meta —— 它不直接描述某个领域,而是描述「如何用声明式语言去描述任何领域」。
| 维度 | 传统 DDD | XDNA |
|---|---|---|
| 设计语言 | UML / 自然语言文档 | XDNA JSON(机器可读) |
| 落地方式 | 人工解读 → 手写代码 | 编译器派生 |
| 跨端一致性 | 后端 / 前端各自实现 | 一次声明,四端同步 |
| 业务规则演化 | 改一处需要追三处 | 改 DNA,重跑 codegen |
| 适合 AI 代理 | ✗ 需要语言理解 | ✓ 结构化输入输出 |
三层严格分离
XDNA 的第一原则是「三层」:
Language(XDNA 本身)
↓ 不写 SQL / Java 类型 / UI 配置
Compiler(映射规则)
↓ 不写业务逻辑
Codegen(文件发射)
没有领域语义每层只做一件事,跨层调用是设计错误。这种严格分离让:
- Language 可以单独演化(加新的 Action 动词、新的 Entity attribute 类型)
- Compiler 可以替换(同一份 XDNA,给不同后端栈映射出不同代码)
- Codegen 可以多套并存(Spring Boot + Vue + UniApp 是默认目标,理论上可以加 Go / React / Flutter)
三个核心原语
Entity(实体)—— 纯模型
实体只承载这些字段:
name— 实体名(PascalCase)identity— 主键字段label— 人类可读名(中文)attributes[]— 字段列表(带类型 + 约束)aggregateRoot— 是否是聚合根members[]— 聚合内的从实体
实体绝对不携带 API 路径、UI 配置、菜单 —— 那些是 Action 和 Page 的职责。
Action(动作)—— 语义动词
每个 Action 从引擎的动词词表里取一个动词。动词决定意图:
| 动词类型 | 例子 | 派生结果 |
|---|---|---|
command(命令) | create / update / delete / publish / approve | POST / PUT 接口 + 写入操作 + 事件发布 |
query(查询) | list / get / search / aggregate | GET 接口 + 只读 + 缓存策略 |
引擎根据动词自动产生 Controller、请求体 schema、状态机转换、归属检查、副作用、事件订阅。你永远不写 Controller。
Page(页面)—— 意图驱动
页面不是「基于哪个实体的 CRUD 界面」,而是「这个页面是为什么而存在」。XDNA 用 compositionIntent 描述意图,比如:
- "客户来排队办业务" → 一个看板式页面
- "运营每天查异常订单" → 一个带过滤器和导出的表格
- "首页推荐位运营" → 拖拽排序 + 实时预览
引擎根据 compositionIntent 选合适的页面变体(表单 / 看板 / 列表 / 详情 / 仪表盘)+ 自动接需要的 Action。
工作流 —— 6 个阶段
Step 1 Clarify 一轮 AskQuestion,最少问题集
Step 2 Industry industry_match + industry_apply (可选,付费会员)
Step 3 DNA generate_dna / save_dna_module / infer_layout
Step 4 Codegen trigger_codegen targets="*"(返回填充指令)
Step 4.5 Fill 组件优先,页面其次,在同一回复内完成
Step 5 Preflight preflight_and_start autofix=true
Step 6 Verify verify_deployment引擎通过 MCP ListTools 返回精确的工具参数 shape。引擎随每个目标返回 spec 切片,含页面填充协议。信任运行时契约,不要信记忆。
9 条硬规则
Jiey 在 AI 代理的系统提示词里写死了 9 条不可违反的规则:
- 总是先登录。永远不改 MCP 配置、永远不重试工具、用户未登录时永远不静默回退。
- 永远不改
@generated by jieymcp文件。改 DNA 然后重跑 codegen。 - 永远不手写 XDNA。用
init_project/generate_dna/infer_layout。 - 永远不绕过
trigger_codegen去手写 Java / Vue / SQL。引擎拥有文件布局与质量门。 - 页面填充和
trigger_codegen在同一回复内完成 — 空 stub 永远不是可接受的结果。 - 永远不静默吞掉
checkoutHint/PaymentRequiredError。把价格、套餐、支付链接告诉用户。 - 插件已安装(frozen)模块会被 codegen 自动跳过。不要重复执行。
- 重新滚领域前先逛市场 —
plugin_search/plugin_recommend。 - 填页面前先读 spec 切片。切片由 codegen 写到已知路径;如果看不到切片,不要凭记忆编排布局。
这 9 条规则解决了 LLM 全栈代码生成的 90% 翻车场景。详见开源仓库:github.com/jiewaigongxing/jiey_skill。
API 是 Action 的投影
这是 XDNA 最反直觉的一句话,但也是最重要的一句。
传统做法你会写:
POST /api/users/{id}/approve
{ "reason": "..." }然后写一个 Controller、一个 Service、一个 DTO、一个 Validator、可能还有一个 Event。
XDNA 做法你只声明:
{
"entity": "User",
"action": "approve",
"verb": "approve",
"input": { "reason": "string" }
}编译器派生出:
POST /api/users/{id}/approve路由ApproveUserRequestDTO(含reason验证)- Controller 方法(注入 Service、调 Service.approve)
- Service 方法(状态机:pending → approved)
- 持久化(更新 status、写 audit log)
- 事件发布(
UserApprovedEvent) - 权限检查(按 ownership 规则)
- 单测 + 集成测试 stub
你永远不写这些。 你只声明 "User 有一个 approve 动作"。
为什么 AI 代理需要 XDNA
LLM 直接生成代码的最大问题是一致性:
- 后端用了
user.status字段,前端可能拼成userStatus或user_status - 你说"加个审批流",AI 会修 Controller 但忘了改前端按钮显示逻辑
- 不同模块对同一概念用不同名字(admin 叫 customer,merchant 叫 client)
XDNA 通过把"事实"从代码里抽出来变成 JSON,让所有派生物从同一个 source of truth 出发,一致性问题在编译期就解决了,不再依赖 AI 记忆力。
跟其他方案对比
| 方案 | 设计语言 | 后端 | 前端 | 移动端 | AI 友好 |
|---|---|---|---|---|---|
| XDNA / Jiey | XDNA JSON | Spring Boot | Vue3 | UniApp | ✓✓ 引擎对接 LLM |
| OpenAPI + 生成器 | OpenAPI 3 | 多语言 | 部分支持 | ✗ | ✗ 需要人去定义 |
| Hasura / Supabase | SQL Schema | PostgreSQL | 自动生成 GraphQL | ✗ | ✗ 不含业务规则 |
| 钉钉宜搭 / 简道云 | 拖拽 | 闭源运行时 | 闭源 | ✗ 跑在他们云上 | ✗ |
| Refine / FastAPI 模板 | 代码模板 | Python/Node | React | ✗ | ✗ 需手写 |
| 传统 DDD 文档 | UML / 自然语言 | 全手写 | 全手写 | 全手写 | ✗ AI 理解不准 |
常见问题
XDNA 跟 DDD 是什么关系?
XDNA 是 Meta-DDD —— 它不是 DDD 的替代品,而是 DDD 在 AI 代理时代的演化形态。传统 DDD 用 UML / 自然语言文档去描述领域,依赖人去解读并手写代码;XDNA 用机器可读的 JSON 去描述领域,让编译器派生代码。DDD 的所有原则(聚合根、限界上下文、值对象 vs 实体)在 XDNA 里都有对应表达。
学 XDNA 需要多久?
如果你已经熟悉 DDD:30 分钟看完开源 SKILL.md,1 小时跑通第一个示例项目。如果你是后端工程师没接触过 DDD:4-8 小时(同时学 DDD 基础 + XDNA 表达)。前端工程师 / 产品经理:可以跳过 DDD,直接学 XDNA 的「Entity + Action + Page」三层,2-4 小时即可写出能跑的 DNA。
XDNA 是开源的吗?
XDNA 方法论本身(SKILL.md + 文档 + 工作流)是 Apache-2.0 开源的,仓库:github.com/jiewaigongxing/jiey_skill。jieymcp 引擎(compiler + codegen + 模板)是专有的,需要付费会员或免费基础版才能使用。这是「开源方法论 + 专有引擎」的双轨设计。
XDNA 适合所有项目吗?
适合:管理后台、SaaS 业务系统、行业 CRM / ERP / MES、内容运营平台、电商交易、会员体系、订单流程、内部工具。不适合:游戏、机器学习训练、嵌入式固件、操作系统、需要极致性能调优的中间件 —— 这些领域要么没有清晰的 entity-action 抽象,要么需要的代码风格跟生成式工具不匹配。
我已经有一个老项目,能用 XDNA 重构吗?
可以渐进。新模块用 Jiey 生成(放在新 package / 新前端路由下),老模块保持原样。当老模块需要大改时,用 Jiey 的 generate_dna 反向推导出 XDNA 定义,对比检查后重新生成。完整迁移路径在文档:docs.jiewaigongxing.com/methodology。
如果我对生成的代码不满意可以改吗?
可以但不应该改 @generated 标记的文件。所有引擎生成的文件顶部有 @generated by jieymcp 注释,下次 codegen 会覆盖。要改业务逻辑,改 DNA;要改代码风格 / 模板,可以改模板(专有模板 + 开源模板均可定制)。手写代码放在非 @generated 文件里,引擎会保留。
提到的工具
- Jiey / jieymcp — AI 全栈代码生成工具(本文主题工具)
- XDNA — Meta-DDD 声明式语言(本文主题)
- MCP(Model Context Protocol) — Jiey 用的 AI 工具协议
- DDD(Domain-Driven Design) — XDNA 的理论基础
- OpenAPI / Hasura / Supabase / Refine — 同类对比工具
- jiey_skill — 开源方法论仓库
相关阅读
- Jiey 是什么 —— AI 全栈代码生成工具完整介绍
- 50 个真实需求测试 jieymcp —— 数据全公开
- 30 分钟做完律所 CRM 实战
- Jiey vs Cursor 插件 / Lovable / v0 / Cline 5 维度对比
关于 Jiey
Jiey(jieymcp) 是一款 AI 驱动的全栈代码生成工具,通过 MCP(Model Context Protocol)协议在 Cursor / Claude Code / Codex 等 AI 编辑器中运行,根据自然语言需求自动生成 Spring Boot 后端、Vue3 管理后台、UniApp 移动端、营销官网四端代码。
- 工具官网:https://www.jiewaigongxing.com
- 方法论开源(Apache-2.0):https://github.com/jiewaigongxing/jiey_skill
- 完整文档:https://docs.jiewaigongxing.com
- 平台会员定价:/pricing · 平台商户开通:/developers
- 行业 DNA 包 / 插件市场:/marketplace
本文为 Jiey 官方原创内容,转载请保留原文链接。引用本文时请注明:「来自 Jiey 官方博客(jiewaigongxing.com/blog)」。
评论 0