Skip to content

如何 AI Coding

这篇文章讨论程序员如何与 AI 协作完成一个项目(基于当前的 agentic coding 方法)。

核心目标只有两个:

  1. 让 AI 能持续推进具体工作。
  2. 让 AI 不容易跑偏,且跑偏后能被及时发现和纠正。

AI Coding 不仅是“让 AI 帮忙写代码”,更重要的是为 AI 提供清晰的边界、稳定的上下文和可验证的目标。

总体原则

1. 关键操作由人决策,低风险任务交给 AI 处理

程序员负责目标、边界、风险取舍和关键操作确认。

AI 负责信息整理、任务拆解、实现、测试、调试和文档同步。

决策按风险分级:

  • 低风险任务由 AI 处理,例如局部实现、补测试、修 lint、更新普通文档。
  • 中风险任务由 AI 执行后提交结果,由程序员评审,例如跨模块重构、较大范围改动。
  • 高风险任务必须由程序员确认,例如合并主分支、发布、回滚、删除数据、修改关键配置。

2. 事实优先于文档

文档很重要,但要以事实为准。

当文档、代码、测试和运行结果冲突时,应优先相信更接近事实的东西。通常优先级如下:

  1. 运行结果、报错、测试结果
  2. 当前代码和配置
  3. 工程约束、决策记录、技术方案
  4. 需求说明和历史文档

也就是说,文档用来减少跑偏,代码和验证结果用来纠偏。

3. 先验证再更新文档

AI Coding 的核心不是“先写很多说明”,而是“先把目标和验收条件说清,然后快速验证”。

每轮任务至少要明确三件事:

  • 目标是什么
  • 边界是什么
  • 验收标准是什么

AI 完成实现后,应该先验证结果,再更新主文档。不要把尚未验证的假设直接写成事实。

4. 文档要少,但必须有用

太多文档会给 AI 带来噪声,不要刻意追求完整,保证给 AI 提供足够的稳定上下文即可。

如果一份文档不能帮助 AI 更准确地做决定、约束边界或完成验证,那它大概率就不该存在。

推荐流程

1. 先建立最小协作上下文

一个新项目开始时,先准备最小但必要的上下文:

  • 项目要解决什么问题
  • 当前版本做什么、不做什么
  • 有哪些工程约束和禁区
  • 哪些操作 AI 不能直接做
  • 当前任务如何验证完成

这一步的目标是让 AI 从最开始就有边界。

2. 让 AI 在边界内执行

AI 接到任务后,默认按下面的顺序工作:

  1. 读取当前任务所需的最小上下文
  2. 明确缺失信息、假设和风险
  3. 实现、构建、测试、调试
  4. 输出变更说明、验证结果和剩余风险
  5. 在确认结果成立后更新文档

这一步的目标是让 AI 每一轮都能闭环。

3. 人只在关键节点介入

程序员不需要盯着 AI 的每一步,而应该集中在以下节点:

  • 目标是否合理
  • 边界是否清晰
  • 风险是否可接受
  • 验证结果是否可信
  • 是否允许进入高风险操作

文档结构

适合 AI Coding 的文档结构,通常分成三层就够了。

1. 主文档

主文档记录当前仍然有效的长期信息,应该直接更新,不保留过时内容作为当前上下文。

通常包括:

  • 项目简报
  • 技术方案
  • 工程约束
  • 架构说明

2. 当前任务文档

这是最容易被忽略,但对 AI 最重要的一层。

它只服务当前迭代,回答这轮到底要做什么。

建议包含:

  • 本轮目标
  • 范围和非目标
  • 验收标准
  • 风险点
  • 验证命令或验证方式

如果没有这层文档,AI 往往会从长期文档中自行猜测当前任务边界。

3. 决策记录

决策记录只回答一件事:为什么这样做。

它适合追加,不适合覆盖。因为它保存的是当时的判断依据,而不是当前状态。

最小文档集合

多数项目在开始阶段,4 份文档已经够用:

  1. 项目简报:为什么做、给谁做、做到什么程度算成功。
  2. 任务文档:当前版本或当前迭代具体做什么、不做什么、如何验收。
  3. 技术方案:如何实现、模块怎么划分、主要风险是什么。
  4. 工程约束:目录、命名、测试、配置、禁止事项、评审和发布规则。

决策记录按需增加,不必一开始就写很多。

什么不该写进文档

下面这些内容如果提前写太多,通常只会制造噪音:

  • 没有近期价值的远期规划
  • 还没验证的实现细节
  • 只在短期内有效的临时讨论
  • 与当前任务无关的大段背景说明
  • AI 无法据此做出更好决策的空泛规则

文档应该服务执行,而不是替代执行。

一句话总结

AI Coding 在今天的重点,不是让 AI 参与编程,而是让 AI 在明确边界内推进工作,并始终被验证、约束和纠偏。