这两年我明显感觉到一个分水岭:同样一个需求,有人能一个上午把功能跑通,有人磨到下班还在跟编译器较劲。区别不在于谁多看了几年文档,而在于有没有把 AI 编程工具真正用起来。
这个标题是我最近在团队里反复强调的一句话,也是我自己踩了大半年坑之后的真实体会。现在写代码这件事,已经从“你会不会写”变成了“你会不会指挥 AI 写”。GitHub Copilot、Cursor、Codex、Qwen Code、DeepSeek 这些工具轮番上阵,再加上一批能自动改 bug、自动跑测试的 AI Agent,说实话,还停留在纯手写代码的人,效率上确实在吃大亏。
这篇文章我不打算讲什么高大上的理论,就从一个一线开发者和技术管理者的角度,把 AI 写代码这件事拆开揉碎:工具怎么选、提示词怎么写、真实项目里怎么落地、踩了哪些坑。无论你是写 Java 的、写前端的、搞嵌入式的,还是产品经理想用 AI 提升团队效率,这篇文章应该都能给你点能直接用的东西。
1. 为什么说“不会用 AI 写代码”成了落后生产力
1.1 写代码的核心能力已经变了
过去我们说一个程序员厉害,通常指他语法熟、算法强、框架记得牢。但现在你让 AI 写一段排序、一个 CRUD 接口、一套状态机,它就是几秒钟的事。真正拉开差距的,是你能不能把需求拆成 AI 听得懂的指令,能不能判断它生成的代码有没有坑,能不能在它卡住的时候给它指一条明路。
这个过程很像带新人。你把任务说清楚,给足上下文,新人能交出 80 分的成果,你再 review 一遍补到 95 分。AI 也是这样,它不是替你思考,而是帮你把“从零到一”的时间压缩掉,让你把精力花在“从一到十”的打磨上。
所以我说“不会用 AI 写代码才是落后生产力”,不是说人要被取代,而是说:当工具已经把重复劳动的成本打到接近于零,你还坚持用纯手工的方式去应对,那就是在拿自己的时间跟趋势对抗。
1.2 效率差距不是一点点,是数量级
我做过一个很直观的测试,让团队的初级工程师用 AI 辅助实现一个带权限校验的 RESTful 接口模块,涉及登录、角色判断、异常处理、日志埋点,大概六七个文件。纯手写他用了三个多小时,用 AI 辅助只花了四十分钟,而且代码风格更统一,注释也齐全。
再举个例子,前端切图这件事。以前拿到 Figma 设计稿,一个页面从量尺寸到写样式,慢的话得一天。现在把设计稿丢给支持视觉输入的 AI 工具,能直接生成可用的 HTML/CSS 结构,剩下的只是微调间距和交互细节。这种差距已经不是“熟练工 vs 新手”的差距,而是“用不用现代工具”的差距。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 工具选型解析:不同场景该怎么挑
2.1 主流 AI 编程工具横向对比
市面上的 AI 编程工具已经不少了,但别指望一个工具通吃所有场景。我自己的经验是,至少准备两套组合,一套日常写业务代码,一套应对复杂重构和 Agent 任务。
| 工具 | 适合场景 | 优点 | 注意点 |
|---|---|---|---|
| GitHub Copilot | IDE 内补全、单文件生成 | 集成度高,补全速度快 | 对老旧代码库理解有限 |
| Cursor | 多文件编辑、跨文件重构 | 对话式操作,能改整个项目 | 习惯需要 1-2 天适应 |
| OpenAI Codex / Codex CLI | 自动化多步骤任务 | Agent 能力突出,能自动跑命令 | 需要明确的任务边界 |
| Qwen Code | 中文场景、代码理解 | 中文指令理解好,免费额度友好 | 生态相对年轻 |
| DeepSeek 系列 | 复杂逻辑生成、解释代码 | 推理能力强,性价比高 | 长上下文时响应偏慢 |
| Claude 系列 | 大规模重构、注释文档 | 长文本理解好,代码质量高 | 需要科学配置 API 额度 |
这里多说一句,很多人问我“到底哪个最强”,我的回答是:别纠结模型排行,先看你的工作流。如果你 80% 的时间都在 IDE 里写业务代码,Copilot 或 Cursor 就够用;如果你经常要做“帮我看看整个模块哪里有问题”这种跨文件任务,那就要上带 Agent 能力的工具。
2.2 IDE 里的 AI 插件怎么配
VSCode 用户最多,但“装完插件没反应”的问题也最多。我见过不少人在 VSCode 里装了一堆 AI 插件,结果写 C 语言时连最基本的代码提示都没有。排查下来,大概率是这几个原因:
- 插件装好后没有重启窗口,扩展根本没加载。
- 项目文件夹没被工作区正确识别,比如直接把单个
.c文件拖进来,没有打开整个项目目录,语言服务起不来。 - 被系统代理或网络策略挡住了请求,插件界面看起来正常,但请求一直失败。
PyCharm 用户也类似,JetBrains 自己的 AI Assistant 以及很多第三方插件,都需要在设置里确认是否启用了对应语言的代码补全。这里有个小建议:装插件别贪多,一个主力 AI 插件加上官方语言插件就够,装多了反而互相抢补全,出现“文本模糊匹配”那种乱提示。
2.3 嵌入式、小程序这些特殊场景怎么选
很多人觉得 AI 写代码是 Web 工程师的事,其实嵌入式场景同样能受益。我之前用 VS Code 配合 ESP-IDF 搭建 ESP32-WROVER 模块的开发环境,一开始也是各种不顺,主要问题在于 ESP-IDF 的环境变量和工具链路径需要写到 VS Code 设置里,AI 插件识别不到编译器的 include 路径,提示自然就废了。
后来我做了两个调整:一是用 ESP-IDF 官方插件来管理工具链,二是把项目根目录正确设为工作区文件夹,再让 AI 插件去读取编译数据库。这一套配好之后,AI 补全就能识别乐鑫 SDK 的 API 了,写外设驱动、Wi-Fi 连接这些代码,效率提升还是很明显的。
小程序云开发这块也很多人问。如果你的后端逻辑全网都用云函数、云数据库,那确实不需要自己搭服务器,后端代码由平台托管,AI 写起来更快。但要注意,云开发的触发器、鉴权、数据库权限这些还是需要你理解概念,AI 能帮你生成,可不能帮你背锅。
3. 核心细节:提示词与生成思路
3.1 结构化提示词的写法
AI 写代码的质量,七成取决于提示词。很多人抱怨“AI 生成的代码没法用”,我看了他们的输入,基本都是“帮我写个登录”,这要能写出好东西才怪。
我一般把代码类提示词拆成五个部分:
- 角色定义:告诉 AI 它是什么身份,比如“你是一名熟悉 Spring Boot 3 和 MyBatis-Plus 的后端工程师”。
- 任务描述:要做什么,尽量具体到接口、方法、数据表。
- 输入输出约束:输入是什么格式,输出要什么格式,异常怎么处理。
- 技术栈和工程约束:用哪个框架、哪个版本、项目里已有的命名规范。
- 边界条件:哪些情况不用考虑,哪些安全要求必须满足。
举个例子,同样是“写个登录接口”,这是两种写法:
text复制请帮我实现一个用户登录接口。
text复制你是一名熟悉 Spring Boot 3 的后端工程师。请为我的用户模块实现一个登录接口,要求如下:
- 接收参数:username(String)和 password(String),通过 LoginRequest DTO 接收,使用 @Valid 校验非空。
- 逻辑:先查数据库用户表,密码用 BCrypt 校验,校验失败抛 BizException(1001, "用户名或密码错误")。
- 成功时返回 JWT token,过期时间 24 小时。
- 用统一返回结构 Result<T> 包装,失败时状态码设为 401。
- 项目已有工具类:JwtUtils(生成 token)、RedisUtils(缓存用户信息)。
- 不需要实现注册逻辑,不需要验证码。
- 注意:密码字段禁止出现在任何日志中。
对比一下你就明白了。后者能直接生成可用的代码,前者生成的东西你还得改半天。这套思路不仅适用于聊天式工具,也适用于 IDE 里的对话面板。
3.2 代码生成思路的“由外到内”拆法
AI 生成代码的思路,跟你自己写代码的思路应该是一样的:先定骨架,再填肉,最后处理细节。
我推荐“由外到内”的拆法。先让 AI 生成接口签名和数据模型,确定输入输出;再让它实现核心流程,把异常分支先留空占位;最后再逐段补充边界处理和性能优化。这样拆的好处是,每一步都有明确的检查点,AI 跑偏了你一眼就能发现,不用等它输出一大堆全错的东西。
还有一个经验:当 AI 生成一大段代码时,别让它一次交付,而是分段确认。比如先让它“列出需要的文件清单和职责”,再让它“生成 UserService 接口”,最后再“实现 UserServiceImpl”。这样每段都可以单独 review,质量更可控。
4. 实操过程与核心环节实现
4.1 从 Figma 设计稿到前端页面
“设计图转代码”是很多前端团队最想提效的环节,也是 AI 目前落地效果最好的场景之一。我自己走通了一条链路,分享给你参考。
第一步,把 Figma 设计稿导出成清晰的分层图,或者直接使用支持设计稿导入的 AI 工具。这里的关键是图层命名要规范,如果设计稿里全是“Frame 123”,AI 生成的代码结构也会很乱。
第二步,用提示词锁定技术方案,我一般这么写:
text复制将这张设计稿实现为 React + TypeScript 组件。要求:
- 使用 Tailwind CSS 进行样式实现,间距尽量保持原稿比例。
- 组件按区域拆分:Header、ProductCard、Pagination。
- 数据部分用 mock 数组,类型定义放在单独的文件。
- 响应式:在 md 断点以下隐藏侧边栏。
- 图片资源用占位图,后续替换为真实 CDN 地址。
- 不要生成任何路由或状态管理代码。
第三步,生成的代码不要直接拿来用,先跑一遍,对照设计稿检查间距、颜色、字体。AI 对精确像素的还原能力有限,但结构合理、语义化好,你修起来比从头写快太多。
4.2 一个完整功能的实操流程:从需求到验证
我拿最近做的一个完整功能来演示 AI 参与的全流程。需求是:在后台管理系统中增加一个“导出用户列表为 CSV”的功能。
我先跟 AI 对话,让它列出实现方案,包含接口设计、导出格式、并发考虑。AI 给出方案后,我确认技术栈是 Spring Boot 3 + EasyExcel,然后让它分步实现:
- 先写 Controller 接口和参数校验;
- 再写 Service 层导出逻辑,包括查询分页、动态表头;
- 最后写测试用例,覆盖空数据、超大数据量两个场景。
整个过程中,AI 生成的代码我只手动改了两处:一处是导出文件名的时间格式,一处是防内存溢出的分页大小。其余全部直接可用。从需求确认到测试通过,一共用了一个半小时。
这个流程里最值得注意的一点是:AI 适合生成“确定性的、有边界的”代码,但涉及业务规则的地方,你一定要自己把关。比如导出权限是不是每个管理员都有、导出的数据范围是按部门还是按角色,这些必须由你告诉 AI,而不是让它猜。
4.3 当 AI 遇到编译错误:让 AI 自己修
很多人遇到编译错误还是习惯自己埋头看。其实现在很多 AI 工具可以直接把错误信息喂回去,让它帮忙定位。我之前遇到一个 VSCode 写 C 语言时头文件找不到的报错,AI 一眼就看出是 include 路径配置问题,还给出了针对当前项目的修改方案。
更进阶一点的做法,是把编译器的完整输出贴给 AI,让它根据错误信息反推代码里可能的问题。比如“ESP-IDF 编译报 undefined reference to xxx”,AI 通常能判断是链接库没加还是函数声明缺失。这比你自己满项目翻快多了。
5. 常见问题与排查技巧实录
5.1 为什么我的 IDE 没代码提示
这类问题在“AI 写代码”这个话题下出现频率特别高。我大概归类一下,就这么几种情况:
| 现象 | 可能原因 | 排查顺序 |
|---|---|---|
| VSCode 写 C 没提示 | 缺少 C/C++ 扩展、include 路径未配置 | 装扩展,检查 compile_commands.json |
| Eclipse 文本匹配混乱 | 项目 JDK 版本不对、代码格式乱了 | 检查 build path,清理 project |
| PyCharm 插件不生效 | AI 插件未启用项目级补全 | 插件设置里打开 language server |
| ESP-IDF 代码提示全红 | 工具链路径未写入 VS Code | 用 ESP-IDF 插件重新配置环境 |
| 刚创建的 Java 项目无从下手 | 没有生成项目骨架 | 让 AI 先生成目录结构和入口类 |
这里有个通用原则:AI 补全依赖语言服务,语言服务依赖编译环境。环境不通,AI 再强也没用。所以遇到提示不正常,先把编译环境调通,再怀疑 AI 插件。
5.2 AI 生成的代码质量不稳定怎么办
有一段时间我也很头疼,AI 生成的代码时好时坏。后来我发现了规律:上下文越充分,质量越稳定。同一个功能,给它提供相关文件的代码、数据库表结构、接口文档,生成质量会拔高一大截。
另一个技巧是给 AI“做减法”。比如明确告诉它“不要生成注释以外的额外内容”“不要引入额外依赖”“不要重构其他文件”,这会大幅减少它自行发挥的空间。AI 这东西跟人一样,你没给它边界,它就喜欢自由发挥。
5.3 Credits 到底是什么,为什么用着用着不够了
“Credits 在 AI 里指什么”是很多人问的问题。简单说,Credits 就是 AI 服务的计量单位,一次模型调用、处理多少 token、跑了多少次 Agent 任务,都会消耗对应的额度。不同的模型和应用场景,消耗的 Credits 系数不一样,比如复杂的推理模型往往比轻量模型贵好几倍。
实操中的建议是:日常补全用便宜的快模型,复杂重构和跨文件改动再用贵的强模型。别所有任务都上大模型,额度消耗快,响应还慢。同时,定期清理聊天上下文,上下文越长,单次消耗越高。
5.4 产品经理怎么用 AI 指导程序员
这个话题我特别想多说几句。现在很多产品经理也开始用 AI 写代码,这其实是好事,能减少需求沟通成本。但我见过不少反面案例:产品经理拿 AI 生成的一段代码直接甩给开发,说“按这个做”,结果代码既不符合项目技术栈,也没考虑异常场景,开发还得花时间解释为什么不能这么写。
我的建议是:产品经理可以借助 AI 理解技术可行性,比如“这个导出功能大概涉及哪些接口”“这个需求的数据存储怎么设计”,但不要试图用 AI 生成的代码代替技术方案。正确的用法是:用 AI 生成需求拆解、接口草案、字段清单,作为和开发沟通的起点,而不是终点。
6. 我的实操心得与后续扩展方向
做完这大半年的 AI 辅助开发实践,我最深的体会是:AI 写代码不是“把活交给机器”这么简单,而是整个工作习惯的重构。你要学会把大任务拆小,把上下文交代清楚,把 AI 当成一个随时可以骚扰但需要你兜底的结对编程伙伴。我自己现在最爽的一个场景,是让 AI 帮我写测试用例和注释,这两个环节以前最耗时间,现在基本不用自己动手了。
如果你刚开始尝试,我建议从一个小功能入手,走完“提需求 → 看方案 → 生成代码 → 本地验证 → 让 AI 修 bug”的闭环。跑通一次,你就知道这套东西的边界在哪里,哪些能提效,哪些不靠谱。后面再慢慢扩展到 Agent 自动化、多文件重构这些高阶玩法。
最后再分享一个小技巧:每天开工前,把你手头的任务列表贴给 AI,让它帮你排出实现顺序、预估风险点,再开始干活。这比直接写代码更省力,而且能让你一整天思路清晰,不会被琐碎细节带偏。
