diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..9acfbe6 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,27 @@ +# Kratos Layout Agent 指南 + +## 目的 +本文档用于定义 AI Agent 或开发助手在 Kratos 项目中的工作规范。 确保所有代码符合 Kratos 项目结构,保持清晰的分层架构,提高代码可维护性与一致性。适用于:代码生成、功能开发、重构、API 设计与修改、配置变更、测试与文档 + +## 核心原则 +- 面向职责分包:代码必须按职责划分,而不是随意命名; +- 分层必须严格:必须保证,业务逻辑、数据访问、接口层彻底分离; +- 最小变更原则:实现需求时,修改最少文件、保持现有风格、不随意重构架构; +- 不修改生成代码:禁止直接修改 protobuf、wire 等生成文件,如需修改应调整源文件并重新生成; +- 代码风格一致:必须遵守 Go 语言规范,保持代码风格一致,避免引入不必要的依赖或复杂性。 + +## 项目布局 +必需遵守 Kratos 官方推荐的项目布局,顶层目录包含: +- `api/`:基于 protobuf 的接口、Data Transfer Object(DTO)、错误定义等,接口文件放在 `api/{domain}/{version}/` 下,不写业务逻辑,不包含数据库结构。新增、修改接口时:先修改 proto 文件,必须保持向后兼容、通过`make api`命令生成更新。 +- `cmd/`:程序入口,用于生命周期管理,依赖注入初始化,加载配置等,保持简洁,不允许包含业务逻辑。 +- `configs/`:配置文件,不允许包含敏感信息,保持结构清晰。 +- `internal/`:业务代码(私有),所有业务逻辑、数据访问、服务实现等都放在这里,禁止直接暴露给外部。 + - `biz/`:核心业务层,遵守 ** Zero dependencies ** 原则,包含 usecase、domain model(DO) 和 repo 接口定义,不依赖 service 和 data,不使用 proto 结构。 + - `data/`: 数据访问层,包含数据库访问、外部 API 调用等实现,实现 biz 层 repo 接口定义,禁止包含业务逻辑。 + - `service/`:接口实现层,包含 gRPC、HTTP 等接口实现,负责请求编排、参数校验、DTO 到 DO 转换。调用 biz 层实现业务逻辑,不允许包含复杂业务逻辑。 + - `server/`: HTTP/gRPC 服务器实现,包含路由、服务、中间件注册等,保持简洁,不允许包含业务逻辑。 + - `conf/`: 使用 proto 定义的配置结构体,保持与 `configs/` 目录下的配置文件一致,使用 `make config` 命令生成更新。 +- `third_party/`:第三方 proto +必须保持该目录结构,不允许随意新增或删除顶层目录,以保证项目的规范性和可维护性。 + +› \ No newline at end of file