Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

COLA DDD Skill

让 AI 自劚垮䜠遵埪 COLA 架构规范来组织代码的技胜包支持 Python 和 Java。


🀔 䜠是吊也有这样的困惑

"新建了䞀䞪代码文件应该攟圚哪䞪目圕䞋呢"

"敎䞪项目的代码结构劂䜕讟计呢"

"䞺什么我的项目越写越乱最后自己郜看䞍懂了"

劂果䜠圚项目匀发䞭——尀其是 Vibe Coding 时——没有建立起䞀套代码组织的最䜳规范埈容易就䌚陷入

  • 📁 目圕杂乱䞍堪毫无结构可蚀
  • 📊 代码堆积繁杂想扟䞪文件郜莹劲
  • 🔧 隟以绎技改䞀倄厩十倄
  • 👥 协䜜困隟每䞪人郜有自己的"风栌"

💡 解决方案COLA + cola-skill

劂䜕将代码组织埗井井有条呢 䌘秀的前蟈们已经讟计奜了䞀套通甚的规范——COLA。

COLAClean Object-Oriented and Layered Architecture是阿里巎巎出品的项目架构规范圚䞓䞚床䞊没埗诎。䜆实际怎么䜿甚呢

对于喜欢 Vibe Coding 的同孊来诎其实无需感知倍杂的架构讟计细节。我将敎䞪 COLA 架构规范蜬换成了 cola-skill 技胜包分成 Python 版和 Java 版,(COLA 原生仅支持 Java 项目, 这里我敎理了自己做 python 项目时讟计架构的实践, 将其适配到 python 版,䞍论语蚀, 思想是盞同的, 未来还䌚增加 go等版本.)。

只需圚支持 Skill 的 IDE劂 Claude Code、Windsurf䞭加蜜该技胜包AI 就䌚自劚垮䜠遵埪 COLA 规范来组织代码

Skill 描述 适甚场景
python-cola-skill Python 版 COLA 架构指南 Flask、FastAPI 项目
java-cola-skill Java 版 COLA 架构指南 Spring Boot 项目

🎯 实践案䟋vibe-blog 项目重构

以䞋是我的及䞀䞪匀源项目 vibe-blog 的真实重构案䟋。

vibe-blog 是䞀䞪基于倚 Agent 架构的"长文䞓䞚博客"创䜜助手支持深床调研、智胜配囟、Mermaid 囟衚、代码集成等写䜜胜力。

䞺什么芁重构

vibe-blog 前期匀发倄于探玢阶段90% 的代码郜是通过 Vibe Coding 完成。由于暡型生成代码的倩性䜿然——只䌚新增和堆积䞍䌚自己做重构和䌘化(没有项目的记忆, 䞊䞋文有限等等因玠)。

迭代䞀段时闎后敎䞪代码库越来越混乱富臎

  • 暡型需芁加蜜的无效䞊䞋文越来越倚速床慢
  • 倧量无效 Token 是䞀笔蟃倧的匀销
  • 无意义的代码充斥䞊䞋文富臎生成的代码莚量也埈差
  • 项目可绎技性差, 䜜䞺䞀䞪项目的匀发者我有时候对䞀些功胜的实现也埈困惑, 代码攟哪儿了这是? 扟到代码后, 尌玛,怎么攟圚这䞪暡块䞋了.

䞺了扭蜬这䞀局面我䜿甚 python-cola-skill 对敎䞪 vibe-blog 进行重构。

重构前混乱的代码库

backend/
├── app.py                           # 😱 108KB 巚型文件2695行- 50+ 䞪路由党圚这里
├── config.py                        # 7KB 配眮文件
│
├── services/                        # 扁平化服务层15+ 䞪服务文件混圚䞀起
│   ├── blog_generator/              # 博客生成子暡块
│   │   ├── agents/                  # 9 䞪 Agentplanner, writer, artist...
│   │   ├── templates/               # 36 䞪 Jinja2 暡板第1倄暡板目圕
│   │   ├── prompts/                 # 第2倄暡板目圕重倍
│   │   ├── blog_service.py          # 47KB
│   │   └── generator.py             # 21KB
│   │
│   ├── prompts/                     # 第3倄暡板目圕又重倍
│   ├── publishers/                  # 发垃噚
│   ├── image_styles/                # 囟片风栌第4倄暡板目圕
│   │
│   ├── database_service.py          # 数据库操䜜
│   ├── xhs_service.py               # 小红乊服务
│   ├── book_scanner_service.py      # 乊籍扫描
│   ├── video_service.py             # 视频服务
│   ├── llm_service.py               # LLM 调甚
│   └── ...其他服务
│
└── vibe_reviewer/                   # 独立暡块第5倄暡板目圕

栞心痛点

问题 描述
🔎 å·šåž‹ app.py 2695 行50+ 䞪路由党郚堆圚䞀䞪文件
🔎 扁平化服务层 所有服务平铺职莣䞍枅、䟝赖混乱
🔎 暡板目圕分散 templates/prompts 分散圚 5 䞪䞍同䜍眮
🔎 无分层架构 路由、䞚务逻蟑、数据访问混圚䞀起

重构后枅晰的 COLA 架构

backend/
├── api/                              # 接口层Controller
│   ├── routes/
│   │   ├── blog_routes.py            # 博客生成路由
│   │   ├── xhs_routes.py             # 小红乊路由
│   │   ├── book_routes.py            # 乊籍管理路由
│   │   └── ...12 䞪路由暡块
│   └── middlewares/
│       └── error_handler.py          # 统䞀错误倄理
│
├── application/                      # 应甚层甚䟋猖排
│   ├── blog_application.py           # 博客生成甚䟋
│   ├── xhs_application.py            # 小红乊甚䟋
│   └── ...5 䞪甚䟋服务
│
├── domain/                           # 领域层栞心䞚务
│   ├── blog/
│   │   ├── entities.py               # Blog, Section 实䜓
│   │   ├── value_objects.py          # ArticleType 倌对象
│   │   └── agents/                   # 领域服务
│   ├── xhs/
│   └── book/
│
├── infrastructure/                   # 基础讟斜层
│   ├── persistence/                  # 持久化
│   ├── external/                     # 倖郚服务LLM、OSS
│   └── prompts/                      # 统䞀管理所有暡板
│
└── app.py                            # 只做初始化和路由泚册~50行

重构效果

指标 重构前 重构后
app.py 行数 2695 行 ~50 行
路由暡块 1 䞪巚型文件 12 䞪独立暡块
暡板目圕 分散 5 倄 统䞀 1 倄
可测试性 隟以单测 领域层可独立测试
新人䞊手 需芁 1 呚 需芁 1 倩

🚀 快速匀始

安装

方法䞀Git 克隆掚荐

# 克隆敎䞪仓库到 skills 目圕
git clone https://github.com/lailoo/cola-DDD-skill.git ~/.claude/skills/cola-DDD-skill

方法二手劚安装

  1. 䞋蜜本项目的 ZIP 文件
  2. 将 skill 文件倹倍制到 Claude Code 的 skills 目圕
    • macOS/Linux: ~/.claude/skills/
    • Windows: %USERPROFILE%\.claude\skills\

䜿甚

圓䜠提到以䞋关键词时Skill 䌚被自劚激掻

  • 通甚COLA、DDD、分层架构、敎掁架构、六蟹圢架构、Gateway 暡匏
  • PythonPython DDD、Flask 架构、FastAPI 架构
  • JavaJava DDD、Spring Boot 架构、Maven 倚暡块

䜿甚瀺䟋

请垮我甚 COLA 架构创建䞀䞪 Flask 甚户管理系统
我有䞀䞪 Spring Boot 单䜓应甚请垮我按 COLA 架构重构

📚 COLA 架构诊解

劂果䜠想深入了解 COLA 架构的讟计思想请继续阅读。

䞺什么需芁分层

䜠有没有见过那种"䞊垝类"䞀䞪 XXXService.java 几千行代码从接收请求、校验参数、调甚数据库、发送消息、返回结果党郜塞圚䞀起。改䞀䞪小功胜埗把敎䞪文件翻䞀遍生怕改错了哪里。

分层的本莚是"分而治之"。

就像䜠䞍䌚让前端工皋垈去写 SQL也䞍䌚让 DBA 去调 CSS 䞀样——每䞪人䞓泚自己擅长的事情效率最高。代码也是劂歀

  • 接口层䞓泚于接收请求、返回响应
  • 䞚务层䞓泚于栞心逻蟑计算
  • 数据层䞓泚于存取数据

各叞其职互䞍干扰。改数据库䞍圱响䞚务逻蟑换前端框架䞍甚劚后端代码。这背后䜓现了几䞪重芁的讟计原则

  • 封装䞋层对䞊层屏蔜实现细节䞊层䞍需芁知道数据是存圚 MySQL 还是 Redis
  • 单䞀职莣每䞀层只做䞀件事职莣蟹界枅晰
  • 高内聚䜎耊合盞关代码聚圚䞀起䞍盞关的代码圌歀隔犻

最终目的从而避免䞍断堆出来倧䞀统的屎山代码文件, 比劂某䞪几千行的 serviceç±».。

䞺什么需芁 COLA

分层架构的思想倧家郜懂六蟹圢、掋葱圈、敎掁架构  抂念䞀倧堆。䜆问题是具䜓怎么萜地

  • 这䞪类应该攟圚哪䞪包䞋
  • Gateway 和 Repository 有什么区别
  • Command 和 Query 芁䞍芁分匀
  • DTO、VO、DO、Entity 到底怎么蜬换

埈倚架构文章讲完思想就结束了留䞋䞀脞懵逌的䜠。

COLA 䞍䞀样。 它䞍仅告诉䜠"应该分层"还告诉䜠

  • 每䞀层叫什么名字
  • 每䞀层攟什么代码
  • 类应该怎么呜名
  • 甚至提䟛了脚手架䞀键生成标准目圕结构

这就是 COLA 的价倌——从理论到实践的最后䞀公里。

问题 COLA 的解决方案
🔎 䞚务逻蟑散萜各倄 领域层集䞭管理栞心䞚务逻蟑
🔎 技术实现䞎䞚务耊合 分层架构解耊Infrastructure 实现 Domain 接口
🔎 代码隟以测试 䟝赖倒眮Domain 层无倖郚䟝赖易于单测
🔎 新人䞊手困隟 标准化目圕结构和呜名规范
🔎 重构成本高 枅晰的蟹界改劚圱响范囎可控

分层结构

COLA 将应甚分䞺四层每䞀层郜有明确的职莣定义

层级 职莣 倧癜话解释
Adapter 层适配层 莟莣对前端展瀺web、wireless、wap的路由和适配 就是 MVC 侭的 Controller接收请求、返回响应
App 层应甚层 获取蟓入、组装䞊䞋文、参数校验、调甚领域层做䞚务倄理 猖排调床员䞍干掻只莟莣协调各方
Domain 层领域层 封装栞心䞚务逻蟑提䟛䞚务实䜓和䞚务逻蟑计算 真正干掻的地方䞍䟝赖任䜕其他层
Infrastructure 层基础讟斜层 倄理技术细节数据库 CRUD、搜玢匕擎、RPC 等 脏掻环掻郜圚这里倖郚䟝赖通过 Gateway 蜬义后才胜被䞊层䜿甚
                        ┌─────────────────────────────────────┐
  Driving Adapter:      │  浏览噚  │  定时噚  │  消息队列      │
                        └─────────────────────────────────────┘
                                         ↓
  VO ←─────────────── ┌─────────────────────────────────────┐
  (View Object)       │            Adapter 层                │
                      │  controller │ scheduler │ consumer   │
                      └─────────────────────────────────────┘
                                         ↓
  DTO ←────────────── ┌─────────────────────────────────────┐
  (Data Transfer      │              App 层                  │
   Object)            │       service  │  executor           │
                      └─────────────────────────────────────┘
                                         ↓
  Entity ←─────────── ┌─────────────────────────────────────┐
                      │            Domain 层                 │
                      │   gateway │ model │ ability          │
                      └─────────────────────────────────────┘
                                         ↑
  DO ←─────────────── ┌─────────────────────────────────────┐
  (Data Object)       │        Infrastructure 层             │
                      │  gatewayImpl │ mapper │ config       │
                      └─────────────────────────────────────┘
                                         ↓
  Driven Adapter:     │    DB    │   Search   │    RPC      │

💡 参考来源COLA 4.0应甚架构的最䜳实践

䟝赖方向䞺什么 Domain 层最特殊

Adapter → App → Domain ← Infrastructure
              ↘      ↙
               Client

泚意看箭倎方向

规则 解释
Domain 层䞍䟝赖任䜕层 纯䞚务逻蟑可以独立测试䞍需芁启劚数据库
Infrastructure 䟝赖 Domain Infrastructure 实现 Domain 定义的 Gateway 接口䟝赖倒眮
Client 被所有层䟝赖 Client 层定义了 DTO数据䌠蟓对象倧家郜芁甚

䞺什么这样讟计

假讟有䞀倩䜠芁把 MySQL 换成 PostgreSQL

  • ❌ 䌠统做法Domain 层盎接调甚 MySQL换数据库芁改䞚务代码
  • ✅ COLA 做法Domain 层只调甚 Gateway 接口换数据库只需芁改 Infrastructure 层的实现

这就是䟝赖倒眮的嚁力——栞心䞚务䞍受技术选型的圱响。


COLA 组件可选增区

COLA 还提䟛了䞀些匀箱即甚的组件按需匕入

组件 甹途 䜿甚场景
DTO 统䞀的 Response、Command、Query 基类 所有项目
Exception 统䞀匂垞倄理 所有项目
Extension 扩展点机制 倚䞚务线、倚租户
StateMachine 状态机 订单状态流蜬、审批流皋
CatchLog 匂垞捕获和日志 简化 try-catch
RuleEngine 规则匕擎 倍杂䞚务规则

COLA Archetypes项目脚手架

䞍想手劚创建目圕COLA 提䟛了䞀种脚手架䞀键生成标准项目结构

Archetype 甹途 包含暡块
cola-archetype-web Web 应甚有前端接口 adapter, app, client, domain, infrastructure, start
cola-archetype-service 纯后端服务RPC/Dubbo app, client, domain, infrastructure, start
# 创建 Web 应甚
mvn archetype:generate \
  -DarchetypeGroupId=com.alibaba.cola \
  -DarchetypeArtifactId=cola-framework-archetype-web \
  -DarchetypeVersion=4.3.1

💡 参考来源COLA 4.0应甚架构的最䜳实践

呜名规范

类型 Python 后猀 Java 后猀
呜什 _cmd Cmd
查询 _qry Qry
呜什执行噚 _cmd_exe CmdExe
查询执行噚 _qry_exe QryExe
客户端对象 _co CO
服务接口 _service_i ServiceI
服务实现 _service ServiceImpl
眑关接口 _gateway Gateway
眑关实现 _gateway_impl GatewayImpl
蜬换噚 _convertor Convertor

📁 文件诎明

cola-DDD-skill/
├── README.md                    # 本诎明文档
├── python-cola-skill/
│   ├── SKILL.md                 # Python COLA 技胜定义
│   └── references/
│       ├── dto.md               # Response、Command、Query、CO 暡板
│       ├── service.md           # Service 和执行噚暡板
│       ├── gateway.md           # Gateway 暡匏暡板
│       └── example.md           # 完敎甚户管理瀺䟋
└── java-cola-skill/
    ├── SKILL.md                 # Java COLA 技胜定义
    └── references/
        ├── dto.md               # Response、Command、Query、CO 暡板
        ├── service.md           # Service 和执行噚暡板
        ├── gateway.md           # Gateway 暡匏暡板
        └── example.md           # 完敎瀺䟋 + Maven 配眮

🔗 参考资源


🀝 莡献

欢迎提亀 Issue 或 Pull Request 来改进这些 Skills。

  1. Fork 本仓库
  2. 创建䜠的特性分支 (git checkout -b feature/amazing-feature)
  3. 提亀䜠的曎改 (git commit -m 'Add some amazing feature')
  4. 掚送到分支 (git push origin feature/amazing-feature)
  5. 打匀䞀䞪 Pull Request

📄 讞可

MIT License


提瀺 这些 Skills 旚圚提䟛架构指富而非区制规范。根据项目实际情况灵掻调敎保持代码敎掁和可绎技性才是最终目标。