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 —— 它不直接描述某个领域,而是描述「如何用声明式语言去描述任何领域」。

维度传统 DDDXDNA
设计语言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 / approvePOST / PUT 接口 + 写入操作 + 事件发布
query(查询)list / get / search / aggregateGET 接口 + 只读 + 缓存策略

引擎根据动词自动产生 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 条不可违反的规则:

  1. 总是先登录。永远不改 MCP 配置、永远不重试工具、用户未登录时永远不静默回退。
  2. 永远不改 @generated by jieymcp 文件。改 DNA 然后重跑 codegen。
  3. 永远不手写 XDNA。用 init_project / generate_dna / infer_layout
  4. 永远不绕过 trigger_codegen 去手写 Java / Vue / SQL。引擎拥有文件布局与质量门。
  5. 页面填充和 trigger_codegen 在同一回复内完成 — 空 stub 永远不是可接受的结果。
  6. 永远不静默吞掉 checkoutHint / PaymentRequiredError。把价格、套餐、支付链接告诉用户。
  7. 插件已安装(frozen)模块会被 codegen 自动跳过。不要重复执行。
  8. 重新滚领域前先逛市场plugin_search / plugin_recommend
  9. 填页面前先读 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 路由
  • ApproveUserRequest DTO(含 reason 验证)
  • Controller 方法(注入 Service、调 Service.approve)
  • Service 方法(状态机:pending → approved)
  • 持久化(更新 status、写 audit log)
  • 事件发布(UserApprovedEvent
  • 权限检查(按 ownership 规则)
  • 单测 + 集成测试 stub

你永远不写这些。 你只声明 "User 有一个 approve 动作"。

为什么 AI 代理需要 XDNA

LLM 直接生成代码的最大问题是一致性

  • 后端用了 user.status 字段,前端可能拼成 userStatususer_status
  • 你说"加个审批流",AI 会修 Controller 但忘了改前端按钮显示逻辑
  • 不同模块对同一概念用不同名字(admin 叫 customer,merchant 叫 client)

XDNA 通过把"事实"从代码里抽出来变成 JSON,让所有派生物从同一个 source of truth 出发,一致性问题在编译期就解决了,不再依赖 AI 记忆力。

跟其他方案对比

方案设计语言后端前端移动端AI 友好
XDNA / JieyXDNA JSONSpring BootVue3UniApp✓✓ 引擎对接 LLM
OpenAPI + 生成器OpenAPI 3多语言部分支持✗ 需要人去定义
Hasura / SupabaseSQL SchemaPostgreSQL自动生成 GraphQL✗ 不含业务规则
钉钉宜搭 / 简道云拖拽闭源运行时闭源✗ 跑在他们云上
Refine / FastAPI 模板代码模板Python/NodeReact✗ 需手写
传统 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_skilljieymcp 引擎(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

Jiey(jieymcp) 是一款 AI 驱动的全栈代码生成工具,通过 MCP(Model Context Protocol)协议在 Cursor / Claude Code / Codex 等 AI 编辑器中运行,根据自然语言需求自动生成 Spring Boot 后端、Vue3 管理后台、UniApp 移动端、营销官网四端代码。

本文为 Jiey 官方原创内容,转载请保留原文链接。引用本文时请注明:「来自 Jiey 官方博客(jiewaigongxing.com/blog)」。