我不再评审智能体写的代码了

注意:这篇文章面向重度用户。 它假设你已经每天用 Claude Code 这类编码智能体开发,并且熟悉 CI、合并队列和 feature flag。如果你的 AI 之旅还处在早期,先收藏起来以后再看。

我不再评审智能体写的代码了
博途PLC工程智能体 | AI智能体博途网关 | 博途PLC程序知识图谱 | 梯形图转SCL | 自然语言生成梯形图 | 自然语言生成SCL | 逆向生成程序块文档 | 梯形图在线查看 | 博途编程文档MCP | AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI

两周前,我改变了自己构建软件的方式。从那以后我合并了 562 个 PR,而且说实话,其中有四个晚上我是在山里徒步。

视频里我完整演示了现在的工作方式。下面是文字版配套内容:环境设置、提示词、数据,以及本周可以尝试的事情。

如果你还在逐行评审智能体写的每一行代码,这篇文章就是写给你的。

1、四行讲完整个工作流

  1. 设定意图。 和智能体一起做计划,直到你们就"要构建什么、为什么"达成一致。
  2. 设定护栏。 测试、CI 和评审机器人——智能体绕不过去的那种。
  3. 设定目标。 一个会话、一个协调者智能体、若干子智能体干活。
  4. 让它小步合并。 自动合并、feature flag、验证、重复。

2、发生了什么变化

过去几周模型发生了巨大变化,尤其是 Opus 5.5。要是在几周前,我不会建议任何人这样工作。我过去总觉得必须亲自检查产出:质量够好吗?这个该合并吗?

现在我认为,只要两件事设置得当,智能体就能自己跑完整个计划:正确的意图,以及正确的护栏来确保这个意图真的被达成。把这两件事做对,你就可以放手让它真正跑起来。

这项工作的大部分都落在 Sightline 上——我们在 Spare 的内部运营平台。我什么都先在那里试。

3、护栏才是真正的工作

AI 代码是非确定性的、有风险。但人类的代码同样是非确定性的,风险一模一样。我们构建了 SRE 体系来防止人犯错;现在我们需要同样的体系——而且要强化得多——来防止智能体犯错。

用和处理事故一样的无责文化:智能体犯了错,不要怪智能体。要问缺了哪条护栏,然后把它建起来。

这不意味着质量不再重要。智能体也会把事情搞砸。正因为如此,护栏才是工作本身。下面每个 Sightline PR 在合并前都要经历:

  • 单元测试
  • 端到端测试
  • CI、Bugbot、Strix
  • Mergify——上述任何一项不通过,PR 就进不了合并队列

所以只要东西进了队列,我就知道它没有绕过任何一个红色警报。

护栏自己也被守护着。我们让 Bugbot 持续要求补充更多测试。正是 CI 里这些反馈回路,让我们能跑这么快而不拿可用性去赌。而当有东西漏网时,我们不只修代码,我们修护栏。

4、工作流,一步一步

4.1 和智能体一起做计划

每次会话都以同样的方式开始。我打开 Claude,一起把计划敲定:怎么拆分、挑战是什么、风险是什么。我经常还要一个 UX 预览,这样在任何东西被构建之前,我就能看到它用起来是什么感觉。

我现在大部分时间都花在这里。我评审的是计划,不是代码。

4.2 设定目标,每次都用同一条提示词

计划对齐之后,我开一个会话并设定目标。以下是我逐字使用的提示词:

Accomplish the plan. Ship code using auto-merge. You're the coordinator. Don't do work directly. Use sub-agents for everything, and parallelize when possible.

4.3 保持协调者的上下文干净

"协调者"这一角色帮助很大。顶层智能体只持有计划和状态,所以上下文保持干净。重活由子智能体来干,随着计划推进,它们随取随用。

4.4 让它合并,小步地合并

我让它自己合并,而且说实话,相当安全。这些模型很谨慎,不想弄坏东西。你要求一切都加 feature flag,它们就会照做。因为能合并,它们就小步交付:发一个东西、在 staging 或生产环境跑端到端测试、确认它能用、再发下一个。多阶段部署,小步增量。

有点语出惊人:一个你在本地反复迭代的大 PR,最终可能比二十个各自通过了所有检查的小 PR 风险更大。

4.5 评审进度报告,而不是 diff

我回来找它要一份进度报告。智能体会生成一份 HTML 报告:完成了什么、下一步是什么、它需要我做什么。我评审的就是这个。

4.6 让它跑上好几天,同时跑好几个

这是我认为大多数人会错过的一点:让目标跑一整夜,需要的话跑上几天。我们的自定义角色(custom roles)目标跑了一天多。我定期查看、读报告、必要时推它一把,让它一直跑到真正达成目标。

我通常同时跑两三个、甚至四个目标,而且都是互不相关的功能,这样它们不会互相踩踏。正是这一点让我们能飞快地推进。

5、把问题问得更大

我们大多数人还是把这些工具当成一个非常快的工程师来用:实现这个 ticket、加这个接口。这行得通,但想得太小了。有了目标工作流,你可以设定高得多的意图、提出开放式问题,或者把一整个业务问题交给它,让它自己想清楚需要做什么。

  • 目标不是*"加一个角色编辑器",而是"让 Sightline 的权限在任何地方都和 Spare 的一样工作"*。
  • 目标不是*"把 OKR 挪进一个包",而是"把 Sightline 变成其他团队可以扩展的平台"*。

你可以把它推得更远:

  • "我们的 CI 太慢了,让它快起来。" 就这么多。让它自己找出时间花在哪里并修掉。
  • "我们某个企业客户的 PPVH 偏低。深入五天的数据,想想怎么优化。" 这是真正的业务问题,不是编码任务。
  • "我们管理后台的前端 UX 不一致。找出这些不一致,帮我们消除掉。"

这些不是 ticket,而是结果(outcome)。如今的模型已经足够好,能接下一个结果、把它拆解,并朝着它干上一天甚至更久。

7、容量:token 成为瓶颈

一旦你这样工作,token 就成了瓶颈。个人套餐给的额度已经不够用,超额部分又贵得离谱。

我的做法是同时跑多个 Claude 账号,大约五个、每个 200 美元左右,用一个叫 Claude Swap 的工具在它们之间切换。它监视每个账号五小时和七天的用量,任一账号达到 90% 就自动切换,让一切在后台持续运行。

这并不完美。切换账号会丢失 Claude artifacts 和移动端 App 的远程控制之类的东西,我还得不停地在浏览器和手机上重新登录,很浪费时间。所以这周我在看一些不需要切换就能解决同一问题的工具:Paseo、Orca、Superset,还有其他几个。

8、这会走向哪里

我们的工作正在从"交付一个个功能"转向"构建让产品持续演进的系统"。我们设定意图,然后构建能朝该意图自我修复的系统。

我们已经在做了:修复我们 bug 的自动化、SRE 工作的自动化、做漏洞研究的智能体,以及自动修复那些安全风险的早期工作。接下来是发现质量问题、数据库与渲染性能问题、UI 不一致的系统,以及修复它们的智能体;找出测试覆盖缺口并补上测试的智能体。

不再是我们逐个弄清每件事,而是立起一套护栏,让系统不断自我修复、走向更好的状态。

9、本周可以尝试的三件事

  1. 在一个真实功能上停止检查代码。 从低风险的开始。随着信心建立,再在更大的东西上试。
  2. 给它一个问题,而不是一个 ticket。 看它能走多远。
  3. 看看你正在触碰的表面区域。 缺什么护栏能让智能体搞不坏?什么回路能自己把事情修好?

原文链接: I stopped reviewing my agents' code. Here's what I do instead.

汇智网翻译整理,转载请标明出处