编程 用 AI 写生产级代码:PAAD 的工程主导流程

2026-09-07 14:19:43

用 AI 写生产级代码:PAAD 的工程主导流程

能。用 AI 写生产级代码其实直截了当,需要工程纪律,前期会多花些 token,但换来的是质量更高、更少被打回返工的代码。总拥有成本下降——可惜很多公司还盯着单位成本。这是 Perl 社区知名作者 Ovid 的实践总结(dev.to),核心是一套叫 PAAD 的流程。

实验:不读代码写代码

作者常年飞各国做培训咨询,晚上在酒店独处时给自己出了道题:如果"英语是新的编程语言",为什么还要读生成的代码?他想验证能不能在开发过程中完全不写、不看代码,产出经验丰富的工程师愿意接手的代码。

实验假设是自己会失败,但失败过程能学到东西分享给别人。假设错了——他没失败。一开始失败很多,但持续学习,最终成功。

第一个尝试是把 Perl 的 sqitch 数据库迁移工具移植到 Python。他写了极其详细的 prompt 和逐步规格,结果是一团糟。但实验规则是失败前不读代码;失败后找根因。他发现大代码库像一张图:叶子节点是图内没有依赖的节点,先移植叶子、从图里移除,就得到新的叶子集合(处理循环依赖的边角情况)。按图序移植——成功了。SQLite 迁移先跑通,然后请 Fosstodon 上的人评审(刻意不提 AI),收到 Python Twisted 作者 Glyph 的评审:指出一堆小问题,根源都是"不懂 Python",但结论是"看起来不错"。

教训:需要理解一门语言的最佳实践并显式纳入流程;方向是对的。转 PostgreSQL 时崩了——因为专注 SQLite 移植,AI 在代码里到处埋了 SQLite 假设。修复不如重写,于是重来,但教训保留。

流程成型

过程逐步收敛为:遵循预定义流程;尝试写 AI 能力之外的代码;失败时理解根因;问自己"怎么向初级开发者解释这个";把解释变成 agent 技能防止问题复发。技能越积越多,最终整理成插件 PAAD——AI 辅助编程的纵深防御:

  1. 写规格(spec)
  2. 评审规格
  3. 创建计划(工单)
  4. 确认计划与规格一致
  5. 实现
  6. 测试和 CI
  7. 评审
  8. 人工决策

这看起来就是你不用 AI 时也在做的事——这不是巧合。PAAD 最初为 Claude Code 创建,可装到 70 多种 agent 编码工具上。

为什么 PAAD 不同

很多人见过 AI 的失望之处:第一天像魔法,第一个月高效,之后发现 god object、全局可变状态、一堆安全洞、永远解不完的乱麻。因为 AI 聚焦你给它的任务并努力解决它,不天然看大局——充其量是个初级开发者。坏模式进入代码库后,预测机器用坏模式帮它做新预测:代码库的缺陷鼓励 AI 叠加缺陷。

真相很简单:人可能是资深开发者,但开始用 AI 时都是初级 AI 开发者。把 AI 当魔法仙尘撒在问题上指望问题消失——"prompt and pray"——是 AI 主导工程,长期不奏效。作者不教 AI 主导工程,教工程主导 AI:AI 能做任务,不能做工作;AI 解决你现在的问题,不会自动想大局;而且它是随机的。

随机(stochastic)意味着"可预测的随机性"——产出形状像你要的东西,但行为剧烈摆动。人类也随机,所以好开发者仍然写测试、要代码评审、要 CI/CD 兜底、QA 再抓一层。为什么 AI 没有这套纵深防御?大部分 AI slop 只是以 AI 速度累积的技术债,我们知道怎么管技术债,就知道怎么管 AI slop。PAAD 没有魔法:不是指望 AI 替我们干活,而是我们干活、让 AI 提速。今天作者常让 agent harness 在后台写软件,自己在开会、写演示、研究问题。

边界

PAAD 离不开工程纪律,你的专业判断仍然关键。它不主张把缰绳交给 AI。定义"生产级"就一句话:经验丰富的工程师拿起来说"这代码我能上手"——作者写了数十年代码,人工生成的代码也经常过不了这关,但流程是工程主导的,正确性、安全、可运维、可观测、性能、恢复都要考虑。

来源:Writing Production-Quality Code with AI - DEV Community

复制全文 生成海报 AI 编码 工程流程 最佳实践

推荐文章

程序员茄子在线接单