2793 字
约 9 分钟
15
S24-X12 · 一套可落地的 AI 编程 Playbook

同一个团队,五个人用同一个工具,产出质量的差距能有十倍。差距不在工具,在身上那套没写下来的习惯:有人习惯一次让模型改二十个文件,有人只改一个函数;有人把验收条件说清楚,有人只说"优化一下"。

Playbook 的作用就是把这套习惯从个人身上搬到仓库里,让它可评审、可执行、可迭代。


1. 要固化的五件事

只固化五件,多了没人看。

序号 事项 落成什么 谁维护
1 仓库约定 仓库根目录的规则文件 技术负责人
2 任务粒度 一条"单次改动上限"的约定 团队共识
3 验收标准 每个任务写明的可执行断言 任务发起人
4 评审关注点 一张固定的评审清单 评审人
5 禁区清单 规则文件里的禁止项 技术负责人

五件事的共同点:都能写成句子,都能被引用,都不依赖某个人的记忆。

第 3 项最容易漏。没有验收标准的任务,评审时争的就不是"对不对"而是"你觉得行不行"。


2. 任务粒度:一次一个可验收的小目标

经验法则一句话:一次改动的 diff,评审人能在十分钟内看完并给出结论。

拆到能验收的粒度,参考这几条:

判断 该做的 不该做的
涉及文件数 3–8 个文件,同属一个模块 跨五个模块"顺手一起改"
变更类型 只做一类(重命名、修类型、加测试) 重构 + 改功能 + 升依赖混在一起
验收方式 一条命令能判定 "看起来好多了"
出错时 能整段回滚 与上一轮改动纠缠

粒度太细也有成本:每个任务都要重建上下文,模型反复读同一批文件。合适的平衡点是"一个可独立回滚的变更"。

坏的拆分:把用户模块重构一下,顺便修掉 lint,再补点测试
好的拆分:1) 修 user/ 下的类型错误,不动逻辑
         2) 为 user/service 补三个边界用例
         3) 把 user/dto 的字段命名统一(纯重命名)

三条各自能跑、各自能回滚、各自能评审。


3. 提示的四段结构

固定四段:背景、目标、约束、验收。缺任何一段,模型都会用自己的默认值填补。

【背景】
仓库 PATH,Node + pnpm,测试命令 pnpm test,类型检查 pnpm tsc --noEmit。
相关模块:src/user/。已知约束:Node 版本见 .nvmrc。

【目标】
让 pnpm tsc --noEmit 在 src/user/ 下零错误,不改变运行时行为。

【约束】
- 只改 src/user/ 下的 .ts 文件
- 不改 export 出去的签名
- 不用 any、不用 @ts-ignore、不放宽 tsconfig
- 不升级依赖

【验收】
1. pnpm tsc --noEmit 退出码 0
2. pnpm test 全绿
3. git diff --stat 只涉及 src/user/

【失败处理】
同一文件修两次仍报错 → 停止该文件,记入 blocked.md,继续下一个。
段落 回答的问题 常见缺失后果
背景 环境是什么 命令全猜错,反复失败
目标 做到什么程度停 无限扩展,越改越多
约束 不许碰什么 用禁用手段"通过"
验收 怎么算完成 无法终止,也无法评审

照着改就是模板:把 PATH、命令、目录换成自己的,其余结构别动。结构比措辞重要——四个人用同一结构、不同措辞,产出仍然可比。


4. 评审看什么

不看格式(格式化工具管这个),看四样:

关注点 具体看什么 危险信号
边界条件 空值、空数组、超长输入、并发 只有 happy path 的处理
错误路径 异常被捕获后做了什么 catch {} 空块、吞掉错误
变更范围 是否只在约定目录 顺手改了无关文件
绕过痕迹 检查被禁用、断言被放宽 eslint-disable、skip、any

评审清单可以直接抄成模板:

- [ ] diff 范围符合任务约定
- [ ] 新增分支覆盖了空值/空集合/异常入参
- [ ] 错误路径有明确处理,没有空 catch
- [ ] 未出现 eslint-disable / ts-ignore / skip
- [ ] 新增逻辑有对应测试,且测试断言了行为而非实现
- [ ] 无与任务无关的格式化或重命名噪音

最后一条很实在:无关的格式化噪音会让真正的改动淹没在 diff 里,评审直接失效。


5. 度量三项:怎么知道 Playbook 有没有用

只量三项,且都能从现有流程里捞,不需要新工具。

指标 定义 数据来源 看趋势
返工率 因同一任务再次开单的比例 任务单/PR 的关联标记 上升说明提示或粒度有问题
评审意见类型分布 边界/错误路径/范围/风格 各占多少 评审评论打标签 风格类占比高 → 规则文件没落地
返工原因归类 需求没写清 / 约束漏了 / 模型能力 / 评审过严 返工单上勾选一项 前三类可改流程,第四类改标准

采集方式要轻,重了就没人填:

每次返工,在任务单上补一行:
rework_reason: spec_unclear | constraint_missing | model_limit | review_too_strict

三项指标的正确用法是看趋势不看绝对值。返工率 20% 是好是坏取决于基线;但它从 20% 涨到 35%,就一定要查。


6. 新人上手路径

不要一上来就让人"用 AI 重构模块"。分四步,每步都有明确的失败边界。

阶段 任务类型 权限 通过标准
1 只读分析:解释某模块、列出调用链 只读沙箱 结论能被老同事核对无误
2 写文档/注释/测试用例 可写但限目录 评审一次通过
3 单文件小改动(修类型、改命名) 工作区写 diff 范围零越界
4 跨文件改造 工作区写 + 评审 能自己写出验收条件

第一阶段最关键:只读任务能暴露这个人会不会提要求。要求写得含糊的人,在只读阶段就会拿到一堆没法核对的结论,这时候纠正成本最低。

第 4 阶段的门槛不是"会用工具",而是"能写出可执行的验收条件"。写不出验收条件的人,不该被允许跑无人值守的批量改动。


7. 把踩坑沉淀成规则文件,而不是群聊记录

群聊里的结论三天后就沉底。规则文件的价值是能被工具读到、能被评审引用。

放两处,分工不同:

AGENTS.md           # 仓库根目录:全局约定、禁区、验收口径
docs/ai-playbook.md # 细则:提示模板、评审清单、拆分示例

规则文件写什么、不写什么:

该写 不该写
构建/测试/检查的确切命令 "注意代码质量"
禁区:不许改的目录与文件 大段风格偏好
验收口径:什么算通过 具体某个人的经验
提交信息格式 已废弃的历史决策

一个能用的最小规则文件:

# 约定

## 命令
- 安装:pnpm i
- 测试:pnpm test
- 类型:pnpm tsc --noEmit
- Lint:pnpm lint

## 禁区
- 不改 pnpm-lock.yaml、tsconfig.json、CI 配置
- 不用 any / @ts-ignore / eslint-disable
- 不改测试断言来让测试通过

## 验收
一次改动必须同时满足:类型检查 0 错、测试全绿、diff 只在指定目录。

规则与真实评审标准必须一致。规则里写着"不许 any",评审时却放过了,规则文件两周内就会变成装饰品。宁可规则少三条,也不能有一条不执行。


8. 排错:四种"写了但没用"

现象 原因 处理
规则文件存在,产出照旧 没人读,也没被工具加载 在任务模板里引用它;让工具每次先读
规则与评审不一致 评审靠个人偏好 评审清单直接从规则文件生成
效率反而下降 约束过多,模型反复自我否决 删掉不可执行的条款,只留能判定对错的
新人不按流程走 上手路径缺失,直接上手大改造 按第 6 节补阶段门槛

第三行值得展开:把"代码要优雅""命名要语义化"这类条款写进规则,模型会反复重写同一段代码试图"更优雅",最后交出一个和原版没差别的版本,白烧一轮。规则只写能判定对错的东西。


9. 边界:Playbook 管不到的地方

需求 靠什么
需求是否该做 产品判断,不进 Playbook
架构分层与选型 设计文档 + 评审,规则文件只约束落地
跨团队接口契约 契约文件 + 双方评审
线上故障的应急改动 应急流程优先,事后补规则
个人能力的成长 上手路径 + 复盘,不是条款

一句话:Playbook 固化的是"重复的判断",不是"所有的判断"。 把它写成一部法典,团队会绕开它;写成三条能执行的约定,团队会用它。


10. 自测

  1. Playbook 要固化的五件事里,哪一件最容易被漏掉,漏了会怎样?
  2. 判断任务粒度是否合适的经验法则是什么?
  3. 提示四段结构中,"约束"段缺失会导致什么具体后果?
  4. 评审时"不看格式"看什么,列四项。
  5. 三项度量指标中,哪一项的上升最能说明提示写得不好?
  6. 为什么规则文件里不该写"代码要优雅"这类条款?
S24-X12 · 一套可落地的 AI 编程 Playbook
https://www.clxhxhhr.top/posts/5704/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。