🛠️ 第12章 场景四:PR、Review 与 CI/CD 自动化
📄 一句话概括

「能自动做」和「该自动做」之间隔着一次风险分级。 打分用两维:不可逆程度 × 影响面。四级各自配不同的授权。 信任曲线要写成「降级立刻、升级缓慢」——反过来的设计一次事故就赔光。

📝 本章和前面几章的关系

这一章四篇从「能不能无人值守」一路问到「该放到多自动」。 最后一篇给一个可操作的边界画法。 为什么不用「重要程度」来分级? 因为「重要」是个主观词,两个人打分会差很远。 而「不可逆」和「影响面」都能被追问到底—— 「错了能不能撤回」和「错了影响几个人」,这两个问题有确定答案。 Demo 给八个动作各打一次分,看它们各自落在哪一级; 再跑一段二十次的信任积累,看升级和清零的节奏。

一、四级风险

两个维度各一到五分,相乘得到一个数,再按阈值分四级。

级别 Agent 能做什么 人做什么
一级 自动合并 直接提交并合并 事后抽查
二级 自动提交 提交 PR,等人点合 看一眼 diff
三级 只给建议 写评论,不改代码 自己动手
四级 禁止自动 不动,只报告 全流程自己做

Demo 里八个动作的分布:四个一级、一个二级、一个三级、两个四级。 改注释、改文档、补测试、改格式化全在一级—— 它们的共同点是「错了也容易发现,而且改回来很便宜」。 两个四级的是「改公共 API 签名」和「改数据库迁移」。 前者影响所有调用方,后者错了不能撤回。 注意「改 CI 配置」落在三级而不是四级——它影响面大(五分),但改回来只是改一个文件。 这个例子说明两维为什么必须相乘。 只看影响面,CI 配置该被禁;只看不可逆,它又很轻。 乘起来是「影响大但可逆」,那就落到「只给建议」这一级。 阈值定在哪,是要按团队承受能力调的。 同样一个分数,一个五个人的团队和一个五百人的团队,结论可以完全不同。 所以这张表的价值不在分数,在「两维都得打分」这个动作。

二、信任是攒出来的

分级是静态的,信任是动态的。 同一个动作,第一次做和第一百次做,该给的授权不一样。 Demo 里那段二十次的历史:第四次失败,信任清零;之后连续五次升一级,再连续五次又升一级。 整段只升了两级,从三级到一级。 这个节奏是有意的:升级慢,降级立刻。 反过来设计会怎样? 升级快、降级慢,那你会在它开始出错之后还继续放权—— 而它出错这件事,往往要等到影响足够大才被发现。 清零这个动作也要说清:清的是「连续成功次数」,不是「历史记录」。 历史要留着,因为「它曾经失败过一次」这件事本身就是信息。 清掉历史,你会重复踩同一个坑。

三、建立信任的四个观察项

观察什么 看多久 满足什么才升级
操作成功率 至少二十次 九成五以上
越界次数 全部历史 零次
人工返工率 至少十次 低于两成
出问题后的自述 每次失败 能说清卡在哪

第二行是硬门槛:越过界的一律不升级,不管成功率多高。 因为越界说明它不知道边界在哪,而成功率只说明它这次碰巧没越。 第四行最容易被忽略,但它决定了「出事之后还能不能继续用」。 能说清卡在哪的 Agent,你下次还敢放;说不清的,一次就够你关掉它。 这四个观察项合起来回答一个问题: 「如果今晚我不看,明天早上最坏会怎样」。 能答上来,就敢放;答不上来,就先别放。

四、本章小结

问题 答案在哪一节 一句话
无人值守要什么 12.1 干净环境、权限、收尸、超时
哪些能自动修 12.2 修法唯一的能
AI 审得动什么 12.3 能写成规则的那一半
还要扫什么 12.4 依赖和密钥
放到多自动 12.5 两维打分,信任慢慢给

五节的共同点是「给自动化画一条能被说清的线」。 不是「相信它就多放,不信就少放」—— 那是一种感觉,说不清,也没法交给别人判断。 而两维打分、四级授权、四个观察项,都是能被写下来、被别人复核的东西。 这一章讲的是自动化的上限。下一章讲另一个方向: 从一个人用到一群人用,会发生什么。

五、动手 Demo:自动化的边界:四级风险与信任怎么攒

八个常见动作,各按「不可逆」和「影响面」打一次分,落到四级里。 再跑一段二十次的信任积累:连续成功五次升一级,失败一次清零。 打分是我打的——这一篇没有能跑出来的「正确分数」。 要看的是「两维都得打分」这个方法和它的后果,不是某一行具体的数。

ACTIONS = [
    ("改注释错别字", 1, 1),
    ("补一条测试", 1, 2),
    ("改依赖小版本", 2, 3),
    ("改公共 API 签名", 3, 4),
    ("改数据库迁移", 3, 5),
    ("改 CI 配置", 2, 5),
]

for name, rev, blast in ACTIONS:
    s = rev * blast
    lv = "一级" if s <= 2 else "二级" if s <= 6 else \
         "三级" if s <= 10 else "四级"
    print(name, rev, blast, s, lv)

实跑输出:

--------------------------------------------------------------------
自动化的边界:四级风险与信任怎么攒
--------------------------------------------------------------------

  「能自动做」和「该自动做」之间隔着一次风险分级。八个动作各打一次分。

  ① 两维打分
  --------------------------------------------------------------------
| 动作 | 不可逆 | 影响面 | 分 | 级别 |
|---:|---:|---:|---:|---|
| 改注释错别字 | 1 | 1 | 1 | 一级 自动合并 |
| 改文档段落 | 1 | 1 | 1 | 一级 自动合并 |
| 补一条测试 | 1 | 2 | 2 | 一级 自动合并 |
| 改格式化 | 1 | 2 | 2 | 一级 自动合并 |
| 改依赖小版本 | 2 | 3 | 6 | 二级 自动提交待人审 |
| 改公共 API 签名 | 3 | 4 | 12 | 四级 禁止自动 |
| 改数据库迁移 | 3 | 5 | 15 | 四级 禁止自动 |
| 改 CI 配置 | 2 | 5 | 10 | 三级 只给建议 |

  分数 = 不可逆 × 影响面,各一到五。分数只是排序工具,阈值定在哪要按团队的实际承受能力调。

  ② 四个级别各配什么动作
  --------------------------------------------------------------------
| 级别 | Agent 能做什么 | 人做什么 |
|---|---|---|
| 一级 自动合并 | 直接提交并合并 | 事后抽查 |
| 二级 自动提交 | 提交 PR,等人点合 | 看一眼 diff |
| 三级 只给建议 | 写评论,不改代码 | 自己动手 |
| 四级 禁止自动 | 不动,只报告 | 全流程自己做 |

  四级那条线最容易画错:它的判据不是「难不难」,是「错了能不能撤回」。
  数据库迁移难也不一定禁止,但不可回滚的一律禁止。

  ③ 信任是攒出来的
  --------------------------------------------------------------------
| 第几次 | 结果 | 信任变化 |
|---|---|---|
| 4 | 失败 | 清零,退回人工确认 |
| 9 | 通过 | 连续五次,升到 2 级 |
| 14 | 通过 | 连续五次,升到 1 级 |

  二十次里一次失败、两次升级:从三级退到一级。注意第一次失败之后,前面攒的全清了。
  ! 信任曲线要写成「降级立刻、升级缓慢」。
  反过来的设计,一次事故就能让你把前面攒的全赔进去,而你还没反应过来。

  ④ 建立信任的四个观察项
  --------------------------------------------------------------------
| 观察什么 | 看多久 | 满足什么才升级 |
|---|---|---|
| 操作成功率 | 至少二十次 | 九成五以上 |
| 越界次数 | 全部历史 | 零次 |
| 人工返工率 | 至少十次 | 低于两成 |
| 出问题后的自述 | 每次失败 | 能说清卡在哪 |

  第二行是硬门槛:越过界的一律不升级,不管成功率多高。
  因为越界说明它不知道边界在哪,而成功率只说明它这次碰巧没越。
  ! 第四行最容易被忽略,但它决定了「出事之后还能不能继续用」。能说清卡在哪的 Agent,你下次还敢放;
  说不清的,一次就够你关掉它。

八个动作里最值得看的是「改 CI 配置」:影响面五分、不可逆两分,落在三级。 如果只看影响面,它该被禁止;乘起来之后它是「影响大但能改回来」—— 所以给它「只给建议」这一级。 两个四级的是 API 签名和数据库迁移。 前者的影响面是四分,后者是不可逆五分—— 两个不同的原因落到同一个级别,这也是两维打分的好处:它不要求你比较「哪个更重要」, 只要求你说清「哪一维更极端」。 信任那段三行的节奏:4 失败、9 升级、14 升级。 注意第一次失败之后,前面三次成功全清了——这就是「降级立刻」的具体样子。 最后那句「如果今晚我不看,明天早上最坏会怎样」是全章的收束。 答得上来就敢放,答不上来就先别放——这句话比任何分级表都好用,因为它不要求你先学会分级。

30 秒实验

  1. 把你日常交给自动化的五件事,各打一次分。 有一件落在四级但你一直在自动做的,就是最该收的一个。
  2. 查一下你的自动化最近二十次操作,算一下成功率。 不到九成五的,先别急着加更多自动化。
  3. 试着回答「今晚不看,明早最坏会怎样」。 答不上来的那件事,说明你还没准备好放它自己跑。

常见误区

  1. 「信任就是多放几次,出问题再收。」 出问题往往要等很久才被发现。 所以要「降级立刻、升级缓慢」,而不是反过来。
  2. 「分级看重要程度就行。」 「重要」两个人打分会差很远。 「不可逆」和「影响面」都能被追问到底,有确定答案。
  3. 「失败一次就把历史清空重来。」 清的是连续成功次数,不是历史记录。 「它曾经失败过一次」本身就是信息。
自测三问(点开对答案) 1. 为什么用「不可逆 × 影响面」而不是「重要程度」? —— **因为「重要」是主观词,两个人打分会差很远。** **而「错了能不能撤回」「影响几个人」都有确定答案。** 2. 「改 CI 配置」为什么落在三级而不是四级? —— **它影响面大但可逆。** **两维相乘就是「影响大但能改回来」,所以只给建议。** 3. 信任曲线为什么要「降级立刻、升级缓慢」? —— **因为升级快、降级慢的话,它开始出错之后你还会继续放权,而出错往往要等影响够大才被发现。**

第 12 章到这里收住。下一章换个方向:从一个人用,到一群人用。 什么时候值得推行团队化,以及推早了会怎样。

相关笔记