最近高强度使用 AI 编程时,我发现自己出现了一个不太体面的变化:AI 越来越强,我却越来越没有耐心。

以前模型连续失败几次,我还愿意调整 Prompt、缩小问题、重新尝试。现在它只要忘掉刚刚确认的要求,把界面画得难看,或者修好一个 Bug 又引入另一个,我就会立刻烦躁:这么简单的事情,为什么还做不好?

更典型的症状是,我开始骂 AI“傻逼”。它又忘了约束、又把修好的功能改坏时,我会真的对着对话框骂出来。

那种感觉很像在带一个天赋很高、却总在低级问题上掉链子的实习生。我甚至给这种情绪起了个名字,叫“AI 厌蠢症”。

情绪是真的,但如果把问题全部归结为 AI 愚蠢,就太方便了。把这段时间做过的项目摊开,我看到的是另一件事:AI 把生成速度提高了十几倍,我的注意力、品味、验收能力和接管能力却没有同步增长。我不断扩大生产,最后失去了对生产的控制。

从速度失控到重新掌握节奏

上半部分是越跑越快的生成循环;下半部分把停止权、接管能力和作品标准重新交还给人。




我知道 AI 有边界,为什么还是会生气?

今天的 AI 很容易让人产生一种错觉。

我是一个前端开发者。以前我的专业边界很清楚,主要就是把前端页面做好。现在我可以让 AI 帮我开发 App、写 Rust、搭后端服务,甚至规划一个完整项目。许多过去需要学习很久才敢开始的事情,几个小时就能看到结果。

社交媒体每天都在继续推高这种感受。一个 Agent 独立完成复杂系统,一个 Prompt 生成完整游戏,一个人在几天内做出过去需要团队完成的产品。它们到底经历了多少轮失败、多少人工接管和多少剪辑,我其实无法求证。我能看到的只有那个最适合传播的结果。

社交媒体上的 Bun Rust 重写帖子

高复杂度的跨语言重写叙事,构成了“过去的能力边界正在快速消失”的背景。

社交媒体上的一个 Prompt 生成完整游戏演示

“一个 Prompt”“100% AI 制作”把模型的峰值表现压缩成了一个看似无摩擦的结果。

我并不是不知道 AI 有缺陷。它的能力一直是锯齿状的:刚刚完成一个复杂的跨语言重构,下一刻可能画错一个按钮;能理解庞大的架构,也会忘掉几分钟前确认的约束。UI 审美经常很差,写出来的文章和 Skills 也常常只是形式完整,里面充满同一种平滑、正确、没有品味的 AI 味。

问题是,只要见过它的天才时刻,我就会不自觉地把峰值能力当成正常水平。

你连 Rust 项目都能写,为什么这个 UI 还画不对?

更荒唐的是,我开始期待它“一把成功”。过去手工开发时,没有人会认为一个需求应该第一次实现就完全准确。需求会失真,设计会推翻,代码会返工,软件原本就是在多轮反馈里逐渐长出来的。AI 把第一版压缩到几分钟之后,我却连正常的迭代都不愿意等了。仿佛只要第二次 Prompt 还没有解决问题,它就在浪费我的时间。

速度改变的不只是交付周期,也改变了我对失败的解释。以前失败是开发过程的一部分,现在失败像是模型退化、偷懒和不听话。

所谓“厌蠢症”,只是这组过高期望浮到表面的情绪。




一个流程完备,却依然失控的项目

最近我做了一个 Obsidian 发布插件。最初真正想解决的问题并不复杂:在 Obsidian 里选择少量文章,可靠地预览,然后发布到一个固定的 Cloudflare 站点。

这个项目并不是随口给 AI 一个需求就开始裸奔。开工前,我逐页用 ASCII 原型对齐 UI,随后生成设计规范、UI 规格和产品规格,再把需求拆成垂直 Slice。每个 Slice 都走 TDD,并交给独立 Agent 做对抗 Review。

如果只看流程,它甚至严谨得有些过头。

范围就是在这种严谨中膨胀的。Agent 沿着设计树不断追问,我连续做了二十多次局部确认。每个选择单独看都很合理:要不要支持多内容根?要不要区分公开、隐藏和私密?要不要处理 URL 重定向?要不要增加搜索、知识图谱、诊断和无障碍支持?

我一次次回答“要”。这些选择最后变成 36 个用户故事、18 组功能需求和 17 个 Slice。然后我又给了 Agent 一个非常直接的 Goal:

实现所有任务。

从第一条实现提交到 17 个 Slice 全部跑完,不到 13 个小时。仓库已经产生约 2.85 万行源码与测试、223 个自动化测试。TDD、构建、审查和记录都在运转,代码以一种传统开发几乎不可能达到的速度出现。

Obsidian 发布插件的范围膨胀过程

每一步都经过确认,整体却从最小发布需求扩张成难以由个人充分验收的系统。

问题是,我根本没有以同样的速度理解和体验这个系统。

我当时的 Slice 是给 AI 用的垂直执行单元,不是给人验收的产品增量。Agent 会在 Slice 内完成 Spec、Task、TDD、Review 和 E2E,继续往下跑;我不会在每个 Slice 结束后停下来重新体验和授权。我真正介入的地方,通常只有最后面向用户的 UI 或 CLI。

从 Agent 的视角,每个 Slice 都闭环了。从我的视角,整个项目接近一次十几个小时的开环运行。等我终于看到真实界面时,数万行代码已经在那里了。它们有测试、有 Review,也几乎不再可能由我逐段理解和验收。

17 个 Slice 完成后,项目没有进入稳定使用期。最终界面让我不满意,于是又开始整体重做 UI;随后底层渲染方案发生变化,项目又增加了一份七百多行的迁移规格。

回头看,AI 没有公然违背我的要求。恰恰相反,它太听话了。它不懂克制,不知道什么叫“已经够了”,也不会因为我的注意力即将透支而主动拒绝下一项完整性要求。我的每一次“要”,最后都变成了代码。

失控有时在开工前就已经发生了:目标本来就太大,我却试图用一个长程 Goal 一把梭。另一些时候,最初目标并不大,但规划和执行不断把“生产级完整性”补进来,最后膨胀成另一个东西。这个项目两种情况都占了一点:需求起点很小,最终授权却大得惊人。

Grill 可以消除局部歧义,Spec 可以固定已经表达出来的世界,TDD 和跨 Agent Review 可以检查实现是否符合这个世界。但 Spec 不可能穷举开发中才会出现的体验,多个 Agent 也可能共同严谨地验证一套过大的目标。

我以前总担心 AI 没有听懂。这个项目让我发现,AI 完全听懂,也可能把事情做坏。




长程任务跑得越久,不代表越接近正确

我曾经越来越迷恋 Goal、Loop 和长程任务。一个 Agent 能独立跑得越久,看起来就越强。把任务交出去几个小时,我还可以同时启动其他项目,生产力仿佛又被放大了一层。

可长程任务放大的不只是生产力,它也会放大错误方向、范围膨胀和反馈延迟。

最折磨人的还不是一次做错,而是反复回归。它修好了 A,又破坏 B;补上一个边界,另一个入口开始失效;测试越来越多,项目看起来越来越完整,稳定性却始终无法收敛。任务越长,上下文越厚,前面的约束越容易被后面的修改稀释。我只能继续用自然语言让它修复自己,然后看着同一个问题换一种形式回来。

这种时候,“再跑一轮”很诱人。因为 Agent 仍在工作,屏幕上仍有新代码出现,我会觉得系统也许正在接近完成。但有时它只是在一个我已经看不懂的状态空间里继续移动。

传统软件开发其实早就认识这种风险。产品经理如果等到项目最后才验收,同样会发现需求偏移。敏捷开发把 Sprint 切到一两周,是为了让可用增量持续回到现实。AI 时代仍然需要这套思想,只是反馈距离要重新计算:过去两周积累的代码和复杂度,现在一两个小时就可能出现。

这并不意味着我必须盯着每一个技术 Slice。人的注意力也是有限的。如果 Agent 每完成一个小步骤就把我拉回来,注意力会被切得更碎;几个项目横向穿插,一天都在重新加载上下文,人会非常疲惫,真正需要深入判断的时候反而没有脑力。

我需要的不是统一把任务切短,而是把人的专注周期和 Agent 的自主周期分开。机械、可验证、可回滚的工作可以让它长跑;涉及产品方向、开放性设计和真实体验的工作,应该更早回到人面前。Agent 可以拥有长执行链,不应该因此自动获得长时间的决策权。

项目数量和长程任务一旦相乘,人的验收能力迟早会破产。




失控以后,我发现自己已经没有退路

以前自己敲代码时,控制感并不只来自“代码是我写的”。更重要的是,每一段代码为什么存在、状态怎样流动、哪里做过取舍,会在编写过程中逐渐进入脑子。代码和我对系统的理解是一起生长的。

现在很多 Web 项目几乎完全通过自然语言推进。我描述一个期望,AI 生成一批代码,我看一眼界面,再继续描述下一个期望。因为不再积极参与实现过程,我对系统的心智模型是断裂的。项目规模小的时候还能靠搜索和解释补回来,经历多轮长程修改后,我甚至不知道应该从哪里开始读。

与此同时,我能感觉到自己的传统编码能力正在下降。这不是一句怀旧。过去手写代码既是生产方式,也是一条逃生通道:项目出问题时,我可以进入关键路径,追踪数据和状态,亲手把它带回可控方向。

现在很容易出现一种能力断崖:

Agent 修不好,我也接不回来。

这才是“AI 厌蠢症”里最让我难受的部分。当 AI 犯错时,我没有底气从容接管,只能站在外面继续 Prompt。它每回归一次,我的控制感就下降一点,最后愤怒里混进了很强的无力感。

价值怀疑也从这里冒出来。一方面,我拥有了过去难以想象的杠杆,却没有做出多少自己真正尊重、愿意称为“我的作品”的东西;另一方面,原来的看家本领又在退化,失败时的下限正在消失。

我不想因此退回所有代码都亲手写的时代。那没有必要,也不现实。但我必须保留最低限度而可靠的接管能力:能读懂关键路径,能跟踪数据与状态,能定位问题,必要时能够亲手修改。代码可以下沉,逃生通道不能一起消失。




我可能不是在创作,只是在消费生成的刺激

回头看这段时间,我几乎没有真正停下来过。

高昂的订阅费会制造一种很奇怪的回本心理:模型不能闲着,Token 必须尽量用完。可为了“回本”制造十个无人维护的项目,消耗的不只有 Token,还有更多时间、精力和未来的注意力。

更底层的驱动力是害怕落后。社交媒体每天都在展示别人又用 AI 做出了什么,模型能力也确实在快速变化。我不知道那些故事有多少是真的,也无法还原它们背后的人工成本,但它们仍然会给我一种压力:如果没有持续尝试,我是不是正在被这个时代甩下去?

就算所有 AI 工具明天都免费、Token 无限,这种焦虑大概也不会自动消失。我还是会想启动新项目,因为新项目意味着新的可能性,也意味着我仍然在场。

Vibe Coding 为这种焦虑提供了极强的即时奖励。想到一个点子,描述几句话,界面、功能和代码就开始出现。每次刷新都有新东西,每次提交都像在证明自己仍然有创造力。相比缓慢地修一个旧 Bug,生成一个新世界显然刺激得多。

但 Demo 完成后,兴奋会突然消失。接下来是异常状态、交互不一致、文档、兼容性、性能和长期维护。这些事情无聊、重复,也不再带来“AI 又做出了什么”的震撼。我进入一种开发后的“贤者模式”,很快又去寻找下一个点子。

这让我不得不承认,一部分 Vibe Coding 表面上是创作,心理机制却更接近消费。传统娱乐消费内容,这种“生产性娱乐”消费的是模型能力、新鲜想法和快速生成的快感。因为磁盘上留下了代码,它比刷视频更像工作,也更容易骗过自己。

最后留下的是一批我不会再用的小项目:界面粗糙,Bug 很多,代码也没有真正被理解。低成本生成让这种东西越来越多,不只占满我自己的硬盘,也可能把更多半成品推向用户,继续给本来就充满噪音的软件行业制造垃圾。

快速原型本身不是垃圾。实验可以粗糙,可以失败,也可以只为了满足一次好奇心。真正的问题是,我既不愿意继续支付精修成本,又不肯承认实验已经结束,还把它计入自己的“作品数量”。

允许实验死亡,比假装它已经完成更诚实。




AI 压缩了首版,没有替我完成作品

我以前说,AI 让完成事情的效率提高了 10 到 20 倍。现在我必须给这句话加一个很重要的限定:它提高得最明显的是首版生成效率。

如果把需求理解、反复回归、真实验收、Bug 收敛和长期打磨都计算进去,端到端效率没有那么夸张。有些最终放弃的项目甚至是负收益:没有形成长期价值,却消耗了订阅费、时间、注意力,还留下新的维护负担。

模型自身也确实有能力缺陷。它很容易生成结构完整、语气正确的平庸初稿。UI 看起来像同一套组件库的随机组合;文章拥有整齐的标题、排比和总结,却没有真正的判断;Skills 写得很全面,实际使用时却充满空泛约束。AI 不天然拥有品味,也不知道哪些东西虽然“完整”,其实根本不值得存在。

但另一半责任在我。AI 交出平庸初稿后,我没有投入足够的注意力去验收、删减和重做。我享受了生成,却没有支付精修的成本,然后又反过来嫌弃产物充满 AI 味。

这也是为什么我重新尊重那些“传统”软件。它们的精致不只是视觉更漂亮、Bug 更少,而是功能、交互、性能和细节呈现出一种统一感,像是同一个人或团队长期使用过它、厌烦过它、推翻过它,最后认真决定哪些东西应该留下。

AI 可以把第一版压缩到几个小时,不能把观察、厌倦、取舍和重新判断所需要的时间也压缩十几倍。品味也不是在 Prompt 里写一句“高级、简洁、有设计感”。品味是在看到一个勉强能用的结果后,仍然愿意说不够好,并且知道该删掉什么。

真正的作品,往往从生成结束以后才开始。




慢下来,是重新拿回自己的节奏

我仍然相信 AI 编程是一次巨大的生产力变化。它让我跨过语言和领域边界,把过去只能想象的东西快速做出来。我不准备放弃这种能力,也不想靠重新手写所有代码证明自己的价值。

我要停止的是另一件事:用项目数量证明自己没有被 AI 时代淘汰,用长程任务的运行时间证明 Agent 足够强,再把不断生成误认为不断前进。

慢下来不是故意让 AI 少写,也不是给自己规定一套僵硬的项目数量制度。它首先意味着重新区分实验和作品。实验可以快速开始,也可以明确结束;如果我决定把某个项目留下,就要接受 Demo 之后那段漫长、无聊、没有生成快感的打磨。

我的注意力只能长期属于很少的事情。Agent 可以并发,人的品味和责任不能并发。我需要减少同时承诺要做好的项目,把精力留给那些在新鲜感消失后仍然想用、仍然愿意修的东西。

长程任务也可以继续存在,但它不再等于长时间交出判断。每一串局部的“是”累积到一定程度,我都需要退后一步:我们还在解决最初的问题吗?如果现在停止,已经得到的东西有价值吗?下一段代码真的值得出现吗?

我还需要持续保留接管能力。不是为了和 AI 比谁写得快,而是为了在它失控时仍有降级路径,不至于成为一个只能继续 Prompt 的旁观者。

AI 越来越强以后,真正稀缺的已经不是生成更多东西的能力。稀缺的是选择一个值得存在的东西,克制地做到足够,然后在所有刺激消失以后,继续把它打磨成自己愿意负责的作品。

AI 负责生成,人负责决定什么值得存在。

停止权,是我不能再外包的控制权。