soda docs v17.0.1

让 AI 理解 SODA

soda 是个有约定的框架。同样的功能,AI 闭着眼睛能写出七八种 Java 写法,但只有一种符合 soda 的路数。少了这份说明,AI 会给你 @Command 注解(soda 里根本没有)、把 QueryHandler 写成按继承匹配(实际按精确类匹配)、让 CommandHandler 返回 void(那样领域事件永远发不出去)。

把架构约定、命名规范和硬约束写成一份说明文档放进工程,AI 打开就懂,写出来的代码直接能跑。

提示

用生成器下过工程的用户已经拿到这份文档了 —— 工程根目录的 CLAUDE.md 就是。Claude Code / Cursor 打开工程会自动加载。这一页是给「没用生成器」和「想装进别的 IDE」的人准备的。

两条路

路 1:直接生成工程(最省事)

打开 start.soda.hibuka.com,填包名项目名,下载。工程根目录自带 CLAUDE.md,用任何 AI IDE 打开就能干活。

路 2:把指南装进你自己的工程

不管工程是从生成器下的还是自己搭的,都可以把 AI 指南 那一页的全文复制下来,按你 IDE 认的文件名放进工程根目录。下面这张表是各 IDE 的落点。

装进你的 AI IDE

不同 IDE 读的文件名和位置不一样。内容是同一份,只换文件名和路径。

AI IDE文件名放哪自动加载
Claude CodeCLAUDE.md工程根目录是,启动就读
CursorAGENTS.md,或 .cursor/rules/soda.mdc工程根目录 / .cursor/rules/是
Windsurf.windsurfrules工程根目录是
Cline.clinerules工程根目录是
GitHub Copilot.github/copilot-instructions.md.github/是(Copilot Chat / Coding Agent)
Zed.rules工程根目录是
Trae / QoderAGENTS.md工程根目录是
其他——直接把全文贴进对话开头
技巧

多数 IDE 也支持手动加载:开个新对话,把全文粘进去说「按这份约定写代码」。不装文件也能用,只是每次都要贴一遍。

那份文档里有什么

AI 指南 是一份可直接复制的独立文件,覆盖:

  • 四层架构调用链(Controller → AppService → BusFacade → Handler → Repository)
  • 核心概念表(BusFacade / BasePageQuery / QueryHandler / CommandHandler / PageVO / Result)
  • 文件命名约定(XxxData / XxxDetail / CreatXxxCommand / ListXxxQuery / XxxVO / XxxDo …)
  • 两个 AI 最容易踩的硬约束:泛型三处必须一致、CommandHandler 必须返回聚合根
  • 配置项(含 soda.event.* 与 scoda.ddd.cqrs.async.* 前缀不一致这个坑)
  • 构建测试命令、常见陷阱、别踩的坑

建议的用法

文档不是贴上就一劳永逸。给 AI 派活时补一句具体场景,效果差很多:

你说AI 做
「加个查询接口」只生成 QueryHandler,漏掉 AppService / Assembler / Controller
「按 AI 指南 的场景 A,加一个查 Producer 列表的接口」走完整链路,命名和泛型都对

工程里的 CLAUDE.md 是背景知识,具体任务还得你点。框架本身的细节、配置参考和错误码,让 AI 自己去 参考 那一组查。

下一步