ARTICLE DETAIL

资讯详情

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

AI编程三大高效工作流:从需求到代码的复用实践

AI编程三大高效工作流:从需求到代码的复用实践 1. 为什么“能立刻复用”比“功能强大”更重要我见过太多人收藏了几百个AI编程工具从代码补全到Agent框架硬盘里塞满了各种整合包结果日常写业务代码时还是一个字符一个字符地敲。问题出在哪不是工具不够强而是这些工具没有被组织成工作流。单个工具再猛每次用之前都要想“我现在该打开哪个、该输入什么、输出怎么接”这个思考成本就足以让人放弃。所谓工作流说白了就是把“输入→处理→输出→验证”这条链路固定下来让肌肉记忆代替决策。就像厨师炒菜真正的高手不是每道菜都重新发明火候而是把切配、腌制、爆炒、调味这几个环节练成条件反射。AI编程也是一样能立刻复用的工作流意味着你不需要每次重新配置环境、重新写提示词、重新想怎么验证结果打开就能干活。这篇文章要聊的三个工作流分别对应编程中最耗时的三个场景新功能从零到一、存量代码的理解与修改、重复性代码的批量生成。它们不依赖某个特定平台你在本地IDE、云端编辑器、甚至命令行里都能复现。每个工作流我都会拆到“为什么这么设计”“具体怎么操作”“我踩过哪些坑”这个粒度保证你看完就能用用了就回不去。提示下面所有工作流的核心逻辑都是“把AI当成一个需要明确指令的初级工程师”而不是“许愿池”。指令越具体输出越可用。2. 工作流一从需求到可运行代码的“三段式生成法”2.1 为什么直接让AI写代码往往不好用很多人用AI编程的第一步就是打开对话框输入“帮我写一个用户登录功能”然后期待一段完美代码。实测下来这种方式的可用率不到三成。原因很简单AI不知道你的技术栈、不知道你的项目结构、不知道你的代码规范、更不知道你已有的工具函数。它只能根据训练数据里最常见的模式来猜猜出来的东西往往和你的项目格格不入。我试过让AI直接生成一个React组件它给我返回了一个用class写的、带componentDidMount的版本而我的项目早就全量Hooks了。这不是AI笨是我没告诉它上下文。三段式生成法的核心就是把“写代码”这个动作拆成“定接口→填逻辑→接上下文”三步每一步都给AI足够的约束。2.2 第一段用自然语言锁定函数签名和数据结构不要一上来就让AI写实现。第一步只做一件事确定输入输出。你可以这样问我要实现一个函数功能是根据用户ID查询订单列表。 请帮我设计 1. 函数的入参类型和名称考虑分页、筛选条件 2. 返回值的结构考虑错误处理、空结果 3. 需要哪些辅助类型定义 只输出TypeScript类型定义和函数签名不要写实现。这一步的价值在于AI会帮你考虑到很多你容易忽略的边界情况。比如它可能会问“要不要支持按时间范围筛选”“分页是offset还是cursor”“错误是抛异常还是返回Result类型”。这些决策一旦定下来后面写实现就是填空题。我个人的习惯是拿到AI返回的类型定义后会手动改一遍把命名改成项目里的风格把不需要的字段删掉。这一步花两分钟后面省二十分钟。2.3 第二段分函数体生成每次只关注一个逻辑块有了签名之后不要一次性让AI写完整实现。把函数体拆成几个逻辑块逐个生成。比如查询订单列表可以拆成参数校验→构建查询条件→执行查询→格式化返回。你可以这样操作基于上面的函数签名请只实现“构建查询条件”这部分。 要求 - 使用项目里已有的 buildWhereClause 工具函数签名如下... - 时间范围用 startTime 和 endTime 两个可选参数 - 状态筛选支持多选 只输出这部分代码不要包含其他逻辑。这样做的好处是每个逻辑块都很短AI不容易跑偏而且你可以逐个review。如果某个块写错了重新生成的成本很低。全部块生成完之后你再手动拼起来顺便检查接口是否对得上。2.4 第三段把项目上下文喂给AI做最终整合最后一步是把拼好的代码和项目里相关的文件一起发给AI让它做一次“整合检查”。你可以把工具函数文件、类型定义文件、类似的已有函数一起贴进去然后问这是我拼好的实现请检查 1. 是否有未处理的边界情况 2. 是否和项目里已有的错误处理模式一致 3. 是否有性能问题比如N1查询 只指出问题不要重写代码。这一步相当于让AI做一次code review。实测下来它经常能发现一些我漏掉的空值判断或者类型不匹配。但注意不要让它直接改代码因为它的修改可能会破坏你已有的风格。让它指出来你自己改。2.5 这个工作流的避坑要点第一不要跳过类型定义直接写实现。我试过偷懒结果AI返回的代码里字段名和数据库对不上调试了半天。第二每次生成的代码块不要超过50行。超过这个长度AI的注意力会分散开始编造不存在的函数。第三整合检查时不要贴太多文件。贴三个最相关的就够了贴太多反而会让AI抓不住重点。注意这个工作流对提示词的精确度要求很高。如果你发现AI连续两次生成的结果都不对不要继续追问而是回到第一步重新定义类型。问题大概率出在输入不够明确。3. 工作流二存量代码的“逆向理解与安全修改”3.1 接手老项目时AI能帮你做什么每个程序员都遇到过这种情况接手一个没有文档、没有注释、原作者已经离职的项目需要在里面加一个功能。传统做法是硬着头皮读代码从入口一路跟到数据库花两三天才能理清脉络。AI可以把这个过程压缩到几个小时但前提是你知道怎么问。逆向理解工作流的核心思路是不要试图让AI一次性理解整个项目而是让它帮你画出一张“调用关系图”然后你顺着图去读关键代码。具体分三步定位入口→追踪调用链→生成修改方案。3.2 第一步用“入口定位法”找到代码的起点老项目最怕的是不知道从哪开始读。你可以把项目的路由文件、控制器文件或者main函数贴给AI然后问这是一个项目的路由配置/入口文件。我要找和“订单导出”相关的代码。 请帮我 1. 列出所有可能相关的路由和对应的处理函数 2. 按调用顺序排列 3. 标注每个函数所在的文件路径如果文件里有import的话AI会帮你把散落在各处的入口点串起来。这一步不需要它理解业务逻辑只需要它做文本匹配和路径追踪。我试过一个有200多个路由的老项目AI在30秒内就帮我定位到了三个相关的入口比我自己翻快多了。3.3 第二步沿着调用链逐层追问拿到入口之后不要一次性把整个文件贴给AI。正确的做法是从入口函数开始只贴这个函数和它直接调用的下一层函数然后问这是入口函数 A它调用了 B 和 C。 请帮我 1. 解释 A 的业务逻辑用一句话 2. B 和 C 各自负责什么 3. 如果要修改 A 的返回值格式需要同步改哪些地方然后拿着AI的回答去读B和C的代码再重复这个过程。这样一层一层往下你会在脑子里建立起一棵调用树。每层只关注两三个函数认知负担很小。我个人的经验是追踪到第三层的时候你基本就能猜到业务逻辑了。后面的层可以跳着看只关注和你要改的功能相关的分支。3.4 第三步生成“最小影响面”的修改方案理解清楚之后让AI帮你评估修改方案。把你要改的函数、它的调用方、它调用的下游函数一起贴给AI然后问我要把函数 X 的返回类型从 A 改成 B。 请帮我 1. 列出所有需要同步修改的调用方 2. 每个调用方需要改哪一行 3. 有没有办法通过适配器模式避免大规模修改 只输出修改点和影响范围不要写完整代码。这一步的关键是让AI帮你找全影响面。人脑很容易漏掉某个角落里的调用AI做文本搜索比人靠谱。但注意AI可能会过度修改把不相关的地方也改了。所以拿到方案后你要自己判断哪些是必须改的哪些是可改可不改的。3.5 安全修改的检查清单在真正动手改代码之前我通常会做这几件事检查项具体操作为什么重要备份原文件git commit 或复制一份改错了能回滚确认测试覆盖跑一遍现有测试知道哪些行为不能变标记修改点在代码里加 TODO 注释方便review和回滚小步提交每改一个文件就commit出问题能定位到具体改动对比AI建议不盲从AI的修改方案AI可能不了解业务约束提示让AI帮你理解代码时一定要贴真实的代码不要贴简化版。简化版会丢失关键细节导致AI给出错误的判断。4. 工作流三重复性代码的“模板参数”批量生成4.1 什么场景适合批量生成编程中有大量重复性工作写CRUD接口、写单元测试、写数据转换函数、写配置文件。这些代码结构高度相似只是字段名和类型不同。手动写不仅慢还容易出错。AI特别擅长这类任务但前提是你得给它一个模板。模板参数工作流的核心是先让AI从现有代码中提取模板然后用表格形式提供参数最后批量生成。这个工作流我用了大半年生成过几百个接口和测试用例准确率在九成以上。4.2 第一步从现有代码中提取模板不要凭空让AI发明模板。找一段你已经写好的、质量不错的代码贴给AI然后问这是我写的一个用户查询接口。请帮我提取一个代码模板 把其中和“用户”相关的部分替换成占位符比如 {{EntityName}}、{{fieldName}}。 要求 1. 保留所有结构性的代码import、装饰器、错误处理 2. 只替换实体相关的名称和类型 3. 输出模板和占位符说明AI会返回一个带占位符的模板。你可以手动调整一下把不需要参数化的部分固定下来。比如错误处理的格式、日志的写法、返回值的包装这些通常不需要每个接口都变。4.3 第二步用表格提供参数避免自然语言歧义有了模板之后不要用自然语言描述参数而是用表格。比如要生成订单、商品、支付三个接口你可以这样给AI基于上面的模板请为以下三个实体生成代码 | EntityName | fieldName | fieldType | isRequired | |------------|-----------|-----------|------------| | Order | orderNo | string | true | | Order | amount | number | true | | Product | productName | string | true | | Product | price | number | true | | Payment | paymentNo | string | true | | Payment | status | enum | true |表格的好处是结构化AI不会把字段名和类型搞混。我试过用自然语言描述“订单有订单号和金额商品有商品名和价格”AI有时候会把订单号写到商品里。用表格之后这种错误基本消失了。4.4 第三步分批生成每批不超过五个即使有了模板和表格也不要一次性让AI生成几十个文件。我的经验是每批不超过五个实体。超过五个之后AI开始偷懒后面的实体可能会复用前面的字段或者漏掉某些占位符替换。生成完一批之后立刻跑一遍编译或lint。如果有错误把错误信息贴给AI让它修正。修正完之后再生成下一批。这样虽然看起来慢但总体返工率低很多。4.5 批量生成的质量控制批量生成的代码最怕的是“看起来对跑起来错”。我通常会做这几层检查第一层是语法检查用IDE的lint或者编译命令跑一遍确保没有语法错误。第二层是类型检查如果项目有TypeScript或者强类型语言确保类型对得上。第三层是抽样测试从生成的代码里随机挑两三个手动写个测试用例跑一下。第四层是diff review把生成的代码和模板做diff看看有没有意外的改动。注意批量生成时AI可能会“自作主张”地优化代码。比如把重复的import合并、把相似的函数抽成公共函数。这些优化有时候是好的有时候会破坏你的项目结构。所以生成之后一定要review不要直接commit。5. 三个工作流的组合使用与工具选型5.1 什么时候用哪个工作流这三个工作流不是互斥的而是对应不同的场景。我通常这样判断场景推荐工作流原因从零写新功能三段式生成法需要先定接口再写实现改老代码加功能逆向理解与安全修改需要先理解再动手写重复性代码模板参数批量生成结构固定只是参数不同混合场景组合使用先逆向理解再三段式生成最后批量填充比如我要在一个老项目里加一个批量导出功能我会先用逆向理解工作流搞清楚现有的导出逻辑然后用三段式生成法设计新的导出接口最后用模板参数工作流生成多个导出格式的代码。5.2 工具选型不要绑定单一平台这三个工作流不依赖特定工具。你可以在Cursor里用可以在VS Code加插件用可以在网页版对话框里用甚至可以在命令行里用。关键是提示词的结构而不是工具本身。我个人的配置是日常写代码用IDE内置的AI补全复杂逻辑用对话框式AI批量生成用脚本调用API。但这不是必须的你完全可以用一个工具完成所有工作流。工具选型的唯一标准是能不能方便地贴代码和看输出。5.3 提示词管理的几个实用技巧用了半年多之后我积累了一些提示词管理的经验。第一把常用的提示词存成片段比如“提取模板”“检查影响面”“生成测试用例”用的时候直接插入不用每次重写。第二给提示词加版本号比如“三段式生成法-v2”因为AI模型会更新旧提示词可能失效。第三记录失败案例把AI生成得不好的例子存下来分析是提示词的问题还是模型的问题。我试过用笔记软件管理提示词后来发现最方便的还是直接放在项目里的一个prompts/目录下用Markdown文件存。这样换电脑、换项目都能带着走。6. 实操中常见的坑与排查方法6.1 AI生成的代码“看起来对但跑不通”这是最常见的问题。原因通常是AI补全了一些不存在的函数或变量。排查方法是先看import。AI经常会import一些项目里没有的包或者从错误的路径import。把import全部检查一遍能解决一半的问题。然后看类型AI可能会把string当成number用或者把可选参数当成必填。最后看边界AI很少主动处理空数组、null、undefined这些情况。我遇到过一个典型例子AI生成的排序函数没有处理空数组结果线上报错。后来我在提示词里加了一句“请处理空输入和异常输入”这类问题就少了很多。6.2 AI“忘记”了前面的上下文在长对话中AI会逐渐忘记最开始的要求。比如你让它用Hooks写React组件聊了十轮之后它开始用class。解决办法是每隔几轮重新贴一次核心约束。或者更彻底一点一个任务开一个新对话不要在一个对话里做太多事。我个人的习惯是每个工作流开一个独立对话。三段式生成法里定接口、写实现、做review各开一个对话。这样虽然麻烦一点但每次AI的注意力都是新鲜的。6.3 批量生成时字段错位用表格提供参数时如果表格列数多、行数多AI可能会把某一行的字段写到另一行去。解决办法是减少每批的数量并且在表格里加一个序号列。生成之后用脚本检查一下每个实体的字段数量是否和表格一致。还有一个技巧是让AI先输出一个映射表确认它理解对了参数再让它生成代码。比如请先输出一个表格列出每个实体对应的字段确认无误后再生成代码。这一步多花30秒能省掉后面半小时的调试。6.4 修改老代码时“改一处崩三处”这是逆向理解工作流没做到位的结果。根本原因是没有找全调用方。我的做法是在修改之前让AI帮我做一次全局搜索请在项目中搜索所有调用了函数 X 的地方包括直接调用和间接调用。 输出文件路径和行号。然后拿着这个列表逐个确认。如果项目很大可以用IDE的“查找引用”功能配合AI的搜索结果双重确认。提示修改老代码时最危险的不是改错而是漏改。漏改的地方可能在几个月后才暴露到时候排查成本极高。所以宁可多花时间找全影响面也不要急着动手。7. 我个人的一些使用体会这套工作流我用了大半年最大的感受是AI编程的效率提升不在于AI有多强而在于你把任务拆得有多细。同样一个功能有人用AI半小时写完有人用AI折腾一下午差别就在任务拆解上。另一个体会是不要追求“全自动”。我见过有人想搭一个全自动的Agent从需求直接生成可上线的代码。实测下来这种全自动流程的返工率极高因为AI不了解你的业务约束和代码规范。更务实的做法是“半自动”AI生成你来review和调整。这样既享受了AI的速度又保证了代码质量。最后分享一个小技巧把AI当成一个需要你带的新人。你不会对一个新人说“把项目做好”你会说“先做A再做B注意C”。对AI也是一样指令越具体输出越可用。这个心态转变过来之后你会发现AI编程的门槛其实很低但天花板很高。
返回列表