
我最近翻到一条挺有意思的动态某家做AI的团队自己放出一组数字说他们项目里大约80%的代码是AI写出来的同时他们又在公开场合讨论要不要给AI开发踩一脚刹车。这两件事放在一起本身就很有嚼头一边重度依赖AI写代码一边又对AI开发的速度表示担忧。我做开发这些年从最早的代码补全插件一路用到现在的AI编程助手对“AI写代码”这件事的体感跟很多人不太一样。这篇就聊聊代码、AI、AI开发这几个关键词背后一个一线开发者真实看到的东西AI生成代码占比高到底意味着什么、哪些活可以放心交给它、哪些坑必须自己盯死、以及如果你想吃AI应用开发和AI Agent开发这碗饭应该从哪儿下手。内容偏实操新手能看懂有经验的也能拿走几条能直接用的清单。1. 先把“80%代码由AI生成”这句话翻译成人话看到这个数字很多人的第一反应是“程序员要失业了”或者“这代码质量能行吗”。这两个反应都太急了。我先把这句话拆开看看它到底在说什么。1.1 统计口径不同这个数字能差出好几倍所谓“80%的代码是AI写的”取决于你怎么数。业界常见的统计方式大概有这么几种按代码行数、按提交次数、按函数或文件数量、按AI建议被采纳的比例。这几种口径算出来的结果能差出十万八千里。举个例子一个典型的前后端项目里配置文件、接口定义、数据模型的样板代码、单元测试骨架、类型声明、SQL查询、日志和错误提示文案这些加起来很容易占到整个仓库行数的一半以上。这类内容模式固定、重复度高AI生成得又快又准被采纳率天然就高。而真正决定系统能不能扛住真实流量的那部分——并发模型、事务边界、缓存失效策略、失败重试、权限校验、数据一致性——代码量往往不大但每一行都值钱这部分基本还是人写的。所以“80%”更准确的理解是AI承担了大量的体力活人承担了关键的决策活。如果你看到一个团队说自己的代码八成是AI生成的先别惊叹去问一句“按行数还是按关键路径算的”基本就能把水分挤掉一大半。1.2 真正值得警惕的不是占比而是“理解缺口”我见过不少团队AI生成代码的采纳率非常高表面上交付速度飞快但过了两三个月开始还债。问题的根子不在“AI写的代码有bug”而在于“没人真正理解这些代码”。代码这东西有个特性它是写给人看的顺便能让机器跑起来。一段逻辑如果作者说不清它为什么这么写、边界在哪、什么情况下会失效那它本质上是黑盒。AI生成代码最大的风险不是语法错误——那些编译器直接就报出来了——而是它生成了一段看起来很合理、跑起来也没问题、但在特定输入下会静默出错的代码而且没人意识到需要去验证那个特定输入。我把这个叫做“理解缺口”。传统开发里代码是你自己敲的敲的过程中大脑被迫走了一遍逻辑很多坑在写的时候就被想出来了。AI把这一步省掉了速度快了但思考的环节被跳过了。省下来的时间如果不用来做审查和验证那这笔债迟早要还。1.3 为什么会有“给AI开发减速”的声音理解了上面两点再看那些呼吁放慢AI开发节奏的声音就不会觉得是矫情了。提出这类担忧的人很多本身就是AI从业者他们担心的通常不是AI太聪明而是三件事第一是验证能力跟不上生成能力。AI一分钟能生成几百行代码但人review这几百行可能要半小时测试覆盖这几百行可能要更久。生成速度远超验证速度中间就会积累大量未经充分验证的产物。第二是责任归属模糊。线上出了事故是写prompt的人负责、是采纳建议的人负责、还是工具提供方负责这个链条目前没有清晰答案很多团队是靠“谁提交谁负责”这条老规矩硬扛。第三是能力断层。新人如果一上来就靠AI写代码缺少了从零手写、调试、踩坑的过程基础能力可能一直建立不起来。等有一天AI工具不可用或者遇到AI也搞不定的疑难杂症团队里没人能顶上。这三条都是实打实的工程问题跟立场无关。我自己的态度是该用就用但要把验证和责任这两件事补上别让工具替你做决定。2. 从工程角度拆AI写代码到底强在哪、弱在哪想把AI编程用好第一步是搞清楚它的能力边界。我把它当成一个“知识面极广、手速极快、但缺乏项目上下文、且偶尔会编造事实的初级工程师”。这个定位一旦立住很多事就好办了。2.1 可以放心交给AI的四类活第一类是有明确模式、样本充足的代码。比如快速排序代码、二分查找、字符串处理、日期格式化、常见的正则表达式。这类问题在训练数据里出现过无数次AI生成的质量通常比手写还稳定。你甚至可以直接让它给示例代码讲解边用边学。第二类是样板与转换。把一个JSON结构转成另一个JSON结构、把接口定义转成对应的数据模型、写单元测试骨架、补类型注解、生成文档注释。这类活机械、重复、容易出错交给AI性价比极高。像c语言文件读写操作代码这种相对固定的写法AI也能给得比较靠谱。第三类是不熟悉的API或库的快速上手。遇到一个没接触过的库直接问AI“这个库怎么初始化、常见用法是什么”比翻文档快得多。但注意这时候AI给的经常是旧版本写法得自己对照官方文档核对版本。第四类是调试辅助和思路发散。报错信息丢给AI让它给几个可能的原因和排查方向比一个人干瞪眼效率高。或者让它对你的方案提反面意见帮你找漏洞。2.2 必须自己盯死的四类活第一类是并发与状态。多线程、锁、原子操作、状态机、分布式一致性这些是AI最容易翻车的地方。它生成的代码经常在单线程下完美运行一上并发就出各种竞态问题而且这类bug极难复现。涉及并发的代码我基本只让AI当参考最终逻辑自己写、自己审。第二类是安全相关。权限校验、加密、输入过滤、SQL拼接、密钥管理。AI很容易生成“拼接SQL字符串”这种有注入风险的写法或者把密钥硬编码进代码。涉及安全的代码AI生成完必须逐行人工审查最好是让团队里懂安全的人再过一遍。第三类是边界与异常处理。空值、超长输入、时区、浮点精度、超大数值、网络超时、部分失败。AI默认会走“理想路径”异常路径经常糊弄过去。你可以专门要求它“列出所有可能的异常情况并逐一处理”但最终还得自己确认漏没漏。第四类是架构与关键路径。模块怎么切、依赖怎么管、数据怎么流转、性能瓶颈在哪这些是判断题不是执行题。AI可以给你提供选项和论据但拍板必须是人。这块让AI主导项目大概率会走偏。2.3 一个容易被忽略的坑版本漂移这是我踩过最多次的坑。AI的训练数据有截止时间它给出的API写法经常是几个版本之前的老写法。你以为它给了个标准答案结果项目里装的是新版本API签名变了、方法废弃了跑起来直接报错或者更糟——不报错但行为跟预期不一致。应对办法很简单但必须坚持AI生成涉及第三方库的代码后去官方文档核对当前版本的正确用法。别偷这个懒。我现在的习惯是凡是用到库的地方先自己确认版本号和对应文档地址在prompt里直接带上版本信息能减少一大半这类问题。注意AI写的注释同样有可能在撒谎。它会生成“这里做了边界检查”这样的注释而实际代码根本没检查。审查时不要相信注释只看代码逻辑。3. 一套我实测有效的AI编程工作流光知道强弱还不够得有一套流程把它管起来。我摸索了大半年现在固定在用的这套流程核心思路是把AI当产能放大器而不是决策者。下面按顺序说。3.1 任务拆解要拆到“AI能一次干完”的粒度直接甩给AI一句“帮我实现用户管理模块”结果通常是一坨看似完整、实则处处需要返工的东西。原因是任务太大AI缺少足够上下文只能靠猜猜错的地方就变成了隐患。我的做法是把任务拆到“单个函数或单个文件”的粒度。比如不要“做一个订单系统”而是“写一个函数输入订单ID列表返回这些订单的总金额注意处理订单不存在的情况”。粒度越细AI的输出越可控你验证起来也越快。拆解的时候有个小技巧先让AI帮你拆。你可以把它当白板用问“这个功能应该拆成哪几个函数各自的输入输出是什么”拿它的拆分结果自己判断、调整最后再让它逐个实现。这样既利用了它的知识又保留了人的决策权。3.2 上下文投喂比prompt技巧重要十倍网上有大量“AI编程提示词”模板说实话大部分效果有限。真正决定输出质量的是你在prompt里给没给足上下文。我习惯在prompt里带上这几样东西项目用到的语言和版本、关键依赖的版本、相关模块的现有代码片段、命名规范、错误处理约定。把这些贴进去AI生成的东西能直接融进项目风格返工量大幅下降。举个例子如果你让它生成python代码不说明版本它可能给你一段Python 2的写法。如果项目里已经有统一的错误处理装饰器你在prompt里附上这个装饰器的定义它生成的新函数就会自然沿用同样的模式而不是自己另造一套。3.3 生成—审查—验证的闭环一个都不能省这是我流程里最核心的部分。AI生成代码后我不会直接提交而是走三步第一步让它自己解释。问它“解释这段代码的每一行在做什么列出你认为的边界条件”。这一步经常能暴露问题——它解释不清的地方往往就是逻辑有问题的地方。第二步人工审查。重点看上面说的那四类高风险区域并发、安全、边界、架构。我有张固定的审查清单下面直接给你。第三步跑测试。这一步绝对不能省。AI生成的代码我要求至少有一个正常路径测试和一个异常路径测试通过才提交。如果项目里还没有测试框架那在引入AI编程之前先把测试框架搭起来这是前提。3.4 我一直在用的代码审查清单审查项具体检查内容风险等级输入校验空值、类型错误、超长输入是否处理高异常处理是否吞掉异常、是否有兜底逻辑高并发安全共享状态是否有保护、有无竞态高安全相关SQL拼接、密钥硬编码、权限校验高版本兼容API是否符合当前依赖版本中资源释放文件、连接、锁是否确保释放中命名与风格是否符合项目规范低注释真实性注释与代码逻辑是否一致低提示这张表可以直接存到你的笔记里每次让AI生成代码后逐项过一遍养成习惯后速度会很快。4. AI应用开发与AI Agent开发从会用工具到会造工具前面聊的是“怎么用AI写代码”这是消费侧。如果你关心的是AI应用开发、AI Agent开发这个方向那就是生产侧了完全是另一套技能栈。这两年问的人特别多我把自己观察到的路径说清楚。4.1 AI应用开发的核心链路其实不长很多人把AI应用开发想得很玄拆开看核心链路就那么几环输入处理 → 模型调用 → 输出解析 → 状态管理 → 对外接口。输入处理包括文本清洗、分段、向量化。模型调用就是选模型、拼prompt、处理返回。输出解析这一步很多人会忽略但它是工程化的关键——模型返回的是自然语言你的程序需要结构化数据中间得有一层解析和校验防止模型返回格式不对导致下游崩溃。状态管理用于处理多轮对话对外接口就是把它包成API或服务。技术上Python生态在这块工具最全Java阵营这几年也追上来了主要是企业级集成和稳定性上的优势。如果你有Java基础走Java路线做企业内AI应用开发是条可行的路不用非得转Python。4.2 Agent开发和普通AI应用的区别在哪普通AI应用通常是“一问一答”或者“固定流程”。Agent的核心区别是它会自己决定下一步做什么。你给它一个目标它自己规划步骤、调用工具、观察结果、调整策略循环直到完成。这就带来了几个新的技术点工具调用是Agent的手脚。你得把外部能力查数据库、调API、读写文件包装成Agent能调用的工具并且写清楚每个工具什么时候用、参数是什么。工具描述写得好不好直接决定Agent靠不靠谱。记忆管理是Agent的脑子。短期记忆是当前任务的上下文长期记忆是跨会话的知识。上下文窗口有限什么该留、什么该丢、怎么压缩都是要设计的。循环控制是Agent的安全带。Agent是循环执行的必须有终止条件、最大步数限制、失败重试策略否则它可能陷在某个循环里出不来白白烧token。可观测性是Agent的体检报告。每一步调用了什么工具、输入输出是什么、耗时多久都得有日志。不然Agent出错时你根本不知道它错在哪一步。4.3 想入行这套学习路线可以照着走经常有人问AI应用开发学习路线我给的建议是分三层别跳级。第一层把基础打通。语言选一门Python或Java都行、HTTP和API基础、数据库增删改查、基本的异步和并发概念。这一层不牢后面全是空中楼阁。第二层动手做一个最小的AI应用。别一上来就搞Agent先做一个能跑通的问答应用接一个模型API、处理输入、调用模型、解析输出、包成接口。这个过程中你会自然接触到prompt设计、token计算、错误处理这些实际问题的细节。第三层再上Agent。在能跑通的应用上加工具调用和循环控制做一个能查天气、能查数据库、能根据结果决定下一步的小Agent。做完这个你对Agent的理解就超过大部分只会背概念的人了。至于面试AI应用开发面试题翻来覆去就那几个方向模型调用的成本和延迟怎么优化、prompt怎么设计和管理、向量检索的原理、Agent的工具调用和循环控制怎么做、怎么评估一个AI应用的效果。这些问题光背答案没用做过项目的人答起来是不一样的。建议至少完整做过一个项目再去面。5. 常见问题与排查技巧实录这部分是我和团队踩坑攒下来的都是些文档里不会写、但实际做项目一定会遇到的问题。5.1 典型问题速查表现象可能原因排查方向AI生成的代码跑不通版本漂移、依赖不存在核对当前依赖版本检查库是否真实存在代码能跑但结果不对逻辑假设错误、边界未处理让它解释逻辑补充异常路径测试单测通过线上出错并发问题、环境差异检查共享状态、检查环境配置和时区改一处崩三处耦合过重、职责不清重新划分模块边界别让AI继续打补丁Agent陷入循环缺少终止条件加最大步数限制和循环检测输出格式不稳定缺少结构化约束加输出schema校验和失败重试成本突然飙升上下文过长、循环过多检查token用量和调用次数5.2 几条我反复验证过的避坑心得第一条别让AI在没有测试的项目里写代码。没有测试你就没法快速验证AI的输出只能靠肉眼review而这恰恰是最不可靠的方式。先有测试再用AI顺序不能反。第二条prompt里把“不要做什么”写清楚。比如“不要引入新的依赖”“不要修改这个文件的导出接口”“不要用已废弃的方法”。负面约束往往比正面描述更有效能避免AI自作主张。第三条AI给的每一段代码你都要能自己讲清楚。讲不清楚就说明你还没真正理解这时候提交就是在埋雷。这个标准听起来苛刻但它是防止“理解缺口”扩大的最有效手段。第四条把AI当结对伙伴别当代码生成器。最好的用法是来回对话你提需求它给方案你质疑它调整。这个过程中你的思路也会被逼得更清晰。第五条定期做一次“去AI化”复盘。每隔一段时间挑几个AI生成的核心模块自己从头读一遍看能不能发现潜在问题。工具会迭代项目会演进定期回顾能帮你及时发现问题。第六条新人练手阶段手写代码的量不能少。这不是反对用AI而是基础能力得先长出来。你能看懂AI写的代码前提是你自己写过足够多的代码。基础不牢AI写的东西你连对错都判断不了那才是真危险。我个人在实际项目里的体会是AI编程这件事最大的变量从来不是工具本身而是用它的人有没有建立起配套的验证习惯。工具越强人越要对“什么该信、什么必须自己确认”心里有数。那家团队说代码80%是AI写的同时又讨论要不要放慢节奏这两件事其实不矛盾——用得多所以更清楚它的边界在哪。对我来说接下来一段时间要做的是把审查清单和测试习惯再打磨细一点同时找个周末把那个半成品的Agent项目收个尾把工具调用和循环控制真正跑通一遍。工具会一直变能把住验证这一关的人才不至于被工具推着走。