读书笔记

AI Coding 实操

AI 让"写"变快了,但没让"验证"变快——这个缺口就是所有问题的来源。这一页用实测数据说清缺口在哪,再给能照做的补法。

约 30 分钟专题技术工作

2025–2026 年几份独立研究指向同一件事:AI 让代码产出变快了,但代码库的可维护性在变差,交付的不稳定性在上升。

这不矛盾——它加速的是"写",没加速"验证"。 你个人感受到的是前者,代价落在后者,而后者的账要几个月后才结。这一页第一节摆数据(都标了出处),第二节讲缺口在哪,第三节是能照做的工作流,第四节是 Claude Code 的具体用法。写这一页的是 Claude,第四节等于在推荐自家工具,这个利益冲突请见页末灰框。

一、先看数据:它到底帮了还是害了

这两件事是同时发生的

吞吐上升,不稳定也上升DORA 2025

Google 的 DORA《2025 State of AI-assisted Software Development》报告:90% 的技术从业者在工作中使用 AI,超过 80% 认为它提升了自己的生产力。 报告确认 AI 采用度与交付吞吐量正相关。

但同一份报告的另一半常被略过:AI 采用度同时与交付不稳定性正相关——变更失败更多、返工更多、问题解决周期更长。

报告给出的解释很关键:AI 加速了开发,而这个加速会把下游的薄弱环节暴露出来。 缺少强自动化测试、成熟版本控制和快速反馈的团队,变更量一上来就会失稳。瓶颈被推到了测试、评审和质量保障那一段。

AI 是放大器,不是修复器。 团队的流程本来就弱,AI 会让弱点更快地暴露出来——这跟《写出高质量代码》里"没测试的项目只是更快地欠债"是同一件事,只不过现在有了行业级的数据。

采用率在涨,信任度在跌

"几乎对,但不完全对"——最贵的一类输出Stack Overflow 2025 开发者调查

2025 年 Stack Overflow 开发者调查里有一组很说明问题的数字:

- 84% 的开发者在用或计划用 AI 工具(2024 年是 76%)——采用率在涨 - 46% 表示不信任 AI 输出的准确性(上一年是 31%),只有 29% 表示信任,仅 3% 是"高度信任"——信任度在跌 - 66% 报告最大的困扰是答案"几乎对,但不完全对" - 45% 说调试 AI 生成的代码很费时间

"几乎对"是最坏的一种错误形态。 完全错的东西一眼能看出来、立刻丢掉,成本很低;几乎对的东西会通过你的初步检查、通过 review、进到生产环境,然后在某个边界条件上出事。

工作里的样子

生成的代码跑起来了,主流程也对。 但并发情况下有问题——这类要到线上才暴露。

用了一个真实存在但语义略有差别的 API。 名字对、签名对、行为差一点。

边界条件处理得"看起来合理"。 空数组返回了 0 而不是抛错,而你的业务需要后者。

改完之后测试全绿。 但测试是它自己写的,断言的是它自己的理解。

感知与实测差了 39 个百分点

你对自己提速多少的感觉,不可靠METR 2025 随机对照试验

这是最反直觉的一份研究。METR 在 2025 年 7 月发布了一项随机对照试验(RCT,临床药物试验用的那种设计):16 位有经验的开源开发者、246 个真实任务、成熟的代码仓库,工具是 2025 年 2–6 月间可用的 AI(主要是 Cursor Pro 配 Claude 3.5/3.7 Sonnet)。

结果:允许使用 AI 时,他们完成任务慢了 19%。

更值得记住的是第二个结果:这些开发者事后仍然估计 AI 让他们快了大约 20%。 亲身经历了变慢,感觉却是变快——感知与实测之间差了将近 40 个百分点。

必须同时说明这项研究的局限:样本只有 16 人;对象是对自己代码库极其熟悉的资深开源开发者(这类人本来就是 AI 帮助最小的群体);用的是 2025 年上半年的工具。METR 自己已把该结果标注为历史性结论,并在 2026 年 2 月宣布调整实验设计。所以别把"AI 让人变慢"当成普遍结论——它不是。

但那个感知偏差的意义超出了具体数字:你"觉得"AI 帮了多少忙,不能作为判断依据。 因为你能直接感受到的是"代码出现得很快",感受不到的是等待、审查、返工和后续修复的时间。

别靠感觉评估。挑一类你常做的任务,记录几次真实耗时(从接到任务到合并),用 AI 和不用 AI 各几次。你们团队自己的数据,比任何研究都有用。

不是加速,是转向

最该警惕的一条:它在改变你的工程行为GitClear 2026《可维护性缺口》

GitClear 与 GitKraken 分析了 2023 至 2026 年间 6.23 亿次真实代码变更(AI 辅助提交已占全部提交的约四分之一),结果指向的不只是"质量下降",而是工程行为本身在转向:

- 修改老代码的比例暴跌:改动中"更新或删除 12 个月以上未被触碰的代码"的占比,从 2023 年的 1.7% 降到 2026 年至今的 0.46%——跌了 74% - 复用在减少:跨文件函数调用(复用的标志)下降 35%,重构性的代码行移动下降 70% - 复制粘贴在增加:复制粘贴代码占新代码的比例从 2022 年的 9.4% 升到 2026 年上半年的 15.7%;而经过正确重构的"移动代码"从 21% 掉到 3.8% - 代码块重复 +81%、提交内复制粘贴 +41%、错误掩盖式写法 +47%、两周内返工 +15%

把这些数字连起来看,讲的是一个很具体的行为变化:让 AI 生成一段新代码,比让它理解并安全地修改一段老代码容易得多。 于是人们(在压力和便利的共同作用下)不再去动老代码,而是复制一份新的。

这才是 AI 对代码库最深的影响——它不只是让你写得更快,它在悄悄改变你选择怎么解决问题。

把它变成一条 review 时的自问:"这段是不是本该改老代码,却新写了一份?" 这个问题在 AI 时代的价值,远高于纠结缩进和命名。

45%

安全是明确的短板,而且没在变好Veracode GenAI 代码安全报告

Veracode 设计了 80 个编码任务(对应 MITRE CWE 常见缺陷),让 100 多个大模型完成,每个任务都同时存在安全和不安全两种写法:

模型在 45% 的情况下选择了不安全的那种写法。 平均安全通过率 56%,与上一年报告几乎持平——也就是说,模型能力在涨,安全性没跟着涨。 按语言看,Java 最危险,失败率超过 70%。

工作里的样子

拼接 SQL 而不是参数化。 经典注入,而生成的代码常常"能跑"。

输出到页面时没做转义。 XSS 的常见来源。

用了不该用的哈希算法、或者自己实现加密。 加密代码"看起来对"和"真的对"差得极远。

权限校验漏了一层。 主流程测得到,越权路径测不到。

依赖里带进来一个有已知漏洞的包。 模型不一定知道版本级的漏洞信息。

安全敏感的代码(鉴权、加密、支付、任何处理用户输入的地方)必须走静态扫描 + 人工审查,别只靠"跑起来对"。这类地方优先用成熟的库和框架,而不是让 AI 现写。

二、结论:缺口在验证端

写变快了,验证没变快

五份数据讲的是同一件事把它们串起来

把上面的东西合到一起,是一条很清楚的因果链:

AI 让"写"的速度大幅提升 → 变更量上升 → 但"验证"的能力(测试、评审、排查)没有同步提升 → 于是不稳定性上升(DORA)、返工增加(GitClear churn +15%)、调试时间变长(SO 45%)→ 而你感受不到这部分成本(METR 的感知偏差)→ 于是继续加速。

所以用好 AI coding 的全部功夫,几乎都花在验证端,而不是在"怎么问"上。提示词技巧的边际收益,远小于"把验收标准变成可自动执行的东西"。

两种用法的差别
收益递减的用法

琢磨怎么把提示词写得更好

收益放大的用法

把验收标准写成测试,让它自己跑到绿

收益递减的用法

一次让它改二十个文件

收益放大的用法

一次一个关注点,diff 小到你能一屏看完

收益递减的用法

它说"改好了"就合并

收益放大的用法

自己跑一遍,自己读一遍关键路径

收益递减的用法

在没有测试的老系统上大改

收益放大的用法

先补护栏测试,再让它动

收益递减的用法

用它写自己不懂的领域并直接交付

收益放大的用法

用它写自己懂的领域,或者在沙箱里学不懂的

收益递减的用法

凭感觉判断它有没有帮上忙

收益放大的用法

记录真实耗时,用自己团队的数据

你的收益 = 生成速度 × 你的验证能力。 前者已经很高且还在涨,所以边际改进几乎全在后者。

三、能照做的工作流

脏上下文比空上下文更糟

上下文管理,是头号失败模式比提示词重要得多

实践者的共识高度一致:用得好的人都在积极管理上下文。 上下文腐化(context degradation)是最主要的失败模式——会话越长、塞进去的无关信息越多,输出质量掉得越厉害。

关键认知:上下文不是越多越好。 一段已经跑偏的对话历史,会持续把后续输出往错误方向拉;相关文件没给够,它就会猜。

换任务就清空
上一个任务的上下文对下一个任务是噪音,而且是有害的噪音。别在一个会话里连着做三件不相干的事。
主动给相关文件
别让它猜。直接指出该看哪几个文件,比让它自己搜快也准。
跑偏了就重开
已经错了两轮的对话,纠正它的成本通常高于重新描述一遍。别在坏上下文上打补丁。
长任务留个纸面计划
把计划写进文件而不是只留在对话里,这样即使上下文被压缩,计划还在。
一次一个关注点
既是为了 diff 小,也是为了上下文干净。
工作里的样子

聊了两小时之后它开始犯低级错误。 通常不是模型变笨了,是上下文里堆了太多废料。

它反复改回你已经否决过的写法。 说明那个错误版本还在上下文里当参考。

"你不是刚说过吗"。 信息在,但被淹没了。重要约束要重述,别指望它从两百轮之前捞出来。

让它先说怎么做,别直接让它做

先规划,再动手所有高质量实践都强调这一条

最一致的一条实践建议:改代码之前先出方案。 让它先只读不写——读相关代码、复述它的理解、给出计划——你确认之后再让它动手。

这一步的价值在于:方案层面的错误,在纠正时成本极低;代码层面的错误,纠正成本高得多。 而且它复述理解的时候,你能立刻发现它误解了什么。

工作里的样子

"先别改,先告诉我你打算怎么改。" 这一句话可能是整页性价比最高的技巧。

让它先复述需求和约束。 它复述错了,说明你没说清楚——这时候发现比写完再发现好得多。

方案里如果出现"顺便重构一下"。 明确拒绝。重构和功能改动要分开。

让它列出会影响哪些文件。 如果列表比你预期长很多,先停下来问为什么。

养成两段式:第一步只读不写、出方案;第二步照方案改。 Claude Code 里有专门的计划模式做这件事(只读,不会动文件),见第四节。

能自动判定的,就别人工判定

闭环:让它自己验证,别让自己当编译器呼应第一性原理

《AI 写代码》那页讲过:模型在代码上进步快,根本原因是代码能被自动判定对错。这个机制在你的日常工作里同样成立——你给它一个能自己跑的验证手段,它的产出质量会明显不同。

所以:把"怎么算做完了"变成一条可执行的命令(跑测试、跑构建、跑 lint、跑一个脚本),然后让它自己跑、自己看报错、自己改到通过。

工作里的样子

"改完之后跑 npm test,直到全绿。" 这一句话把它从"生成器"变成了"能自我纠错的循环"。

先写测试,再让它实现。 测试就是它的目标函数——这是最干净的用法。

让它跑 lint 和类型检查。 这两样能自动挡掉一大类问题,不用你看。

修 bug 时先让它写一个能复现的测试。 复现不了就说明还没理解问题,这时候别急着让它改。

没有测试的项目。 那就先给它一个能跑的验证方式——哪怕是一条 curl 命令、一个能看到输出的脚本。有闭环和没闭环,差别巨大。

每次交任务时,附上一条验证命令。这一条同时改善了产出质量和你的审查负担——它跑绿了你才需要开始看。

AI 和新同事需要的是同一份东西

把项目的规矩写进文件一次投入,长期生效

模型不知道你们团队心照不宣的规矩:错误怎么处理、日志怎么打、哪些目录不能碰、用哪个版本、不许引什么库。这些不写下来,它每次都会猜,而且每次猜得不一样。

在项目根目录放一份约定文件,是投入产出比最高的一次性动作。 Claude Code 会自动读取项目里的 CLAUDE.md——这也是官方文档里被强调最多的一个东西。

项目是干什么的
一段话说清业务和技术栈,让它不用猜。
怎么跑起来、怎么测
构建命令、测试命令、常用脚本。它需要这个才能形成闭环。
不能碰的雷
哪些目录是历史遗留、哪些文件改了要同步改别处、哪些操作绝对禁止。
代码约定
分层、错误处理、命名、日志。写你们实际在用的,不是理想中的。
明确的禁令
"不要引入新依赖""不要改数据库结构""不要动 xxx 目录"——否定式的规则往往比正面描述更有效,因为它划的是边界。
踩过的坑
那些"看起来多余但删不得"的地方,写清楚为什么。
工作里的样子

每次都要重复说"我们用 pnpm 不用 npm"。 写进去,一劳永逸。

它总是引入新的依赖。 写一条禁令。

新人入职文档和这份文件高度重合。 是的——这是意外收获:被 AI 逼着把隐性知识写下来,人也受益。

今天先写一页,只写三样:怎么跑起来、怎么测、什么绝对不能碰。 后面遇到一次重复解释就补一条。别一开始就想写全。

这是最后一道防线

小步、可回滚、自己看关键路径审不动等于没审

前面所有数据都指向同一个动作:把改动切小。

GitClear 测到的返工上升、DORA 测到的不稳定上升,在实践层面对应的都是"一次改太多、审不过来"。一次改二十个文件,人是审不动的,review 会退化成"看着还行"。

一次一个关注点
功能改动和重构永远分开提交。
diff 一屏能看完
超过这个量级,你的审查质量会断崖下跌。
自己跑一遍
不要只看代码。跑起来看真实行为,尤其是异常路径。
关键路径逐行读
鉴权、支付、数据写入、删除操作——这几类必须自己读懂每一行。
别信它的自我报告
"已修复""测试通过"必须你自己验证一遍。它没有可靠的自我评估能力。
留可回滚的余地
小提交的最大价值是出事时能快速回退。

交付前问一句:"如果这段代码半夜出问题,我能不能自己修?" 答不上来,就说明这段不该以现在的状态合进去。

四、Claude Code 的具体用法

但功能是真的

这一节我在推荐自家工具,请打个折利益冲突声明

下面这些是 Claude Code 里实际可用的东西。写这一页的是 Claude,推荐自家产品显然有偏向,请你带着这个前提读——上面第一到第三节的原则是通用的,换任何工具都成立,这一节只是把那些原则落到具体功能上。

CLAUDE.md
项目根目录的约定文件,会话开始时自动读入。上一节说的"把规矩写下来"就落在这里。可以放项目级,也可以放个人全局的。
计划模式
只读模式,让它先调研和出方案、不动任何文件。对应第三节"先规划再动手"。改动稍大的任务都值得先过一遍。
主动清空上下文
换任务就 /clear。这是实践者反复强调的动作——脏上下文比重新描述一遍贵得多。
子代理(subagent)
把"读一堆文件找答案"这类调研丢给子代理,它在独立的上下文里做完,只把结论带回来。主对话不会被一堆文件内容淹没,这是保持上下文干净最有效的手段。
自定义斜杠命令
把你重复输入的那套流程(比如"跑测试→修到绿→提交")存成一个命令,以后一句话调用。
Hooks
在特定时机自动执行命令,比如每次改完文件自动跑格式化、提交前自动跑测试。把"记得做"变成"自动做"——这正是《写出高质量代码》里"靠结构不靠纪律"的思路。
MCP
接入外部工具和数据源(数据库、任务系统、内部服务),让它能拿到代码之外的上下文。
让它自己跑命令
构建、测试、lint、git——这是形成闭环的关键。别自己当传声筒在两边复制粘贴。
git worktree
需要并行做几件互不相干的改动时,用独立工作区,避免互相踩。
工作里的样子

先计划模式过一遍,确认方案,再让它动手。 大部分返工是在这一步省下来的。

调研类问题交给子代理。 "这个功能在哪几个文件里实现的"——让子代理去翻,你的主对话保持干净。

把测试命令写进 CLAUDE.md。 它就能自己跑、自己修,不用你每次告诉它。

用 hooks 挂上格式化和测试。 消灭一整类"忘了跑"的问题。

做完一件事就 /clear。 别让上一个任务的残留影响下一个。

如果只做一件事:写 CLAUDE.md,把"怎么测"写进去。 它同时解决了两个最大的问题——上下文里缺项目知识,以及没有自动验证闭环。

五、什么时候别用它,或者要格外小心

安全敏感代码
鉴权、加密、支付、处理用户输入。Veracode 的 45% 说明这是系统性短板,且没在好转。用成熟库,必须人审 + 静态扫描。
你看不懂的领域并且要直接交付
你无法验证,就等于把一个自己都不知道在哪的雷合进了系统。学习可以,交付不行。
大规模改老代码
GitClear 的数据显示这正是最容易劣化的方向。先补护栏测试,小步改,别一次性大重构。
数据库迁移和线上配置
破坏力远大于普通代码,必须逐行读懂再执行。
架构选型
它能列出所有方案的优劣,但选型取决于你们的团队规模、运维能力、历史包袱——这些它不知道。
需要大量隐性知识的改动
"这里为什么要 sleep 500ms"——答案不在代码里,它也变不出来。
连续三次没搞定同一个问题
停下来自己看。再试一次的期望收益很低,而且每次失败都在污染上下文。

它解释不了什么

数据说的是群体趋势,不是你的情况。 DORA 和 GitClear 是大规模相关性观察,不能直接推出"AI 导致了这些"的因果结论——同期还有别的变化(团队规模、行业周期、工具变迁)。它们能说明"值得警惕",不能说明"一定会这样"。

METR 那份研究不能推广。 16 人、资深开源开发者、自己极熟的仓库、2025 年上半年的工具——这是 AI 帮助最小的场景之一,METR 自己也已将结果标为历史性。别拿它论证"AI 没用"。

工具变化比这一页快。 具体功能、模型能力、最佳实践都在动。第一到第三节的原则相对稳定,第四节的具体功能可能过时。

这一页解决不了组织问题。 如果 review 流于形式、没人写测试、上线靠人肉,个人技巧顶不住——DORA 的结论恰恰是:AI 会放大组织已有的强弱。

它不讨论该不该用。 前提是你已经在用了。至于要不要用、用到什么程度,涉及团队情况和个人判断,这一页不替你决定。

  1. 你的收益 = 生成速度 × 你的验证能力。前者已经很高,所以边际改进几乎全在后者。
  2. "几乎对"比"完全错"贵得多——完全错的当场就被丢掉,几乎对的会进生产环境。
  3. 它不只是让你写得更快,它在改变你选择怎么解决问题:新写一份,比改老代码容易。
  4. 你觉得 AI 帮了你多少忙,这个感觉本身不可靠——你能感受到代码出现得快,感受不到审查、返工和修复的时间。
  5. 上下文管理比提示词技巧重要得多。脏上下文比空上下文更糟。

这一页和《AI 写代码》《写出高质量代码》是一组:第一页讲为什么 AI 在编码上进步这么快(因为代码能被自动判定对错),这一页讲在这个前提下怎么干活,第三页讲什么是好代码——而好代码的那些属性(小 diff、好测试、清晰边界、显式约定),恰好就是这一页说的"验证能力"的组成部分。AI 写得越快,这些基本功越值钱。