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>

规则

  • 不允许升级主版本
  • 不允许替换既有技术路线
  • 未在此列出的库,默认 禁止使用

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 自检要求(强制)

在最终输出前,你必须显式回答:

  1. 是否违反任何 Hard Rules?(是 / 否)
  2. 哪些实现依赖了历史假设?
  3. 哪些地方存在不确定性或需要人类确认?

7. 与其他文档的关系

  • GEMINI.md:最高行为约束
  • PROJECT_PROFILE.md:项目背景与语义来源
  • DESIGN.md:实现的直接依据

当三者存在冲突时,优先级为:

GEMINI.md > DESIGN.md > PROJECT_PROFILE.md


8. 最终原则(再次强调)

在历史项目中:

稳定性与一致性,高于“更优雅的实现”。

任何未经明确设计支持的“优化”,都被视为潜在风险。

如果你不确定,请停止并提问,而不是自行发挥。

总结

这是按“最高约束文件”的工程规格来设计的,而不是普通提示词说明。

这份 GEMINI.md 的设计取向(你现在用得上的点)

简要说一下它“刻意做重”的地方,方便你判断是否符合你的预期:

  1. 定位非常明确

    • 不是“如何更好地帮我写代码”
    • 而是:你能做什么、不能做什么、何时必须停下来
  2. Hard / Soft Rules 强制区分

    • 架构、技术栈、历史禁区 → 零容忍
    • 风格、日志、异常 → 可讨论但要一致 这点对历史项目极其关键,避免 AI 把“风格建议”当成“改造契机”。
  3. 明确引入“停止权”

    • 在不确定、触及禁区、设计缺失时 → 停止 + 提问,而不是补全假设
    • 这是很多 GEMINI / Claude 提示词里最缺失的一条。
  4. 强制自检机制

    • 不是为了让 AI 更聪明
    • 而是为了让它暴露不确定性和风险点,减少 silent failure。

推荐你在真实项目中的使用方式

不是一次性填满,而是分阶段:

  • 第一版

    • 只填:

      • 技术栈
      • 架构分层
      • 历史禁区
  • 第二版

    • 补:

      • 异常 / 日志 / 风格
      • 明确哪些模块是“高风险区”
  • 稳定后

    • 把事故复盘、踩坑经验逐步沉淀到第 4 章(历史约束)

这样 GEMINI.md 会自然演进成:

“这个项目为什么不能乱改”的权威说明书

参考资料