Lauren Tan:用可执行的检查让 AI 生成的代码更可信

原标题Lauren Tan: Make AI-generated code trustworthy with enforceable checks

这位 Grok Bot 工程师介绍了团队如何通过架构、验证和审查,支持大量智能体生成的代码。

LTLauren Tan讲者 · SpaceXSI
频道
AI Engineer
发布
2026年11月14日
视频
17:31
阅读
6 分钟
幻灯片
6
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

Lauren Tan 认为,要扩大编程智能体的使用规模,就要建设一个让正确修改更容易、能自动捕捉错误的代码库。她的团队用 lint 规则约束代码边界,让智能体运行产品,并尝试形式化验证。她称团队一个月提交约 1.1 万个拉取请求,回滚率约为 0.5%;这些成果建立在数月的基础建设之上。

  1. 1对智能体的信任来自对环境的投入Tan 说,她花了六个月建设基础,才达到能提交数千个拉取请求的程度,其中包括睡觉时完成的修改。
  2. 2自动检查比增加一条指令更能持续执行纠正代码库是智能体的重要输入,因此 Tan 建议将重复纠正变成可复现的检查,并清除可能被智能体模仿的错误模式。
  3. 3Dune 禁止容易出错的模式并强制执行进程边界团队禁止在产品代码中使用 React 的 useEffect,并用依赖分析和 lint 规则阻止 Electron 主进程与渲染进程目录之间的导入。
  4. 4审查越来越侧重软件可运行的证据智能体用调试工具运行应用,生成截图、视频和图表。团队也在尝试形式化方法及基于属性的测试。
  5. 5Tan 称团队提交 1.1 万个拉取请求,回滚率约 0.5%她说,团队大约每天发布一个稳定客户端版本,尽管修改量增加,启动、输入和聊天切换速度仍有所改善。
  6. 6先改进内部编码循环,再自动化外部流程Tan 建议扩大软件工厂规模之前,先添加 lint 规则、清理现存反模式并加强验证。

要点建议

  1. 把反复出现的智能体纠正转化为可执行的检查或更好的 API,而不是增加文字指令。
  2. 既要防止新的反模式出现,也要清理旧代码,因为智能体会模仿已有代码。
  3. 让智能体运行和检查应用,再审阅视频、截图等验证证据。
  4. Tan 的团队还尝试使用 TLA+、Lean 和基于属性的 UI 测试;她把形式化验证视为额外防线,而非万能解法。
  5. Tan 称团队 10 月提交约 1.1 万个拉取请求,回滚率接近 0.5%。
全文

按章节阅读整理后的全文

只看原始文稿
01

将信任建立在智能体环境中

Tan 认为,工程师需要在增加智能体产出的同时提高代码质量。她的信任金字塔从架构和确定性检查开始。

Lauren Tan 说,她上个月向生产环境提交了 3000 个拉取请求。智能体可以让更多工程师大幅提高产出;挑战是产出增加时如何保持甚至提升代码质量。她认为信任的基础是智能体运行的环境,而不是盲目信任智能体。

Tan 说,她花了六个月投入基础建设,才达到能提交数千项修改的程度,其中包括睡觉时完成的修改。她的信任金字塔从代码和架构开始,接着是静态分析和测试,再往上是运行时或形式化验证。规则、技能和 AGENTS.md 则作为较小的一层,处理需要判断的工作。

智能体信任金字塔
幻灯片 1 / 6智能体信任金字塔Tan 将架构和静态分析放在底层,其上是验证、文字指令和人工审查。

代码库是智能体最大的输入来源之一。Tan 建议,纠正智能体时先想想能否把纠正转化为自动检查,而不是在指令里再加一行:可执行规则更容易复现,也更值得信赖。

她将代码库比作花园。当几个拉取请求变成数百个,代码就像源源不断的水流;架构和防护措施则是代码围绕生长的固定结构。临时修补、废弃代码和其他坏例子可能扩散,因为智能体会把现有做法当作既定模式来模仿。

02

让代码库不容易被误用

Dune 通过 API、目录结构和 lint 规则固化约定。Tan 解释了团队为什么限制 useEffect 和大多数注释。

Dune 为智能体编写的代码固化约定
幻灯片 2 / 6Dune 为智能体编写的代码固化约定该框架结合按功能组织目录、导入限制以及对注释的限制。

她的团队为 Grok Bot 构建了客户端框架 Dune,她把它比作 Electron 应用的 Next.js。她说,框架的重要之处在于一系列约束和 lint 规则,将开发桌面应用的经验固化下来。

例如 React 的 useEffect:Tan 说它有正当用途,但正确使用需要细致判断,智能体往往做不好。团队禁止在产品代码中使用它,只允许在某些 Dune API 内使用。这样就消除了代码审查中的一类反复出现的问题,不必依赖审查者逐一发现。

用目录结构表达进程边界
幻灯片 3 / 6用目录结构表达进程边界将 Electron 渲染进程和主进程代码分到不同目录,让禁止的依赖关系清晰可见且可执行。

目录结构也能提供上下文。Tan 在 Cursor 工作时看到智能体将 Electron 主进程代码导入渲染进程,导致长任务和界面卡顿。在 Grok Bot 和 Dune 应用中,独立的 electron-main 和 electron-renderer 目录让边界明确;依赖分析和 lint 规则禁止跨边界导入。

Tan 还见过智能体在文档和注释中为捷径辩护,或者把一次小纠正变成不可变通的规则。她举例说,智能体使用命令式定时器,临时弥补 VS Code 命令式架构与 React 声明式风格之间的冲突。反复创建和清理定时器损害了性能,而注释则解释这些权宜之计为何看似合理。

在 Grok Bot,团队选择禁止约 99% 的注释:Tan 说注释容易过时,也不能自行强制执行。相反,lint 报错应引导智能体修复根因。她的原则是把纠正变成检查,或通过 API 和架构设计消除出错的可能性。

Tan 说,随着检查不断积累,人工审查每项修改需要关注的内容会减少,智能体便可以合并许多自己的修改。她的团队越来越多地审查视频、截图、图表和形式化检查等验证证据。

03

验证行为,而不是逐行阅读

智能体运行应用并生成可供审查的证据。团队正在尝试模型检查、证明和基于属性的测试。

运行时验证让智能体能够运行软件,并使用 Chrome DevTools Protocol 等调试工具。功能地图从用户视角描述应用,让人与智能体对功能有共同的称呼。可重复使用的命令行工具和驱动程序让这些技能可以测试,也能减少重复消耗的 token。

两种形式化验证方法
幻灯片 4 / 6两种形式化验证方法幻灯片对比了用 TLA+ 建模状态机与用 Lean 证明代码属性。

团队开始尝试形式化验证,用 TLA+ 对跨设备通知等流程建模,并用 Lean 检查算法,包括自研的虚拟化库。Tan 说,这些方法已经发现了一些问题,但它们只是额外的一层防线,并非万能解法。

团队也在尝试用 Bombadil 进行基于属性的 UI 测试,已经发现一些界面问题。Tan 引述另一位工程师的观察:每天 70% 的 token 用于验证;她说自己的 token 也大多用在验证上。她认为,智能体能降低编写和维护这些成熟测试技术的成本。

形式化模型还可以帮助澄清预期行为,以及智能体是否理解这些意图。Tan 的 pstack 插件包含一个 statechart 技能,从用户视角可视化状态机;她认为配合截图和视频,这样的结果更容易审查。

04

产出规模与背后的基础建设

Tan 称拉取请求数量快速增长的同时,回滚率维持低位,客户端性能也有所改善。她建议先加强代码库,再自动化外部流程。

团队报告的每月拉取请求增长
幻灯片 5 / 6团队报告的每月拉取请求增长Tan 的幻灯片展示了截至 10 月团队每月合并的拉取请求数量。

Tan 称,Grok Bot 团队 10 月向生产环境提交约 1.1 万个拉取请求,大约每天发布一个稳定客户端版本。她说,当月至少提交一个拉取请求的有 227 人,其中包括对项目背景了解较少的临时贡献者。

团队报告的修改回滚率
幻灯片 6 / 6团队报告的修改回滚率幻灯片显示被回滚的提交比例从 6 月的 0.98% 降至 10 月的 0.47%。

Tan 说,尽管修改数量增加,相对回滚率仍维持在约 0.5%。她称,自产品发布以来,启动、输入、打开聊天和切换聊天的速度都有改善,同时也承认 Electron 客户端存在性能上限。

Tan 建议,在建设软件工厂前先改进代码库:为反复出现的反模式添加 lint 规则,清理已有问题,并加强验证。如果内部编码循环本身产生低质量代码,自动化只会产出更多同类代码,还会消耗更多 token。

Tan 说,基础建设完成后,可以通过连接器、例行任务和项目,让 Grok Bot 编排外部流程。每次发布之后,团队会自动启动一个 Cursor 项目,运行和测试构建产物、发现问题并提交修复;她说,由于有周围的检查,这些修复随后可以自动合并。

同频道的其他文章

2 张幻灯片17:31EN → 简体中文
AI Engineer· 2026年11月12日Claude Code 需要的引导更少,无人值守工作却需要更强的检查Lydia Hallie · AnthropicLydia Hallie 介绍权限、隔离环境和验证如何接手人们过去在每次会话中执行的任务。编程智能体开发流程与测试Agent orchestration+1
3 张幻灯片14:00EN → 简体中文
AI Engineer· 2026年11月11日删减 skill 指令前,先测试它教会了模型什么Nikolay Petrov · IntelNikolay Petrov 对比模型有无 skill 时的回答,找出已知、有用和有害的指令,再用实际任务检验改动。Agent skills评估上下文工程
4 张幻灯片18:03EN → 简体中文
AI Engineer· 2026年11月11日Dmitry Buykin:当编码智能体快过审查,如何维护代码Dmitry Buykin · Maersk在马士基,每周清理、真实任务回放和业务专家反馈帮助团队理解智能体构建的系统。编程智能体Software engineeringAI agents
4 张幻灯片26:49EN → 简体中文
AI Engineer· 2026年11月11日Ara Khan:选择能随 AI 进步而受益、又不会被取代的工作Ara Khan · ClineCline 的 Ara Khan 解释自动评估循环,并建议工程师选择能从模型进步中受益的问题。编程智能体评估与可观测性Careers
3 张幻灯片12:38EN → 简体中文
AI Engineer· 2026年11月11日Duolingo 如何用智能体补充测试,同时保留人工审查Kush Agrawal · Duolingo定时流程通过生成测试、修复 CI 并将拉取请求交给工程师批准,提高了 iOS 测试覆盖率。编程智能体开发流程与测试Software engineering
4 张幻灯片38:50EN → 简体中文
AI Engineer· 2026年11月10日LinkedIn 的自我改进代理,先要修好评估裁判Ziwei Guo, Saloni Gandhi · LinkedIn一个提示词优化循环改进了职业代理,但团队首先需要通过人工校准提高评估器的可靠性。智能体工程评估与可观测性Agent orchestration+1