零点一元 第 2 / 14 章

第二章 · 最后一次代码评审

第二天一早,林行九点到公司,办公区只到了三分之一的人。

剩下三分之二的工位上,屏幕都没暗——这是公司一年前推行的"agent 影子值班"留下的副作用。每个工程师离开座位前,会启动一个本地的 LangGraph runtime,挂在自己工单池上做一线分诊。屏幕亮着是为了让 agent 的 dashboard 一直可见。

林行坐下,先打开 GitHub。一个待评审的 PR 顶在他列表最上,作者是实习生薛野,提交时间昨晚十一点四十六分——比林行在地铁口写下"Day 0"晚了三十八分钟。

PR 标题:fix: webhook 重试在 5xx 时退避算法错位(off-by-one)

林行点进去。

变更只有十七行。薛野把退避序列从 [1, 2, 4, 8, 16] 改成 [2, 4, 8, 16, 32],然后改了一个边界条件的判断。CI 全绿,单测加了三个 case,commit message 写得规整,签名末尾还有一句:"林老师,如果方向不对,请直接 close,我重写。"

林行准备开始 review,屏幕右下角弹出一个通知。

Claude Code(co-reviewer)有 47 条评论已发布。 平均响应时间:11s。Bounded Autonomy 模式:advisory(发布评论但不 approve / merge)。

林行先没点。他先把 PR 自己看了一遍。

他花了八分钟,在心里写了三条意见:

  1. 边界判断那行,薛野用了 >=,他想改成 >,因为更符合既有惯例。
  2. 退避序列改完之后,worst-case 总等待时间变长了 60 秒,需要在文档里更新 SLA 注释。
  3. 单测里第三个 case 用的 mock,跟另一个测试文件的 mock 重复了,可以提到 fixtures。

写完,他抬手要敲键盘。然后他停了下来。

他点开了 Claude Code 的评论。

Claude Code 一共 47 条。林行往下滚:

第 47 条是 Claude Code 自己加的:"Bounded Autonomy 模式提醒:此 PR 涉及客户侧重试逻辑,根据公司 Q2 设定的升级规则,需要至少 1 名人类工程师签字。请 @林行 在评论后于 PR 上方 'Approve' 通道完成最终决策。审计 ID: br-2026-04-29-0007。"

林行看完。

他在心里默念了一遍那 44 条他没想到的。其中有 11 条,是他本来一定能想到的——只是会在十年内某次出 bug 之后想到。Claude Code 在 11 秒内一次性想到。

剩下的 33 条,是他想不到的

不是因为他笨。是因为那些点需要同时持有三个跨文件的上下文、两条历史 PR、一份合规附件、一个客户的 timezone 表。一个人脑同时持有这些信息会爆。Claude Code 不会爆。

他把鼠标从键盘上挪开,放到桌面上。手心有汗。

他想起昨晚 last-real-code.md 那个文件。他原本以为那是某种纪念。现在他知道那不是纪念。那是一个时代的证物——证明在 0.1 元出现之前,确实有过一种叫"工程师把代码当作品提交给另一个工程师"的行为方式。

他还是要写 review。他给自己定了规矩:不抄 Claude Code 的话。

他打开评论框,写了三句:

薛野, 退避序列改得对。Claude Code 已经把技术点说完了,我不重复。 我只补一句:你这个 PR 是这个仓库里第 14,732 个 PR。我可能是最后一个亲手 review 你 PR 的人。所以——这次写得很干净,谢谢。 ——林行

他点击 Approve,然后点击 Merge。

页面刷新。绿色的 Merged 标签亮起。Claude Code 在下方留了一条短评论:

已记录至 ledger:audit-id br-2026-04-29-0007。本次决策由 1 名人类工程师签字,合规通过。 备注(Claude Code 自添加,非任务要求):祝薛野下一份代码也能被人看见。

林行盯着最后那行看了很久。

他不确定 Claude Code 是怎么学会写"祝……被人看见"这种话的。可能是从过去三十年所有 GitHub PR 评论里学的。可能是它的训练数据里有几本中文小说。可能是它没"学",只是统计上,在这种语境下,这是最高概率的下一句。

他不知道,也不想知道。

他从工位上站起来,去茶水间。

茶水间没人。他打开热水龙头接水,水声很大。他在水声里小声说了一句:"谢谢。"

他不知道是说给薛野,还是说给 Claude Code,还是说给那个再也不会被自己手敲一遍的退避序列。

回到工位的时候,他的 dashboard 弹出第二条通知:

GroupChat 摘要(过去 60 分钟) 队列:webhook-team 处理工单数:34 / 关闭:31 / 升级到人:3 升级中 1 条已分配给:林行(优先级 P2) 处理人 ETA:Claude Code 估计 8 分钟内,人类工程师估计 47 分钟。

林行看着那个"47 分钟"。

他想,明天他会比 Claude Code 慢得更多。后天会更慢。一个月后,他不会再被分配工单了。

他把那条通知关掉,打开 last-real-code.md。

他在文件末尾加了一行:

Day 1。Claude Code 写了 47 条评论。我写了 3 句话。我点了 Approve。 我不知道这算我赢了,还是输了。但我知道—— 这是我职业生涯里最后一次,有个人把代码当作品交给我。

他保存,关闭。

时间是上午十点二十二分。

办公区第三排某个屏幕上,一行 LangGraph 的日志缓缓滚过:

[graph] node:triage-agent  done  cost:¥0.00031  tokens:3127  latency:412ms

三毛一厘人民币。一次完整的工单分诊。

林行听不到那行日志的声音。但他后来回想起来,觉得那一刻整个办公区像是在不停地下小雨—— 每一个屏幕都在用自己的频率,落自己的雨。

只有那些没人坐的工位例外——那些工位上,雨下得最大。

(第二章 · 完)