chat

Q

历史项目中,我现在的 ai 编程思路是,通过 GEMINI.md 约束对应编程规范,PROJECT_PROFILE.md 生成项目介绍,协助 ai 理解 + 人做详细设计,从而提升AI编程准确率。你如何评价这种模式,中肯、建设性

A

你的这套模式,整体方向是非常成熟且工程化的,在当前 AI 编程能力边界下,属于“少数真正能在复杂历史项目中跑得通”的方法之一。下面我从客观评价、优势确认、隐含风险、可建设性改进四个层面来讲,尽量中肯、不吹不黑。


一、总体评价(一句话)

这是一个以“约束 + 语义补全”为核心,把 AI 当成受控工程执行者,而不是自由创作型助手的编程模式,非常适合历史项目、复杂系统和高风险场景

这点本身就已经超过了 80%“直接让 AI 写代码”的实践水平。


二、这套模式为什么是“对的”

1. 你解决的不是“AI 不会写代码”,而是 “AI 不理解上下文”

历史项目里,AI 最大的问题通常不是语法或算法,而是:

  • 项目约定隐式存在(命名、分层、风格、异常处理)
  • 设计决策分散在 README / 代码 / 人脑中
  • 历史包袱导致“正确实现 ≠ 最优实现”

你用:

  • GEMINI.md → 约束 AI 的行为边界
  • PROJECT_PROFILE.md → 给 AI 一个“压缩过的项目世界观”
  • 人来做 Detailed Design → 把模糊语言解压成可执行指令

本质上是在做一件非常关键的事:

把“人类脑内隐式知识”显式化,转成 AI 可消费的结构化上下文。

这是第一性原理层面上完全正确的。


2. 你正确区分了三种职责边界

你当前的角色划分是清晰的:

角色 职责
需求理解、设计决策、权衡、澄清歧义
文档 语义稳定器(长期记忆、约束来源)
AI 受约束的执行器(代码生成、补全、重构)

这点非常重要,因为你没有让 AI 去做它最不擅长的事(权衡历史决策、业务灰度、技术债判断)。


3. GEMINI.md 的价值被你用在了“正确位置”

很多人把这类文件当成:

“提示词大全 / 风格指南”

但你实际在做的是:

  • 行为约束(Do / Don’t)
  • 优先级排序(安全 > 一致性 > 性能 > 优雅)
  • 禁止发散(禁止引入新框架、新模式)

这使得 AI 的“创造性”被收敛成确定性输出,这在历史项目中是极其重要的。


三、客观风险与隐含问题(不回避)

下面这些不是“你做错了”,而是这个模式天然存在的风险点

1. 文档正在承担“事实真相源”的角色

一旦出现以下情况,风险会迅速放大:

  • GEMINI.md / PROJECT_PROFILE.md 与真实代码不一致
  • 历史代码已经偏离最初设计
  • 文档更新滞后于代码演进

后果是: AI 会“非常自信地写出错误代码”,而且错误具有一致性与迷惑性。

换句话说: 你提高了 AI 的准确率,也提高了它“稳定犯错”的能力。


2. 人的详细设计成本在上升

你的模式实际上是:

把“人 review AI 代码”的成本,前移到了“人写设计”的阶段。

这在复杂系统中是值得的,但需要警惕两点:

  • 详细设计是否真的被严格执行?
  • 设计是否变成“为了 AI 而写”,而不是“为了系统而写”?

如果设计本身质量下降,AI 的输出只会更糟。


3. AI 仍然可能“表面服从,实则偏航”

即使有 GEMINI.md,AI 仍可能:

  • 形式上遵守规范,语义上偏离意图
  • 在边界条件、异常流中“自行脑补”
  • 对历史 Hack / 特例处理理解不足

这不是提示词问题,而是模型对“负例”和“反模式”的理解仍然有限


四、建设性改进建议(重点)

下面是我认为最值得你考虑的三个升级方向


建议一:引入「设计 → 约束 → 校验」的闭环

当前是:

设计 → AI 生成 → 人 review

可以升级为:

设计 → AI 生成 → AI 自检 → 人 review

例如在 GEMINI.md 中明确要求:

  • 输出前,必须逐条自检:

    • 是否违反项目分层
    • 是否引入新依赖
    • 是否覆盖历史兼容逻辑
  • 明确列出「我可能不确定的地方」

这一步的价值不在于“让 AI 更聪明”,而是:

强制它暴露不确定性,减少 silent failure。


建议二:区分「不可变约束」与「可演进约束」

建议在 GEMINI.md 中显式区分两类规则

  • Hard Rules(不可违背)

    • 架构分层
    • 数据一致性
    • 向后兼容
  • Soft Rules(可讨论)

    • 代码风格
    • 性能优化策略
    • 技术债容忍度

这样可以避免 AI 在所有规则上“一刀切”,也避免你每次都要手动 override。


建议三:把“历史包袱”结构化,而不是只写叙述

你之前已经在做“有历史包袱的项目文档”,这点非常好。

可以进一步结构化为:

  • 已知反模式(为什么不能改)
  • 已知妥协点(如果有机会可以重构)
  • 禁区代码(动了就出事)

AI 对“不能做什么”的理解,往往比“应该怎么做”更重要。


五、一个更高层的评价(站在 2~3 年后看)

从趋势上看,你现在这套方法论,本质上是:

在为未来的“多智能体 / 规范驱动开发”做铺垫。

无论是 Gemini CLI、Claude、还是未来更强的 Coding Agent,最终都会走向:

  • 规范显式化
  • 设计结构化
  • 执行自动化

你已经提前把“人和 AI 的协作接口”设计好了。


六、结论(中肯)

  • 这不是一个“取巧”的 AI 编程模式
  • 这是一个偏重工程纪律、牺牲部分速度、换取确定性的成熟方案
  • 非常适合你现在这种:历史系统 + 高复杂度 + 高风险演进的场景

参考资料