写代码这件事,说到底是两件事组成的:想清楚要做什么,然后把想清楚的事变成代码。前者靠经验和业务理解,后者在很多场景下其实是体力活。我过去一年多把AI编程工具真正嵌进了日常开发流程,最大的感受不是“代码不用我写了”,而是“我不需要把精力浪费在那些本来就不该由人反复去打的字上”。这篇东西我想把AI编程提效这件事拆开揉碎,讲清楚它到底提在哪些环节、每个环节能省多少事、怎么落地才不会翻车。如果你正在纠结要不要用AI编程、已经用了但觉得“也就那样”,或者带团队想把AI落地到研发流程里,这十来个模块的拆解和方案应该都能给你一些参考。
1. 先搞清楚:AI编程提效到底提在哪些环节
1.1 不要把AI当成“自动写代码机”
我见过不少同事,第一次用AI编程工具时期待值是“我给它一个需求,它把整个系统写完”。用了一周之后发现不是这么回事,就下结论说“AI编程是噱头”。这两种极端都是因为没搞清楚AI编程的真实定位。AI编程工具本质上是一个“理解力很强但判断力有限的结对编程新手”,它非常擅长在你给出足够上下文和约束时,快速产出符合主流写法的代码片段、测试用例和文档草稿;但如果你自己都不清楚边界条件、异常分支和性能要求,它就会一本正经地给你生成一份看起来很像样、跑起来就崩的代码。
所以讨论“提效”之前,先要把预期放对。AI编程真正提效的环节,几乎都集中在“需要大量已知模式拼装”的工作上,而不是“需要深度领域判断”的工作上。这一点想通了,后面的工具选型和流程搭建才有意义。
1.2 十大模块速览:一张表看清AI编程的发力点
我根据自己在业务开发、开源项目维护和带团队落地AI工具这几年来的实操经验,把AI编程能真正发挥作用的地方分成了十个模块。这十个模块基本覆盖了日常开发里高频重复的各项动作:
| 模块 | 解决的痛点 | 提效程度 | 上手难度 |
|---|---|---|---|
| 代码生成与补全 | 样板代码、重复逻辑 | 高 | 低 |
| 代码解释与理解 | 阅读旧项目、陌生框架 | 高 | 低 |
| 单元测试生成 | 测试覆盖不足、用例枯燥 | 高 | 中 |
| 代码审查与扫描 | 人为review漏检 | 中 | 低 |
| 重构与性能优化 | 代码腐烂、性能隐患 | 中 | 中 |
| 文档生成与维护 | 文档滞后、注释缺失 | 高 | 低 |
| 调试与故障排查 | 报错堆栈、日志分析 | 中 | 中 |
| SQL与数据处理 | 查询编写、慢SQL优化 | 高 | 低 |
| 脚手架与样板工程 | 项目初始化、CRUD重复 | 高 | 低 |
| Agent自动化任务 | 多步重复操作 | 中 | 高 |
这十个模块不是并列的。前六个解决“代码本身怎么来的”问题,后四个解决“代码在系统里怎么跑、怎么管”的问题。我在实际使用中体会到,不同角色的开发者对它们的依赖程度完全不一样:后端业务开发用得最多的是代码生成、SQL和单元测试;前端开发在脚手架和组件样板代码上受益明显;算法工程师更多用代码解释和调试排查;而团队负责人最关心的往往是代码审查和Agent自动化那两栏,因为那部分直接关系到研发流程的规范化。
这个模块化的拆法还有一个好处:你可以对照自己的日常工作,找出最痛的那两三个模块先落地,而不是一上来就追求“全流程AI化”。我自己踩过的坑就是一开始什么都想让AI做,结果流程没搭好,反而在验证AI输出上花了很多时间。后来改成小步快跑、按模块逐个优化,效果反而好得多。
2. 十大模块逐项拆解:原理、价值、局限
2.1 代码生成与补全:最直观的效率提升
这一块是多数人接触AI编程的第一站。原理上说,代码补全类工具基于大语言模型对海量开源代码的学习,在给定当前文件上下文、光标前文和项目内相关代码后,预测接下来最可能出现的代码。它和传统IDE的“自动完成”完全是两个层次:传统补全只能根据语法提示和符号表给候选,AI补全则是根据语义理解来生成整行、整块甚至整个函数。
我在实际项目里用得最多的场景有三个:
- 写DTO、Mapper这类字段和表结构几乎一一对应的样板类;
- 在已有接口规范下快速生成Controller-Service-Mapper的标准三层代码;
- 用注释描述一个函数的输入、输出和边界条件,让AI直接生成函数体。
第三个场景最有意思。比如我写一个“统计某段时间内每个品类的订单金额占比”的接口,如果在函数上方写清楚入参类型、返回结构、边界要求(比如时间为空直接返回空列表),AI生成的第一版代码通常能达到“改两处就能用”的程度。但这背后有一个很重要的前提——你得很清楚自己要什么。AI不是替你思考,而是帮你把已经想清楚的逻辑更快变成代码。
踩过的坑也值得说一下。最容易翻车的是“把AI当搜索引擎用”,让它生成一段自己完全看不懂的代码,然后直接贴进去。AI生成的代码在语法上几乎没有问题,但在业务语义上经常出现“很合理但不符合你的场景”的情况。所以代码生成模块的正确用法是:让AI生成初稿,然后你逐行review,重点检查分支逻辑、边界条件和资源释放这些最容易被“看起来正常”掩盖掉的问题。
2.2 代码解释与遗产代码消化:把“看不懂”变成“看得懂”
接手旧项目大概是很多开发者最头疼的事。一份没人维护了三年的老代码,没有文档,变量命名还是拼音缩写,函数动辄几百行。以前我拿到这种代码,只能靠人肉打断点、打日志、一层层往上逆推。现在我会直接把一段代码贴给AI,让它按“整体功能—关键步骤—数据流转—风险点”的结构给我讲一遍。
这个模块的原理本质上是“反向解释”:代码本身是一种精确的表达,但它的信息密度太高,人类阅读时需要先把它翻译成抽象的意图。大语言模型在抽象理解上的能力恰好能承担这层翻译工作。我会让AI先给出一句话总结,再要求它逐段标注每段代码的作用,最后让它列出这段代码里可能存在的边界条件和隐含假设。这三个层次下来,我阅读一段陌生代码的效率至少提升了三分之一。
需要提醒的是,代码解释的输出不等于代码评审结论。AI可能理解错某些业务规则,尤其是当代码里存在特殊的领域逻辑或历史上被注释掉的代码时,它给出的解释会有偏差。我通常的做法是:把AI的解释当成一个“跳板”,它先告诉我代码大概在做什么,我再对重点区域做人工确认。用这样的方式读老代码,比从零开始人肉啃要省力很多,因为你不需要再花时间揣摩每一个变量的用途了。
2.3 单元测试生成:补上最枯燥的环节
单元测试是典型的“人人都知道重要,但没人愿意多写”的工作。难的不是写测试本身,而是想清楚边界条件和异常分支。AI在生成测试用例方面的表现,其实比很多人预期的要好。你只要给它一个函数签名,再告诉它几个你关心的边界值,它就能生成一组覆盖正常路径、空值、极端值和异常路径的测试用例。
我在一个交易系统项目里做过一次不算太严格的实测:让AI根据一个包含金额扣减、库存校验、流水记录三个步骤的服务方法生成JUnit测试用例,生成出来的用例有一半可以直接跑过,另一半需要微调mock逻辑和断言值。更关键的是,它提示到了一些我一开始没想到的边界场景,比如金额为零、库存刚好等于购买数量、并发扣减等。这些都是它的训练语料里反复出现的“标准问题”。
但这里也有一个很现实的问题:AI生成的测试容易出现“漂亮的断言”。什么叫漂亮的断言?就是断言写得很整齐,但实际验证的是AI自己生成的那套实现逻辑,而不是业务需求里真正应该保证的不变式。比如它可能断言返回值等于一个具体数字,但正确的做法应该是断言“库存扣减之后大于等于零”或者“流水表里新增了一条记录”。所以测试用例生成这块,人工去看断言到底在验证什么,比看覆盖率数字重要得多。
2.4 代码审查与质量扫描:让AI当第二双眼睛
以前做代码审查,靠的是reviewer的经验和耐心。一个人review久了,很容易对某些模式产生审美疲劳,比如习惯了某处六个if-else嵌套之后,就会觉得“反正逻辑对,没必要改”。AI代码审查的价值不在于它比人更专业,而在于它不会疲劳。它会像扫描仪一样逐行检查差异,标记出空指针隐患、资源未关闭、并发问题、异常被吞掉这一类“高频低级问题”。
实操上,我会在提MR之前把diff贴给AI,让它先做一遍差异审查,然后我再针对AI列的清单去人工确认。或者用支持本地diff审查的工具直接在IDE里跑。这么做最大的好处是节省了reviewer的注意力,他可以集中精力看业务逻辑和架构层面的问题,而不用反复在一堆重复的“少了个非空判断”上打转。
值得强调的是,AI审查的输出需要分级看待。像“空指针风险”“资源泄漏”这类问题,基本都是可信的;像“建议把这段逻辑抽成公共方法”这类风格类意见,需要结合项目现状判断;像“这里存在安全风险,建议增加权限校验”这类结论,一定要自己核实后再说改不改。我见过有人把AI审查的所有意见都当成圣旨全盘接受,结果把本来很清晰的代码改得过度抽象,反而增加了阅读成本。
2.5 重构与性能优化:从“能跑”到“跑得好”
重构是最能体现AI编程工具“方案能力”的模块。当你给AI一段又长又臭的方法,并告诉它“把这个方法按单一职责拆成三个方法,保持对外行为不变”,它通常会给出一个结构清晰的重构版本。比人肉重构优势明显的地方在于,AI能同时处理多个约束条件——拆出来的方法A要复用给其他调用方、方法B要保持无副作用、方法C的入参要向后兼容。
性能优化方向的提效也很有意思。前几天我处理一个导出功能,几十万条数据导出时经常内存溢出。我把核心循环逻辑贴给AI,要求它“在不改变业务结果的前提下,指出可以降低内存开销的优化点”。它给出了三个建议:一是把全量查询改成流式游标查询,二是避免在循环里频繁拼接字符串,三是复用对象而不是每次new。这三条都是很常规的优化手段,但它能在几秒内定位到问题代码并给出明确修改位置,比我一行行看下去快得多。
不过重构和优化也都是风险较高的操作。AI给出的重构方案在逻辑上可能是正确的,但它不知道你代码里那些“丑但是有原因”的历史包袱。比如某个看起来无用的循环,可能是在等一个外部系统的最终一致性。所以这一类操作我的原则是:AI出方案,人工定边界,小步提交、跑完整单测再合并。绝不会出现“AI说这样改没问题,我就直接改了”的情况。
2.6 文档生成与维护:写文档这件事也能自动化
文档是开发流程里永远“够呛”的一环。代码写完了,接口文档没人更新,README停留在两年前,新同事接手时一脸懵。AI编程工具在文档这块的提效非常直接:它可以基于代码生成API文档、基于git diff生成变更说明、基于整个项目的上下文生成README初稿。
我日常用得比较多的两个场景是接口注释生成和变更说明生成。接口注释方面,我给每个Controller方法补充Javadoc时,直接把方法签名和业务背景丢给AI,让它生成参数说明、返回值说明和异常说明,然后我快速核对一遍。变更说明方面,我提交代码前让AI根据diff生成一版简洁的MR描述,把技术要点和影响范围都列出来,这样Reviewer和将来的后来人一看就明白这次改动在干什么。
但这块有一个隐蔽的坑:AI生成的文档在语言上非常流畅,所以更容易掩盖事实错误。比如它可能把一个接口的返回类型描述写对了,但把异常场景写成了和实现不一致的版本。文档和代码的对应关系,必须人工确认。我的习惯是:AI生成的每一条文档,我都要求自己能在代码里找到对应依据,找不到就删掉或修正。宁可文档少一点,也不要看起来头头是道、实际是编的文档。
2.7 调试与故障排查:给Bug诊断提供线索
Debug这件事,过去是非常吃经验的。异常堆栈贴到搜索引擎里,翻半天帖子才能找到类似问题;现在直接把堆栈和上下文代码贴给AI,它能很快帮你定位到可疑代码行,并解释为什么会抛出这个异常。尤其是空指针、数组越界、类型转换失败这一类有明确堆栈的异常,AI的判断准确率相当高。
我自己的排查流程变成了这样:拿到线上报错后,先贴堆栈让AI给一个“可能原因优先级排序”,然后按这个排序去检查自己的代码。大多数情况下,AI列出的前两三条原因就会覆盖真实问题,因为这类异常的原因高度模式化。比如“List.get(index)越界”,AI会立刻问到“你有没有先判断index是否小于size”,这在业务代码里几乎是命中率最高的问题。
但遇到业务逻辑耦合很深的Bug,AI就帮不上太大忙了。有一次线上出现订单状态被异常回滚的问题,我把相关代码贴过去,AI分析了半天也只能列出一堆通用可能性,最后还是我自己通过日志里一个毫秒级的时间差,发现是回调接口并发触发了两次。这类问题没有足够多的日志和上下文时,AI和大海捞针没什么区别。所以调试模块的正确用法是:让它帮你把常见原因快速排掉,把精力集中到真正需要业务判断的疑难杂症上。
2.8 SQL与数据处理:数据分析场景的高频提效
SQL大概是AI编程工具里“性价比”最高的领域。原因很简单:SQL的场景高度标准化,表结构、查询目的、优化手段都是相对固定的模式。你给我一张订单表结构和一张用户表结构,告诉我“统计每个用户的累计消费金额和最近一次消费时间”,AI写出来的SQL通常可以直接跑通,甚至还会主动帮你考虑空值处理和去重问题。
更高级一点的使用方式是“用对话把模糊需求变成精确SQL”。我会把表结构DDL贴给AI,然后用自然语言描述业务需求,再问它这个需求在SQL层面应该怎么拆。它会给出多表关联的方案、临时表方案或子查询方案,并说明各自适用场景。有一次我要做“每个品类销量Top3商品”的分组TopN查询,AI直接给出了窗口函数ROW_NUMBER()的写法,还提醒我用PARTITION BY区分品类、用ORDER BY排序、在外层加WHERE过滤排名。这些内容我平时也能写,但用对话的方式来回讨论,比自己翻文档、试错要快得多。
慢SQL优化是我的另一个常用场景。把慢查询SQL和执行计划贴给AI,让它指出哪些地方可能不走索引、哪里产生了隐式类型转换、是否可以改写成覆盖索引查询。它给出的建议大多是可靠的,因为索引优化在高频语料里反复出现。但要注意,AI对数据量和数据分布的敏感程度有限,它不知道你的表里有没有大量重复值、字段枚举值是不是倾斜,这些最终还是要靠真实的执行计划和explain analyze来确认。AI给你的是优化方向,不是优化结论。
2.9 脚手架与样板代码:把重复劳动交给AI
每个项目启动初期都要搭脚手架,每个新功能上线前都要加一批CRUD接口。这部分工作的特点是“模式固定、量巨大、几乎没有创造性”。以前我写一个标准的三层CRUD,Controller、Service、Mapper、DTO、实体类加起来要写五六个文件,虽然每个文件都不难,但重复下来很耗精力。现在我会把建表语句和数据字典交给AI,让它统一生成这一整套增删改查代码,框架按团队规范来,生成的代码在结构上和手写几乎没有差别。
这个模块的提效点不只是“省打字时间”,更重要的在于“减少遗漏”。人写样板代码写多了会犯低级错误,比如某个DTO字段没有映射、某个接口忘了加事务注解。AI在同一个上下文里生成整套代码时,字段一致性通常保持得很好,因为它在生成Service层时还会参考我提供的表结构和DTO定义。
当然,要让脚手架生成真正可用,前提是你先把自己的框架规范和代码风格告诉AI。我一般会在项目根目录放一个CONTEXT文件,里面对项目的技术栈、分层规范、命名规则做一个简明描述。这样AI在生成代码时就有了“团队级上下文”,产出的代码会更贴合团队风格。这个做法我认为是AI编程落地里最值得复制的一条经验。
2.10 Agent自动化任务:从“问答”走向“执行”
最后这个模块是目前发展最快、也最需要谨慎对待的部分。所谓Agent自动化任务,指的是AI不再只是停留在对话框里给你代码片段,而是能自己读项目文件、执行命令行、运行测试、修改多个文件并自动提交。我用过一些支持Agent模式的编程工具,让它在指定范围内做“全项目搜索—定位差异—批量修改”这类工作。
举个例子,前段时间一个老项目要从某个旧版本JDK用法迁移到新写法,几十个文件都要做类似的替换。这类工作如果手动处理,既慢又容易漏。让Agent跑一遍,它能通过搜索找到所有需要修改的位置,逐一替换,然后跑测试验证。整个过程我需要做的是先看它的计划,确认没有越界,再点确认执行。
但Agent的边界必须设得非常清楚。它在自由度高的任务里会自作主张,比如改一个不该改的公共工具类,或者为了满足测试而修改业务逻辑。我现在的做法是:给Agent的任务范围尽量收窄,明确告诉它哪些文件不能动、哪些目录不要碰;执行后必须人工review diff;涉及数据库变更、鉴权逻辑、资金计算这类高风险代码,绝不交给Agent独立完成。AI Agent的价值在于帮你跑完那些重复、机械、可验证的步骤,而不是替你做决策。
3. 可落地方案:工具选型与工作流搭建
3.1 工具选型:主流AI编程工具横向对比
选工具这件事,体验因人而异,但有几个维度是通用的:代码补全的准确率、对上下文的利用能力、对中文场景的支持、团队协作和隐私合规的满足度。我身边同事用得比较多的,大致是下面这几类:
| 工具 | 优势 | 局限 | 适合场景 |
|---|---|---|---|
| GitHub Copilot | 生态成熟、补全能力强、IDE支持广 | 部分网络环境下访问可能不稳定、上下文窗口一般 | 重补全体验、偏好国际生态的开发者 |
| Cursor | 对话/Agent能力强、支持多文件改造 | 需要一定学习成本、深度使用需付费 | 做整体改造、复杂重构的开发者 |
| 通义灵码 | 中文理解好、访问顺畅、对国内框架了解多 | 在部分冷门语言场景下略逊色 | 国内团队、Java/Go/Python业务开发 |
| CodeGeeX | 免费、开源推动、可私有化探索 | 体验和成熟度需要打磨 | 对数据合规有要求、偏好开源的用户 |
这里插一句我个人的体会:不要被“哪个工具最强”这个问题困住。工具的能力边界一直在变,你今天用A不合适,半年后A可能就补齐了短板。更合理的策略是“以需求和流程为目标,选一个能覆盖你最高频场景的工具”。我团队里就是让不同小组按语言、网络条件和隐私要求各自选择,只要最终都能接入同一套diff review流程就行。
在考虑选型的时候,我建议你把下面这三个问题想清楚再决定:
- 你这个项目的主要代码是哪些语言?不同工具对各语言的模型能力差异很大,冷门语言尤其要看准支持情况;
- 代码是否需要出公司、出外网?如果受合规约束不能把代码发给外部服务,就得优先找支持私有化部署的方案,这也直接缩小了选项范围;
- 你更依赖“补全”还是“对话”?如果主要场景是快速写业务代码,补全强的工具更合适;如果经常做大范围改造和重构,对话/Agent能力强的工具更有价值。
3.2 一条可直接套用的AI辅助研发工作流
工具选完,真正决定落地成效的是工作流。我把我现在用得比较顺的一套流程整理了一下,不一定适合所有团队,但可以作为起点再根据实际情况调整。
第一步,需求方案阶段:把需求描述和相关的技术约束粘贴给AI,让它先出一版技术拆解,列出涉及的文件、接口、数据模型,以及潜在的风险点。这一步的目的是借助AI把“需求到任务的拆解”快速落地,省去自己列清单的时间。
第二步,编码阶段:在文件级利用AI补全和生成,按我在前面写的“注释描述—AI生成—人工review”的节奏推进。每写完一个功能,就马上让AI生成对应的单元测试。这是最容易出效果、也是见效最快的一步。
第三步,提交前检查:把git diff丢给AI做一次快速审查,同时让它生成MR描述。审查结果按我前面说的分级处理——安全性问题必改,风格性建议结合现状决定,业务规则相关结论必须人工核实。
第四步,任务闭环:如果是批量替换、框架升级这类工作,再考虑引入Agent模式,将任务范围收窄、设置明确边界之后执行。动作越机械,越适合交给Agent;判断越多,越要留在人工环节。
这套流程执行下来的提效比例,我的感受是如果只是日常业务开发,整体工时可压缩20%到40%左右,但前提是“人仍然深度参与”,只是把重复劳动和低层级的检索、写样板代码、写测试初稿这些事情交了出去。
4. 落地过程中的常见问题与排查技巧
4.1 AI生成代码最常见的“翻车点”
用AI编程这么久,我总结出几个最容易翻车的地方,新手尤其容易踩。
第一个是“上下文错位”。你把一个文件单独贴给AI,它没有看到依赖文件,生成时就会臆造一些不存在的变量或方法。解决办法是贴问题代码时,把依赖的类型定义、接口签名、数据流关键节点一起贴进去,给足上下文。比如你让它帮你改一个Service方法,那么传入参数的实体类定义、底层Mapper的接口方法,都应该一并给它看。
第二个是“版本幻觉”。AI模型的训练数据有时间截止点,它对最新框架版本的API理解常常是过时的。比如某些库在新版本里改掉的API,AI可能按照旧版本写法生成,编译起来就是报错。解决办法是在提示词里明确指定大版本和依赖清单,并在生成后关注编译和测试输出。
第三个是“过度自信的错误修复”。AI在根据报错信息修复Bug时,经常给出一个“看似解决当前报错”的方案,但这个方案会绕开原来的设计意图,或者引入新的问题。我在让AI修Bug时,都会要求它先解释“为什么会产生这个Bug”,再讲“你准备怎么修”,最后才让它在代码层面改动。如果解释不清楚原因,就说明它可能也是在猜。
4.2 提示词技巧:让AI更懂你
很多人抱怨AI生成的东西不合心意,一半原因是提示词没写清楚。我常用的几个技巧:
一是把输入、输出、约束条件一次性给全。比如“输入是List ,输出是Map<String, BigDecimal>,key是品类ID,value是金额合计,金额要四舍五入保留两位小数,时间为空时跳过该条记录”。这样的描述比“统计一下订单金额”要可靠得多。
二是用例子驱动。如果AI在某个格式上总是偏,就拿一两个预期输入输出样例直接喂给它,说“按这个格式来”。大模型对例子非常敏感,比你说十句话都管用。
三是把“不能做什么”也讲清楚。比如“不要修改公共工具类”“不要用三目运算符”“方法中禁止直接new线程”。边界约束越具体,生成的代码越可控。
四是遇到不满意的结果,不要直接放弃重来。追问它“为什么这么写”,或者打回重写。AI在对话模型里可以接受多轮反馈,把第一版的偏差指出来,它第二版通常会明显改进。这一点很多人容易忽略,白白浪费了第一版已经生成的有效信息。
4.3 安全、隐私与代码质量的边界
代码是公司资产,在使用AI编程工具时,安全和合规必须放在第一位。我对团队的约束主要有几条:不允许把包含密钥、token、生产环境数据库连接串的代码直接粘贴到外部AI工具;不允许在AI工具里讨论未公开的上线计划和涉及敏感商业逻辑的细节;每次把代码交给AI之前,先快速扫一眼里面有没有把硬编码密码这类内容漏出来。
另外,所有AI生成的代码都必须经过常规的代码审查流程,这不是走形式,而是因为AI生成代码的“平均质量”虽然不低,但它的失误模式和人不一样——人容易在粗心处犯错,AI容易在语义理解偏差上犯错。两类问题都不是肉眼一眼能看出来的,所以流程上的控制反而比AI本身的能力更重要。
我还有一个坚持了很久的习惯:AI生成、AI改动的每一处代码,都必须能回答“为什么这样写”。如果一段AI代码只能通过“改成它之后测试能过了”来证明合理性,我会选择再花一点时间把它改回自己能讲清楚的状态。毕竟AI是辅助提效的,不是替代你理解代码的。如果代码经过AI一改,你反而看不懂了,那这个提效其实是负的。
最后再分享一点个人的体会。AI编程提效这件事,本质上不是“AI替代你干活”,而是“AI把重复劳动和高频检索抽走,让你把精力集中到真正需要判断力的地方”。我用了这不到两年时间,最明显的变化不是写代码速度变快了,而是同样的时间,我能多思考几版设计方案,能多review几轮别人的代码,能多留点时间排查那些真正的疑难问题。
如果你刚开始接触,我给的建议是:不要追求一步到位的全流程AI化,先选一个模块,比如代码补全或者单元测试生成,认真用两周,记录下自己在哪些环节省了时间、哪些环节反而因为AI多花了时间,再决定下一步怎么推进。工具会换代,模型会升级,但如果你的工作流里“人工判断”这个环节始终在场,那AI编程对你来说只会越来越值钱。