ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI编程提效复盘:工具过剩,真正的瓶颈在认知负担

AI编程提效复盘:工具过剩,真正的瓶颈在认知负担 工具已经够多AI 真让我的开发变快了吗前几天下午我花了三个小时重写一个老模块的状态管理本来想把这活儿直接丢给 AI 助手让它一口气把整个文件重构完。结果来回折腾了七八轮越改越偏最后实在忍不了关掉对话框自己上手二十分钟搞定。坐在屏幕前我就在想这两年我订阅了好几个 AI 编程工具桌面上堆满了各种效率插件口袋里揣着一堆自动化脚本工具是真的够多了。可回头看看实际交付的项目我真的比两年前更快了吗这是一个挺扎心的问题。我拉了一下自己过去一年的项目数据功能开发数量确实涨了但排期估时并没有明显缩短线上 debug 的时长也没降下来。工具变多了AI 变强了效率却没有出现那种指数级的跃升。于是我花了大概两周时间系统地复盘了自己的工作流——从需求拆解到编码从 code review 到联调测试把 AI 参与的部分和纯手写的部分分别做了统计。这篇文章就是这次复盘的完整记录包括我踩过的坑、实测的数据、以及最后沉淀下来的一套真正有效的使用原则。如果你也在被“AI 能不能提效”这个问题困扰或者正在一堆工具里挑花眼这篇东西应该能给你一些参考。1. 工具早就过剩了瓶颈根本不在工具数量先说个我在复盘时发现的扎心事实我的开发工具链里光编辑器插件就装了 27 个。其中跟 AI 相关的有六七个包括代码补全、对话式助手、自动生成 commit message 的、自动写测试的甚至还有自动写代码注释的。听起来很唬人对吧但你猜实际每天高频用到的有几个三个都不到。工具过剩恰恰是效率的最大杀手之一。工具数量与效率之间不是一个简单的线性关系而是一条先上升后下降的曲线。工具太少很多重复劳动确实拖慢速度但工具一旦超过某个阈值你的注意力就会被反复打断。写代码本身是一个高度依赖心流状态的活动每一次从编辑器切到聊天窗口、从聊天窗口再切回来看起来只花了几秒钟但大脑重新进入深度工作状态需要十几分钟。我翻了一下自己某天的屏幕使用记录一天之内在 IDE、AI 对话工具、浏览器文档站之间切换了 400 多次。每次按 5 秒算光切换成本就超过了半个小时更别提那些看不见的心流重置成本。更隐蔽的问题是每个工具都有自己的上下文管理方式。同样的一个函数粘贴到 A 工具里它能理解粘贴到 B 工具里它就完全断片。为了适应不同工具的脾气我还得在提问前手动整理一遍代码上下文。这个整理过程本身比我自己写这段代码还费劲。所以我复盘得出的第一个结论是不要再执着于找下一个更好的 AI 工具。工具的数量已经远远超过了一个人的注意力承载上限。真正值得花时间的是搞清楚在哪些环节工具能替你扛活在哪些环节工具反而在帮倒忙。我自己后来做了一次大清理把所有插件全部禁用然后用一周的时间逐个验证哪个没了会让我明显难受哪个没了反而觉得轻松。最后留下的 AI 相关工具只有两个——一个负责补全和即时问答一个负责大段代码的生成和重构。其他全部卸载。这个动作本身就让我的编码连贯性恢复了不少。2. 我实测了两周AI 在不同环节的真实加速比光凭感觉说话没有说服力所以我做了一次相对认真的实测。我选取了自己手头一个中型业务项目拆成四类典型任务每类任务挑两个规模相近的需求一个纯手写一个借助 AI 完成记录从开始编码到本地自测通过的实际耗时。这个项目是 TypeScript React 的技术栈代码老但我很熟AI 用的也是我日常生产力最高的那套组合不是刻意拔高的配置。第一类是 CRUD 页面开发包括列表页、表单、弹窗交互。这类活儿重复度高、模式明确AI 的发挥相当稳定。手写平均耗时将近两个小时AI 辅助大概四十分钟加速比在 3 倍左右。这里 AI 的价值在于样板代码一次成形尤其是表单校验和列表分页这种套路逻辑几乎不用改。第二类是接口联调和数据转换。前后端联调时的数据格式调整以及各种 Map、Filter、Reduce 组合拳AI 的表现也很不错加速比大概在 2 倍上下。这类任务的共同点是逻辑边界清晰输入输出明确AI 不容易跑偏。第三类是既有模块重构。我选了一个两百多行的老函数拆分成几个小函数外加状态管理的结构调整。这类任务 AI 的表现就比较挣扎了——它给出的拆分方案经常忽略原始代码里的隐性逻辑尤其是那些靠副作用维持运行的地方。实测加速比只有 1.2 倍而且这还是算上了我反复纠错的成本。如果遇到那种改动牵扯面特别广的重构AI 的参与实际上会让总耗时更长。第四类是疑难 bug 排查。我复现了一个只在特定数据组合下才触发的内存泄漏问题AI 给了一堆可能性从闭包引用到事件监听器泄漏猜了个遍但始终没有命中真正的根因。最后是我自己通过逐行审查调用链才锁定的问题。这一类任务 AI 的加速比约等于零甚至为负。把这四类数据放在一起看结论就很清晰了AI 谈不上让我整体提速多少倍它的真实价值集中在结构性、模板化的任务上而在需要深度理解系统行为、追踪隐式依赖关系的任务中AI 目前仍然是一个需要我消耗大量精力去纠偏的辅助角色。我过去对 AI 提效抱有那种“全流程变快”的预期本身就是错的。3. AI 参与度越高认知负担转移得越厉害工具本身不会创造效率效率来自认知负担的有效分配。这句话是我这次复盘最大的认知转变。很多人觉得 AI 帮忙写了代码脑力消耗就减少了。但我的实际感受恰恰相反AI 参与越多我的认知负担没有消失而是从“怎么写”转移到了“怎么审”。以前手写代码逻辑是在脑子里构建完再落到编辑器里的写的过程虽然慢但每行代码都有清晰的理由。现在 AI 几秒钟生成一大段代码结构和我的思维习惯很可能完全不同。我需要逐行理解它为什么要这么写还要评估它哪里可能埋了雷。这个“理解他人代码”的成本往往比从零写一遍还要高。最典型的例子是生成正则表达式。以前我写一个校验规则思路是自己拆解的。AI 一次给出的正则复杂到让人头皮发麻关键是你根本不知道它匹配边界是否覆盖了所有用例。我测试了十几个边界条件才敢放行。表面上看生成用了 10 秒实际上验证用了 20 分钟。期间我还在脑内反复推演各种异常输入。这种认知负担的转移在复盘数据里是看不到的但每一天的工作体验里都能清晰感知到。还有一个被很多人忽略的问题AI 生成的代码风格稳定性差。同一个功能你让它写十次它会给出十种不同的解决方案而且在同样的语义下选用的 API 也不一样。这在个人项目里问题不大但在多人协作的代码库里就是个隐患。队友看到一段风格突兀的代码阅读成本会明显上升。我后来被迫做了一件事把团队代码规范里能固化的部分全部写成规则文件喂给 AI让它尽量在风格上向既有代码靠拢。但即便如此每次 AI 生成完我还是得手动过一遍风格。时间省了精力没省。这也是为什么我后来果断放弃了“代码生成越全越好”的思路。AI 参与度不是越高越好而是要在“生成收益”和“审查成本”之间找平衡。对于简单、模式化的代码AI 生成的收益远大于审查成本对于复杂度高、隐含状态多的代码我宁可自己动手写也不要让 AI 介入。这是我这次复盘里最重要的一个判断原则。4. AI 最擅长和最不擅长的其实就一条分界线复盘做久了我逐渐摸到了 AI 擅长的边界。这个边界用一句话就能说清楚逻辑密度越低的地方 AI 越高效状态越复杂的地方 AI 越不可靠。我们程序员平常写的代码可以粗略分成两类。一类是“翻译型代码”——把明确的需求翻译成 API 调用、数据结构、条件判断。这类代码逻辑密度低每行都很直白没有太多隐式状态。比如表单页的校验逻辑、列表数据的分页筛选、根据接口文档写的类型定义、常见的工具函数都算这一类。AI 在这一类的生产力是真高因为它本质上是在做模式匹配而模式匹配恰恰是语言模型的强项。另一类是“推演型代码”——需要追踪多个状态的联动变化理解数据流在不同模块间的流转判断一个改动会不会影响其他功能。比如复杂的业务状态机、跨模块的事务处理、需要精确控制生命周期的资源管理等。这类代码的每一行看起来都不复杂但组合在一起逻辑密度极高。AI 生成的代码在这里经常出现“单独看每段都是对的合在一起就错了”的问题。最典型的例子就是并发控制——它给你生成一个看似处理了竞态条件的版本但你可能要盯着它看很久才能发现真正的问题出在某个变量的可见性假设上。除了代码类型本身上下文信息的完整性也是关键分界线。我观察到一个规律AI 表现的优劣和 prompt 里包含的信息颗粒度高度相关。你自己心里清楚需求的前因后果但你很难在几行 prompt 里把这套前因后果完整地描述出来。尤其是那些散落在团队 Wiki、历史 commit、群聊记录里的隐性知识AI 根本看不到。它只能基于你给出的片段做推理而推理出来的方案往往因为缺少业务约束而显得“正确但不可用”。所以后来我在团队里推了一个小约定涉及复杂业务逻辑的模块AI 只用来生成初稿和做单测核心逻辑必须手写并经过严格 review。简单的 CRUD 可以放心让 AI 多干活。这条分界线立了以后团队里因为 AI 代码引发的 bug 明显减少。5. 我怎么调整自己的工作流和信息输入方式既然是复盘就不能只停在认知层面我确实对自己的工作流做了几处实实在在的调整。调整的核心思路是让 AI 在我能完全掌控的范围内干活在它不可靠的领域果断自己上。先说 prompt 方式的改变。以前我用 AI 提问时习惯把问题直接甩给它期待它给出完整答案。现在我会在提问前先花两分钟自己把问题描述清楚。具体来说我会在 prompt 里包含四个要素当前代码上下文、期望的输出形式、已知的约束条件和验收标准。比如我不会再说“帮我优化这个函数”而是说“这个函数在处理空数组时会报错我希望它返回空对象而不是抛异常请保持其他行为不变输出符合团队 eslint 规则的版本”。看起来只是把需求说详细了一点但 AI 的返回质量提升非常明显因为它的猜测空间被大幅压缩了。第二个调整是分段让 AI 干活。以前我试过那种非常激进的玩法直接把整个文件塞给 AI让它一次重构完。现在基本不这么干了。我的新习惯是每次只让 AI 处理一个函数级别的任务而且会明确告诉它“不要动其他部分”。有一次我试着让它一次重构三个互相依赖的函数结果它把三个函数全部重写了接口签名也改了整个调用链全部崩掉。改成一次一个函数之后这种情况几乎再也没出现过。第三个调整是给 AI 输出的代码套一层强制约束。我建了一个约定凡是 AI 生成的代码进入主分支之前必须有一道独立的单测来锁行为。这不只是工程规范更是一种心理防线——如果 AI 生成代码出了 bug单测能第一时间兜住免得我花大量时间在联调阶段去排查。这个习惯帮我挡住过好几次线上事故。第四个调整和信息输入有关。我停掉了大多数 AI 相关资讯源包括那些天天推送“XX 工具又出新功能”的账号。原因很简单在复盘里我发现频繁关注新工具新技巧对我实际产出的帮助微乎其微反而大量消耗了我的决策注意力。现在我只会花少量固定的时间去验证自己的工具链是否仍然有效不会因为某个新工具号称“十倍提升”就立刻切换。工具是为工作流服务的工作流不应该反过来追着工具跑。6. 踩过的典型坑AI 生成的代码让我深夜翻车的完整链路说到 AI 生成代码的风险我真心觉得不踩一次是不会长记性的。那次翻车不是线上事故但足以让我警醒过程非常典型值得完整记录。背景是一个定时任务模块需要每小时从第三方拉取数据、做清洗、写进本地数据库。这个模块的原始代码是我很早以前写的逻辑比较简单但有个隐藏约束处理过程中不能重复消费同一条记录不然会产生脏数据。那天我赶着上线另一个功能急着把定时任务的并发控制能力加上就随手把这一段扔给 AI 让它“加上幂等处理”。AI 很快就给出了一版。它用数据库唯一索引做了去重逻辑看起来非常完整。我当时也没有细看直接把代码合进去了。结果第二天凌晨定时任务开始报错大批数据缺失。我爬起来排查了整整两个小时最后发现问题出在一个非常隐蔽的地方AI 生成的处理流程里它在事务提交前先删除了一个临时表而这个临时表恰恰是另一条数据链路的唯一依赖。它自己那部分逻辑看起来没毛病但它没有意识到这个表还有别的消费者。这个案例给我最大的冲击是AI 根本不知道我的系统里有哪些隐式依赖。它只能看到它被要求修改的那一段代码。所有跨模块、跨数据流的影响都只能靠我来判断。我当时如果写的是“在现有函数上增加幂等逻辑不要改动其他逻辑”而不是宽泛的“加上幂等处理”这个事故完全可以避免。吃一堑长一智后来我给自己定了一套 AI 代码入库前的强制检查清单分享出来给你参考AI 生成的代码是否涉及了它本来不该碰的模块是否存在调用链上游的接口变更风险有没有从数据库层面做出的隐式变更并发行为是否符合业务期望而非仅仅逻辑自洽是否有独立的测试用例锁住核心行为这五条不复杂但每一条都来自真实的事故。当时我不相信 AI 会在这种小任务上翻车正是这种轻信支撑了整条错误链路。从那以后我宁可多花十分钟审查也不愿再在凌晨爬起来对着日志发呆。7. AI 编程的真实定位不是加速器而是杠杆复盘走到这里我想回到标题的问题上AI 真让我的开发变快了吗我的答案是变快了但和大多数人想象的方式不一样。它不是那种均匀地把所有环节都加速 30% 的“全流程加速器”。它更像是一个杠杆——把你花在某些环节上的时间成倍地撬动回来但只在特定的受力点上有效。当你把杠杆放在正确的支点上效率是肉眼可见的提升放在错误的支点上不仅撬不动还会把自己搞得筋疲力尽。在 CRUD 页面在接口胶水层在数据格式转换在配置文件的编写上AI 确实是无可争议的效率神器。这些环节的共性是需求明确、模式成熟、上下文信息大部分可以写进 prompt 里AI 几乎不需要猜测业务意图。在这些地方我现在的开发速度比以前快了一倍还不止。但到了系统设计、复杂状态管理、跨模块重构、疑难 bug 排查这些环节AI 的杠杆效应会迅速消失甚至变成反向的。因为这些场景的决定性因素是对系统隐性约束的理解而这个东西不在 AI 的上下文窗口里只在我的脑子里。强行让 AI 参与这些环节本质上是在用它的“自信”对冲我的“准确”这是一笔亏本的买卖。所以我现在的态度是接受 AI 是一个优秀的执行者而不是一个可靠的设计者。设计归我执行交给它。这个分工听起来不难但真正贯彻到位需要对自己的能力边界和工具的能力边界都有清醒的认知。不然你很容易被 AI 那种“看起来什么都会”的错觉牵着走在它不擅长的领域浪费大量时间然后反过来怀疑自己是不是不会用工具。8. 到底什么样的人适合依赖 AI什么样的人应该自我克制这个问题我在团队里被问过很多次。每个人的基础和工作性质不同AI 对他们的意义是不一样的。我总结下来判断自己适不适合向 AI 大量借力可以看三个条件。第一你是不是有足够的经验来审查 AI 的输出。这是最核心的一条。AI 生成代码的速度远快于你的阅读速度如果你的能力还不足以快速判断一段代码是否正确、是否优雅、是否有隐患那你就是在盲目信任一个有时会一本正经胡说八道的助手。我见过一些刚入门不久的朋友用 AI 写出来的代码功能都对但他们说不清为什么会错也看不出潜在的问题。这种情况下依赖 AI等于是在泄漏风险。第二你的工作流是偏向小步快跑还是一个长周期交付。做原型、做活动页、做接私活交付AI 的价值非常直观做那种核心业务系统、生命周期很长、多人迭代的代码库AI 生成的代码如果没有经过严格的制度化约束长期来看会积累出一堆没人敢动的“灰色地带”。我可以明确地说AI 写出来的烂代码维护成本比人肉写出来的烂代码要高得多因为它的烂是“烂得很自然”的烂不深入理解很难发现。第三你对自己的效率瓶颈有没有清晰的感知。很多人用 AI 提效其实并不知道自己慢在哪里。慢在重复劳动的人AI 能帮上忙慢在逻辑推演的人AI 帮不上忙慢在频繁返工和沟通的人AI 只会在旁边干瞪眼。搞清楚自己的瓶颈在哪比盲目拥抱 AI 重要得多。如果你慢的原因是对业务的理解不深入、对系统的全貌不熟悉那么最有价值的事情是把业务和系统啃透而不是借助 AI 把代码生成的效率提上去——因为生成速度再快你也不知道该生成什么。我个人的建议是如果你是经验丰富、能完全掌控 AI 行为的开发者放心大胆地在模式化场景里借助 AI它的确定性收益非常香如果你还在积累阶段尽量把 AI 当作学习辅助而不是生产工具。让 AI 解释代码可以让 AI 帮你评审可以但不要让 AI 替你把思考的过程省掉。那些思考过程恰巧就是未来你审查 AI 输出时的资本。回看这两周的复盘我最大的收获不是哪一套工具组合最好用而是建立了一个对 AI 提效这件事的合理预期。工具该用还得用但心里要有一杆秤知道哪些环节能真省时间哪些环节只是换了一种方式消耗时间。至少在目前这个阶段“AI 让我从繁重的编码里解放出来”更像一个故事而“AI 帮我处理了那些模式化的脏活”才是一个真实可感的事实。把立场摆在这条线上开发效率这个事才真正开始变得可控。
返回列表