ARTICLE DETAIL

资讯详情

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

AI辅助开发实战:从提示词到工作流的效率提升指南

AI辅助开发实战:从提示词到工作流的效率提升指南 过去一年我几乎把每天写代码的时间分了一半给AI辅助开发。不是简单地让Copilot补全几个括号而是把它当成一个真正的结对程序员从需求分析、技术选型、代码生成、测试用例到Code Review全程参与。刚开始我也觉得这玩意就是花架子但用久了发现真正拉开效率差距的不是AI本身而是你愿不愿意重新设计自己的工作流。这里想和你聊聊我在AI辅助开发上踩过的坑、总结出的原则以及一些可以直接抄作业的小技巧适合那些已经在用AI写代码、或者正被各种AI工具搞得眼花缭乱的开发者。1. 为什么我开始认真对待 AI 辅助开发1.1 从“自动补全”到“结对编程”最早接触AI辅助开发的时候我的态度是有点不以为然的。用IDE自带的补全功能顶多帮我少敲几个字母遇到稍微复杂点的逻辑还是得自己来。真正让我改变看法的是接了一个老系统的维护任务。那段代码没人愿意碰注释少、命名乱、业务逻辑埋在一千多行的函数里。我试着把其中一段函数丢给AI问它“帮我解释这段逻辑并指出可能存在的状态问题”。它不只是复述代码还指出了我没注意到的分支顺序问题。从那时候起我开始把AI当成一个可以对话的同事而不是一个高级输入法。后面我做了个简单实验一个熟悉的功能模块完全靠我自己的记忆去写大概需要两个小时如果先给AI描述清楚需求、约束和输入输出让它生成初版我再改大概四十分钟能完成初稿。也就是说时间能省一半多。当然这并不意味着AI写的代码就能直接用Review和测试的时间照样跑不掉但“从空白页开始”的恐惧感和启动成本确实被大幅降低了。1.2 解决的核心问题重复劳动与上下文切换为什么会有这么明显的提升我觉得关键在于AI辅助开发解决了两件特别耗精力的事。第一是重复劳动。比如写CRUD接口、配DTO、写单元测试的骨架、格式化迁移脚本这些活儿技术含量不高但很费手指。AI只要理解了项目里的现有风格基本能给出八九不离十的模板我只需要改业务字段。第二是上下文切换。我过去写代码时经常要停下来去查文档、找某个函数的签名、翻以前的代码看别人怎么写。这个动作看起来很轻但每一次“切换上下文”都在消耗注意力。现在我可以直接问AI“这个项目里其他模块是怎么处理分页的”它能很快给出符合上下文的答案我不用在文件之间跳来跳去。注意力是一种比时间更宝贵的资源。AI辅助开发真正值得称道的地方是把占用短期记忆的琐碎信息外包出去让我把精力留在需要判断的地方。当然前提是你要懂得怎么描述问题以及怎么辨别AI给出的答案。这也是后面几章要展开的内容。1.3 对团队协作的意外改变AI辅助开发不只是影响个人效率对团队协作方式也有影响。以前同事之间经常因为“这段代码到底怎么写的”争论现在大家会更倾向于让AI生成一个初版然后讨论里面有哪些决策不符合需求。这听起来是小事但团队的氛围会有变化争论的焦点从“谁说得对”变成“需求到底是什么”代码Review的效率也高了一些。然而也有副作用。如果团队成员没有统一的AI使用规范有人用A工具有人用B工具生成代码的风格会非常不一致反而增加维护成本。所以我建议团队在引入AI辅助开发时至少统一一套提示词模板和代码审查清单最好再约定什么类型的代码可以让AI直接生成、什么类型的代码必须人来写。2. AI 辅助开发的工具选型与定位2.1 主流 AI 辅助开发工具怎么选市面上叫AI编程工具的东西已经不少但它们的定位差异很大。我习惯把它们分成三类类型代表工具/形态优点缺点IDE 内置补全很多编辑器自带的代码补全、Copilot 这类插件使用成本低、交互轻、适合小步快跑对全局上下文理解有限复杂任务容易跑偏聊天式助手集成在 IDE 或网页端的问答模型可以讨论方案、解释代码、重构建议需要手动粘贴上下文反馈链路较长Agent 模式能自动执行多步任务、修改文件、跑命令的智能体适合批处理、脚手架搭建、批量修改不可控因素多容易把项目改乱必须盯紧除此之外还有本地部署的开源模型。如果项目代码保密要求高本地模型是值得考虑的方案但本地模型的表现通常取决于你的显卡和显存速度也未必比线上服务快。我个人的建议是不要迷信某个“最强模型”先看自己的使用场景。如果只是偶尔补全代码IDE内置插件就够如果你经常需要重构老代码、梳理业务逻辑聊天式助手更合适如果你需要同时改几十个文件再考虑 Agent 模式。工具选型不是越贵越好关键是匹配你的工作流。我用过好几个不同工具后最终保留的组合是一个 IDE 插件负责补全一个聊天式助手负责方案讨论偶尔用本地模型处理敏感代码。这里要注意不要同时开太多AI插件一是上下文互相干扰二是生成建议冲突反而拖慢速度。2.2 给 AI 一个清晰的“岗位描述”用AI辅助开发和雇一个实习生有个共同点你不说清楚期望他很难交出合格结果。很多开发者抱怨“AI写的东西不能用”其实往往是需求给得太模糊。比如你只说“帮我写一个用户登录接口”AI大概率会给你一个教科书的版本不考虑你的密码加密方式、会话策略、参数校验风格。但如果你加上“项目使用Spring Boot密码用BCrypt登录成功后生成JWT放入Header返回体统一用Result错误码请参考现有Controller的风格”生成结果的质量会立刻提升一个档次。我平时会先把AI想象成一个刚入职的初级工程师然后给它写一段“任务简报”包含背景、范围、约束、验收标准哪怕只有几句话也比甩一句需求强得多。这里有个技巧如果项目里已经有类似的实现直接把相关文件片段粘进去让AI模仿风格。风格对齐比正确性还重要因为代码是给人看的AI生成的东西如果风格和周围不一致将来维护的人会很想骂人。定位方面还有一个容易犯的错把AI当成搜索引擎。搜索引擎是给你资料AI是给你答案。但AI给的答案是合情推断出来的不是事实。所以用它查具体API版本、查某个库的废弃情况必须有验证意识。我后文会专门讲怎么给AI生成代码建立一套“质检流程”。3. 真正有效的提示词与工作流设计3.1 拆解任务拒绝“一口吃成胖子”AI辅助开发的第一步不是写提示词而是拆任务。如果直接让AI“帮我做一个订单管理模块”它要么给你一个覆盖很广但处处冗余的设计要么为了“完整”写出你根本用不上的代码。这跟人写代码是一样的模块太大就很难保证质量。所以我现在不管多简单的需求都先拆成逻辑单元。比如“订单管理模块”拆成订单列表查询、订单详情、创建订单、取消订单、修改收货地址每一个单元再单独和AI交互。拆解的好处有两点。一是让AI的注意力集中在当前这个小范围生成的代码边界清晰不容易把无关逻辑混进来。二是方便我审查和测试。每个小单元可以单独Review出了问题也能快速定位。尤其当你用Agent模式让AI自动改代码时范围越小失控风险越低。见过太多事故都是因为让AI“顺便把另外几个文件也改一下”结果它动了很多不该动的地方。3.2 注入上下文一段可复用的提示词模板我常用的提示词模板包含六块角色、目标、技术栈、约束、输入样例、验收标准。下面是一个实际用过的例子稍微脱敏后放出来角色你是一名熟悉 TypeScript、NestJS 和 Prisma 的后端工程师。 目标为现有的「订单」模块新增一个批量查询接口输入订单号数组返回订单列表。 技术栈NestJS 10、Prisma 2.x、项目使用装饰器风格Controller 内不写业务逻辑统一走 Service。 约束 - 订单号数组最大长度 100超过直接抛 BadRequestException - 查询结果需按订单号输入顺序排序 - 使用现有 OrderService 中的数据访问方法不要引入新的数据库查询库。 输入样例[ORD-2023-001, ORD-2023-002] 验收标准 - 提供 Controller、Service、DTO 的代码 - 在关键路径上补充简要注释 - 说明你会如何处理空数组和不存在订单号的情况。这套模板看起来有点长但实际写起来不到二十秒。它把模糊的“帮我写个接口”变成了可执行的工程任务。AI收到这些信息后生成结果通常更贴近项目现状。我建议每个人根据自己项目的特点设计一套固定模板而不是每次临时发挥。因为提示词本身也是“代码”固定模板能减少沟通噪音。3.3 用“计划-执行-验证”循环代替一次性生成很多人用完AI发现一个现象第一版代码能跑但总觉得哪里不对让AI改一次又引入别的Bug。这是正常的。AI生成代码基于概率不是基于对系统全局的严格推理。所以我的工作流不是“生成-复制-完事”而是“计划-执行-验证”三步循环。计划阶段先让AI输出实现思路不用它马上写代码。这一步特别适合复杂改动。比如我想重构一段循环可以先问“这段代码要改成流式处理你觉得需要拆成哪几个步骤有什么边界条件”它的方案不一定完全正确但能帮我打开思路。执行阶段再让它按方案写具体代码。到了验证阶段除了跑测试和看检查结果我还会把生成的代码粘贴到Diff里逐行Review重点看变化的部分是否影响既有逻辑。这三步循环看起来多花了一点时间但反而比直接生成然后返工更省。4. 代码质量与安全红线AI 生成的东西不能直接信4.1 审查 AI 代码时我常用的检查清单AI辅助开发最大的风险不是它写得差而是它写得太流畅让你放松警惕。我自己经历过不止一次AI生成的方法通过了单元测试却会在高并发下出现数据竞争或者调用了某个不存在的包因为那个包是模型“编”出来的。所以现在不管AI的代码看起来多合理我都要过一遍检查清单。我把检查分为四层。第一层是依赖与API检查确认用到的库是否真实存在、版本是否正确、API签名是否真的那么写。第二层是边界与异常处理空值、超长输入、并发覆盖、超时、重试等问题有没有考虑到。第三层是性能与资源循环里有没有隐藏的数据库查询、会不会造成内存溢出、有没有及时释放连接。第四层是工程规范命名是否符合项目风格、是否沿用现有的错误码体系、有没有引入重复的工具函数。每一层都不难但缺一不可。这个清单不一定只用于审查AI代码手动写的代码也可以过一遍。但AI特别容易在“边界和异常处理”上偷懒因为它在训练数据里看到的正确路径往往比错误路径多。所以我会针对性地追问AI“如果这个函数传入 null 会怎样如果数据库超时会怎样如果数组为空会怎样”让它把处理逻辑补齐。4.2 私有代码与数据安全这道红线不能碰在团队里推广AI辅助开发时最容易被忽略的是数据安全。很多免费在线工具会把提交的代码用于模型训练或服务改进如果项目里包含数据库连接串、客户手机号、内部接口逻辑这些内容贴进去就等同于把机密交出去。我的建议是给团队定一条明确规则严禁把非脱敏的私有代码直接粘贴到外部AI工具除非用了企业版且签署了数据保护条款。如果确实需要在敏感代码上使用AI可以考虑私有化部署的开源模型让一切在本地或公司内网完成。有关私有化部署如果你有稍好的显卡可以通过开源工具跑一个中等参数量模型速度虽然不及云端但对代码理解任务来说通常够用。这一条请务必当成硬性规范而不是建议。很多事故都不是因为AI不安全而是因为使用者没有意识到“复制粘贴”这个动作本身有代价。4.3 常见问题与排查技巧实录说几个我实际踩过的问题以及排查思路。一是AI“幻觉API”。AI推荐了一个工具包我照着文档集成结果编译一直失败。后来发现那个包在最新版本里已经改名了模型用的还是旧文档。排查方法很简单先查官方仓库的Release记录再对比代码里依赖的版本。千万不要直接信模型给出的“最新版本”一定要去包管理器确认存在性。二是AI写出的代码在本地测试全绿但CI上挂了。常见原因是环境差异比如文件路径分隔符、环境变量、时区、编码。排查时先看CI日志中的真实报错再让AI根据报错反向排查。有时候你只需要把报错信息原样发给AI它能比你更快定位到问题点。三是AI“过度优化”导致代码可读性变差。比如为了减少代码行数写出一行嵌套三层的lambda表达式。这种代码功能没问题但维护成本很高。我在Review时如果发现AI生成代码太“聪明”会明确告诉它“用更朴素、更直白的写法”并把它作为约束写进提示词模板。四是Agent模式自动改文件时把无关的缩进和换行也改了。这会导致Code Review时diff特别大严重干扰审查。我后来约定Agent执行前先diff一次执行后限制只修改指定文件如果它动了无关区域直接回滚并重新生成。这属于经验教训建议团队在引入Agent时提前定好“可修改范围”。4.4 让 AI 自己审自己的代码AI写的代码还可以让AI来审但要换个角度。我经常会让同一个模型扮演“资深Reviewer”把刚生成的代码发给它并模拟一次Code Review。关键是让AI明确“不是重新生成代码而是指出问题并给出严重程度”。这个做法看起来有点绕但实际效果不错。因为生成代码时模型倾向于“补全”而审查时会倾向于“挑刺”同一个模型也能切换模式。我会这样问它“以下代码是一个新建的订单接口请以团队资深工程师的眼光指出逻辑漏洞、边界问题、安全风险和可读性问题并标注严重程度。不要直接重写完整代码只需要给问题清单和修改建议。”这样得到的反馈往往比第一轮生成时更具体。当然不能让AI代替人工Review它还可能漏报问题但它作为“第一道过滤器”真的能省掉我很多时间。5. 从个人经验出发AI 辅助开发的未来与我的原则5.1 印象最深的三次翻车现场第一次翻车是AI给了一个安全建议但它引用的CWE编号和实际场景对不上。我照着改了代码结果功能直接不可用后来才发现它把两个相似漏洞的描述混淆了。这件事让我意识到AI适合做“提醒者”但不适合做“唯一判断者”。第二次翻车是让AI“优化”一段查询逻辑。它把查询从数据库层挪到了内存层理由是减少了查询次数。结果表数据量一上来内存直接爆了。AI优化时并不理解当前数据规模和部署资源限制所以像这类影响架构的改动我坚持先把决策背景写清楚再动手。第三次翻车是在一个多文件任务里Agent自动执行时把测试环境的配置模板覆盖了。当时整条流水线挂掉排查了很久。事后我发现Agent工具本身是有文件权限的如果不提前设置只读路径它就会按自己的理解修改。所以现在凡涉及配置文件和密钥我都会把相关路径加入禁止修改名单。这三件事教会我的同一个道理AI是放大器你的流程严谨它就更高效你的流程松散它就会放大混乱。5.2 我总结的几条使用原则结合这些年的实践我给自己定了四条原则。第一AI永远负责“初稿”负责人是“人”。无论是代码还是文档AI产出只是候选方案最终判断必须由人来做。第二上下文胜过模型。对同一个模型你给的信息越具体结果质量越高。与其纠结“哪个模型更强”不如花时间把任务拆得更清楚。第三一定要有自己的测试防线。AI生成代码必须跑过完整测试单测通过不代表整体正确还要有集成测试和人工Review。第四代码安全是不可妥协的底线。私有代码不出内网敏感数据不粘贴到不受控的工具这条规则没有例外。这四条看似简单但真正做到需要养成肌肉记忆。我见过很多开发者在AI浪潮里迅速从“手写一切”滑向“全盘接受AI”在两个极端之间来回摇摆。最好的状态大概是把AI当成一个思维速度很快、但经常充满自信地犯错的同事你要做的是给它清晰的工作指令同时做好质检。5.3 接下来我想尝试的方向AI辅助开发对我来说已经不是要不要用的问题而是怎么用得更体系化的问题。下一步我打算把AI工具接入测试开发流程让AI根据功能描述自动生成测试用例骨架然后由测试同学补充边界数据。另外我也在尝试让AI自动整理项目文档包括把代码注释转化成接口文档、把设计讨论沉淀成决策记录。这类任务过去没人愿意做AI做起来反而有点优势。还有一块值得关注的是多AI协作也就是让不同模型分工。比如一个模型负责方案设计另一个模型负责代码实现再让第三个模型做代码审查。我试过几次效果时好时坏但目前能确认的是多AI协作的前提是任务边界清晰否则纯属热闹。可能未来工具会更成熟但现阶段我还是更相信流程设计而不是单个工具的魔法。最后再分享一个很琐碎但很实用的心得我在每次用AI之前都会先写一行“我打算让AI帮我做什么我要怎么验证结果”。这句话看起来很笨但它能逼我把目标想清楚。AI辅助开发的收益本质上来自约束和复盘而不是来自模型参数。如果你也想把这套方法用起来不妨从一次小重构开始给自己半小时试错很快你就能找到属于自己的节奏。
返回列表