【CSDN 编者按】AI 生成式开发工具正在席卷整个软件行业,许多人惊叹于它带来的提速奇迹,也有人对其取代程序员岗位感到焦虑。但当一位有着十年经验的开发者亲自实验,用两周时间生成了 1.2 万行代码后,他却从狂热转向失落,最终选择推倒重来。摘要:AI 生成式开发工具正在席卷整个软件行业,许多人惊叹于它带来的提速奇迹,也有人对其取代程序员岗位感到焦虑。但当一位有着十年经验的开发者亲自实验,用两周时间生成了 1.2 万行代码后,他却从狂热转向失落,最终选择推倒重来。
作者 | return-zero 翻译 | 郑丽媛
出品 | CSDN(ID:CSDNnews)
正如标题所说,几周前我在自己的代码仓中引入了 Agentic AI,但现在已决定将它拆分出来了。这篇文章可能会比较长,你可以把它视作一篇“亲身实录”。
考虑到不少读者可能已经被各种 AI 话题轰炸得疲惫不堪,我先奉上一段简洁明了的内容概括:我试图把“Agentic AI”融入开发流程,结果它就像《搏击俱乐部》里的 Tyler Durden,一不小心就把我的整个代码库给炸了。
10 年码龄开发者,想借 AI 提速
先做个简单介绍:我是一位有 10 年开发经验的技术负责人。
几个月前,我开始开发一款社交媒体应用(大概可以类比 BlueSky 这种类型)。它不是联邦制的(至少现在不是),但它是开源的,可以自己部署。这是我一直以来想做的一个“心头好”,从头到尾都是我手写的代码,几乎没怎么借助 AI。开发节奏虽然慢,但比较稳定,项目已经公开,有人会来找我聊天交流,我也感到很满意。
但有一个问题:我的开发时间非常零碎。因为家里有一个 5 个月大的宝宝,只有等全家都睡着以后我才能专注写代码。也正因如此,我对最近发布的一些“Agentic AI”解决方案格外感兴趣,想着或许能借此提提速。
大体来说,这个项目的技术栈非常简单:
● 移动端:React Native
● Web 端:Next.js
● 后端:Nest.js
● 数据库:Postgres
● 对象存储:S3
我之前用 AI 的经验只限于问问 ChatGPT,或者在 VSCode 中把 Copilot 当 StackOverflow 的替代品来用。我甚至还关掉了 Copilot 的自动补全功能,因为它经常太啰嗦了,而且不太靠谱。
但这次我决定尝试 VSCode 的“Agent 模式”。在动手之前,我给自己设定了几条原则:
1. 不用按 token 计费的模型
Agentic 系统的工作方式基本是“暴力试错”:反复迭代,直到得到正确结果。我不相信这种机制能在计费模型上用得好。坦白说,如果一个任务需要这么多轮才能搞定,那我自己动手或许还更快。不过这个原则我后来打破了——当我发现 Sonnet 4 在 6 月之前是不限量的,就想“试试看也无妨”,反正之后还可以再切回 GPT-4.1。这个后面还会详细说。
2. 每一行代码都要人工 review
我不是来搞“氛围编码”的(vibecoding)。这次,我想真正地把 Agentic AI 融入到我日常的工作流程中,看看它是否真的能帮助我提升开发速度。毕竟现实项目中,每一行被合入主干的代码都需要有人来兜底。如果 AI 真的代表了未来开发方式,那我希望搞清楚“未来到底长什么样”。
3. 不能半途而废
这听起来好像是废话,但我确实非常认真地按照 Agentic AI 的相关文档和最佳实践来操作。我反复研究了 copilot-instructions.md,也觉得自己当前的代码结构是挺合适引入 agent 的:已有的测试驱动开发(TDD)逻辑清晰、模块封装合理、API 边界清楚。我对自己说,这一套得真正跑得起来,才能把我的项目推上线。毕竟,现在有那么多开发者靠几条 prompt 就能部署上线,如果我不掌握这项技能,怎么跟他们竞争?
AI 的潜力,让我无法视而不见
在这次尝试之前,我其实对 AI 开发一直是持怀疑态度的那一类人。我的几个朋友总是兴冲冲地来找我说:“你看我 prompt 出了个啥!”然后展示一些半成品 UI,没有任何实质功能,只能完成一个唯一的使用场景。我随口问几个最基本的问题:
——怎么部署的?答不上来。
——用的什么技术栈?答不上来。
——有安全性措施吗?没有。
我一般会客气地提醒他们注意安全、注意质量,然后祝他们好运。但说实话,我内心是愤怒的——一些从没参与过技术工作、甚至连技术边都没摸过的人,现在居然跑来跟我说:“你很快会失业了,因为我用 prompt 写出了一个……连 MVP 都称不上的玩意”?要知道,就在几年以前,这群人还觉得我做的东西简直像“魔法”一样。
但转念一想,我开始担心自己是不是“错过了什么”。也许这些工具如果交给“正确的人”,真的能做出不错的作品?也许这项技术早就飞跃发展,而我还把脑袋埋在土里假装没看见?
在这个行业里,大多数时候你唯一的选择就是:如果你觉得重要,就别抱怨,赶紧学。
所以我决定不再嘴硬,转而认真学习,毕竟 AI 的潜力确实让我无法视而不见。
初次尝试“Agent 模式”:震撼到失眠
当我第一次把“Agent 模式”接入我的代码库时,真的是被惊到了——它几乎可以一键生成完整的“功能模块”:
● 自动编写前后端逻辑;
● 自动生成单元测试;
● 自动运行测试并验证功能是否符合预期。
说真的,那天晚上我根本没睡着。我真的一度以为:“AI 要取代我了。”
它完成了大量我认为是“机械性开发”的内容,比如数据库 CRUD 操作,而且效率几乎是我的五倍。我按照之前定下的规则逐行 review 了代码,提出改进建议,做了一些重构,它也都处理得非常好。按照我以往的评估标准,这已经相当于我布置给一位初级开发者的三天任务,而且它还执行得非常利索。
意料之中,我对它彻底上头了,就像上瘾了一样,疯狂地写 prompt、生成功能、重构代码。一行一行地过,我发现它的质量还真不赖!在差不多两周时间里,我一共生成了约 12000 行代码,并删除了约 5000 行旧代码——相比之下,在那之前我花了整整两个月,才写到 2 万行左右。
我当然知道 LOC(代码行数)并不是衡量生产力的好指标,我也承认这一点,但我实在想不出比这更直观的方式来描述我的开发速度在这段时间里到底加快了多少。
它生成的代码和我自己的风格、语法都很一致,还能自动校验 lint 规则、通过我的 CICD 工作流。说实话,我那时已经完全相信:“做开发的日子真的快到头了。”
然后,第二周来了……
逐渐“祛魅”:根本无法维护,也不再信任 AI
第二周刚开始,我几乎到了“见 prompt 就上头”的地步了,显然已经彻底沉迷了。上周我在应用开发上的进展,甚至超过了过去一个月的总和。把思维转化为代码对我来说已经非常自然,就像是我领域知识的直接延伸。生成的代码干净、可用,几乎不需要我这个“AI 暴君”再插手。
但接下来,事情开始变得诡异。
注意,我用的是所谓的“高级模型”。如果你不知道这是什么,可以这么理解:这些模型会把大量的化石燃料烧掉,只为生成一个只会单一功能、还做得很烂的 React 应用。我开玩笑的,当然,也不完全是玩笑……总之,这些算是目前市面上顶尖的编程 AI 模型了。Sonnet 4 刚刚发布,而 Anthropic 的模型也被公认为最擅长代码生成的 AI。
我在追求“AI 编码”的路上已经走火入魔,开始违背自己曾经定下的“规则 1”——但我就是想看看,顶配模型到底能把我带到什么地步。
我开始尝试开发一个新功能,说白了就是“所有社交平台都有的那种功能”,只是加了一点我自己的创新(在此就不剧透了)。我给它下了非常明确的 prompt,也给它逐步反馈哪里出问题了。
结果呢?每!一!次!它不是陷入无限循环,就是跑偏追错方向。而最糟糕的是,它死活不肯承认自己失败了,还拖拖拉拉、磨磨唧唧。
此时,我的代码库已经膨胀到 12k 行以上,应用的上下文复杂度也随之大增。AI 不再能像以前那样简单地 grep 一下关键词就找到 1~2 个可以修改的点了。现在,它每次查找都会碰上 10、20、甚至 30 个相关引用。更别提,每一次失败的尝试,如果是在 6 月 3 日以后,那就是按次计费的。模型失败时不会告诉我,但每一次失败都在悄悄地烧我的钱。
我开始怀疑自己是不是哪里出了问题:“那些聪明人都说他们可以靠自动代理做完整功能,完全不用开发者干预啊!”
于是,我给自己挖了个新的大坑,死磕代码、手动清理前端。我注意到代码库里其实藏着很多重复代码,在 isolated review 时不容易发现。同时也发现了一个让人抓狂的点:AI 根本不在乎命名是否准确。它会给变量起一个听起来很对的名字,但实际功能和这个名字毫无关系。
我承认,我可能从一开始就不应该接受这些代码合并。但问题是,这些修改看上去真的很不错。AI 写得信心满满,风格跟我的 style guide 完全一致,而我投入的精力和我 review 一位初级程序员的 PR 是一样的。
虽然我确实取得了一些进展,但当我退一步、从宏观上看整个项目时,开始产生一种莫名的失落感:这个代码库,不再有我当初那种专注细节、精雕细琢的味道了。
我不再为它感到骄傲——哪怕我才刚刚花了一整天,让 AI 对它进行了“花式重构”。然后,我意识到了更可怕的一件事:这玩意儿根本无法维护,而且我不再信任它了。
一些想法与后记
说实话,现在我依然对我们这个行业的未来感到有些恐惧。
AI 的出现,让一大批本来不会接触代码的人突然有了“我现在就是软件工程师”的错觉。而这种错觉正在腐蚀我们行业的专业认知,也在持续稀释真正的技术人才。
更糟糕的是,这也让我们越来越难分辨谁是真正懂行的人,谁又只是在演戏。对了,还有一点:判断标准绝对不是看谁刷 Leetcode 刷得多。现在有太多“技术 coser”,他们可能对营销很有一套,甚至能包装得滴水不漏,但本质上是在玩 cosplay。
我也不知道该怎么让这些非技术出身的朋友明白“你不知道自己不知道的东西”,除了用一点被动攻击性的方式,拿他们生成的项目,慢慢地用真正的软件工程原则去“审问”他们。而现实是,他们中的大多数人,在项目卡到一定程度后,已经从头重写了三四遍了。
不过,我依然还在尝试把 AI 纳入我的开发流程。我现在做的,是把整个项目在引入 AI 之前的版本 fork 一份新仓库,开始手动重写所有功能,把 AI 生成的代码当成一种“模糊参考”,而不是直接用。我越来越相信,AI 的使用边界就应该止步于此:它永远不该直接往一个实际的代码仓里写功能性代码。
它的价值应该体现在两个方面:一是分析现有代码,二是作为文档提供一些示例代码。
我现在偶尔会在 VSCode 里用 inline 的 Cmd+I prompt 工具,体验还算可以。尤其是用在小函数级别(比如五行以内的函数)时,效果还算稳定、可预测。但要是让它一口气生成一个垂直功能模块,那简直就是灾难。
总之,如果你读到这里,我也真心希望能听听你的想法。是不是我哪里理解错了?你也有类似的体验吗?我现在觉得,自己算是站在了 AI 开发两端的分界线上,好好钻研了一番,但我最终的结论却是——这玩意儿跟我们手写的屎山代码,其实也差不多。
📢 2025 全球产品经理大会
2025 年 8 月 15–16 日
北京·威斯汀酒店
2025 全球产品经理大会将汇聚互联网大厂、AI 创业公司、ToB/ToC 实战一线的产品人,围绕产品设计、用户体验、增长运营、智能落地等核心议题,展开 12 大专题分享,洞察趋势、拆解路径、对话未来。
来源:CSDN