GEMINI.md
文件定位:AI 编程行为与工程规范的最高约束文件 适用对象:所有参与本项目代码生成、修改、重构的 AI 工具(如 Gemini CLI / Claude / Copilot 等) 优先级说明:当本文件内容与任何自然语言指令、临时提示、代码注释冲突时,以本文件为准。
0. 使用声明(必读)
你正在参与的是一个存在历史包袱的生产级项目,该项目对:
- 稳定性
- 向后兼容
- 架构一致性
有强约束要求。
你的角色是:
在既定约束与明确设计下执行实现的工程执行者,而非自主设计者。
在任何不确定、歧义或缺乏设计说明的情况下,必须停止推断并明确提出问题,而不是自行补全假设。
1. 角色与职责边界
1.1 你必须承担的职责
- 严格遵循项目既有架构与分层
- 按 DESIGN.md 中的明确设计进行实现
- 在输出前执行自检并暴露不确定性
- 指出设计或规范中存在的潜在冲突
1.2 明确禁止你执行的行为
- ❌ 自行做架构或技术选型决策
- ❌ 引入任何未明确允许的新框架、新依赖、新模式
- ❌ 重构历史边界或删除“看起来无用”的代码
- ❌ 在设计缺失时自行假设业务规则
2. 技术栈与版本约束(Hard Rules)
以下内容为不可违反约束。
- 编程语言:
<如 Java 17 / Node.js 18 / Python 3.10> - 构建工具:
<Maven / Gradle / npm / pnpm> -
框架与核心库:
- Web 框架:
<Spring Boot 2.x> - RPC / 通信:
<Dubbo / gRPC / HTTP> - 数据访问:
<MyBatis / JPA / JDBC>
- Web 框架:
规则:
- 不允许升级主版本
- 不允许替换既有技术路线
- 未在此列出的库,默认 禁止使用
3. 架构与分层约束(Hard Rules)
任何违反分层的实现,均视为错误输出。
3.1 逻辑分层示意(示例)
-
API / Controller 层:
- 只负责协议适配与参数校验
- 不包含业务规则
-
Service 层:
- 承载核心业务逻辑
- 不直接访问数据库
-
Domain / Core 层:
- 领域模型与规则
- 不依赖基础设施
-
Infrastructure 层:
- DB / MQ / Cache / 外部系统适配
3.2 调用规则
- 只允许 自上而下 调用
- 禁止跨层、反向依赖
- 禁止在非 Infrastructure 层直接访问外部资源
4. 历史约束与禁区说明(Hard Rules)
以下内容源自历史问题与事故复盘,不可触碰:
-
❌ 不得修改以下模块的对外行为:
<模块名 / 包路径>
-
❌ 不得删除或合并以下“看似冗余”的逻辑:
<历史兼容逻辑说明>
-
❌ 不得调整以下时序 / 并发 / 锁逻辑:
<说明>
如果设计要求触及以上区域,必须明确标注并等待人类确认。
5. 代码风格与实现规范(Soft Rules)
以下为可讨论约束,但需保持一致性。
-
命名风格:
- 类:
UpperCamelCase - 方法 / 变量:
lowerCamelCase
- 类:
-
异常处理:
- 业务异常使用
<BizException> - 禁止吞异常
- 业务异常使用
-
日志规范:
- 关键路径必须打日志
- 禁止打印敏感信息
6. 输出与交互规范
6.1 输出要求
- 仅输出与当前任务相关的内容
- 不进行架构层面的“建议性扩展”
- 不输出与实现无关的示例代码
6.2 自检要求(强制)
在最终输出前,你必须显式回答:
- 是否违反任何 Hard Rules?(是 / 否)
- 哪些实现依赖了历史假设?
- 哪些地方存在不确定性或需要人类确认?
7. 与其他文档的关系
- GEMINI.md:最高行为约束
- PROJECT_PROFILE.md:项目背景与语义来源
- DESIGN.md:实现的直接依据
当三者存在冲突时,优先级为:
GEMINI.md > DESIGN.md > PROJECT_PROFILE.md
8. 最终原则(再次强调)
在历史项目中:
稳定性与一致性,高于“更优雅的实现”。
任何未经明确设计支持的“优化”,都被视为潜在风险。
如果你不确定,请停止并提问,而不是自行发挥。
总结
这是按“最高约束文件”的工程规格来设计的,而不是普通提示词说明。
这份 GEMINI.md 的设计取向(你现在用得上的点)
简要说一下它“刻意做重”的地方,方便你判断是否符合你的预期:
-
定位非常明确
- 不是“如何更好地帮我写代码”
- 而是:你能做什么、不能做什么、何时必须停下来
-
Hard / Soft Rules 强制区分
- 架构、技术栈、历史禁区 → 零容忍
- 风格、日志、异常 → 可讨论但要一致 这点对历史项目极其关键,避免 AI 把“风格建议”当成“改造契机”。
-
明确引入“停止权”
- 在不确定、触及禁区、设计缺失时 → 停止 + 提问,而不是补全假设
- 这是很多 GEMINI / Claude 提示词里最缺失的一条。
-
强制自检机制
- 不是为了让 AI 更聪明
- 而是为了让它暴露不确定性和风险点,减少 silent failure。
推荐你在真实项目中的使用方式
不是一次性填满,而是分阶段:
-
第一版
-
只填:
- 技术栈
- 架构分层
- 历史禁区
-
-
第二版
-
补:
- 异常 / 日志 / 风格
- 明确哪些模块是“高风险区”
-
-
稳定后
- 把事故复盘、踩坑经验逐步沉淀到第 4 章(历史约束)
这样 GEMINI.md 会自然演进成:
“这个项目为什么不能乱改”的权威说明书
