我从 2023 年开始把 AI 塞进日常开发流程,前后踩了不少坑,也积累了一套能真正提速的工作流。这篇文章不聊虚的,直接把我现在每天都在用的这套“AI 编程工作流”拆给你看:从概念、工具选型,到一步步搭建,再到常见问题的排查,全部是实操记录。
1. 内容整体设计与思路拆解
1.1 “AI 编程工作流”本质上在解决什么问题
先说个我自己的真实感受。以前写一个后端接口,从需求分析、写代码、自测到提交,起码得小半天。现在有了 AI 辅助,我可能一个小时就能搞定,而且代码质量不比我手写差。但这里有个前提——不是装个 AI 插件就完事,而是要把 AI 当成一个“团队里的初级工程师”来用,给它清晰的指令、给它必要的上下文、让它产出可审查的代码,你再负责把关和整合。
所以,“AI 编程工作流”并不是一个具体工具,而是一套方法论。这套方法论的核心是:在需求拆解、代码生成、代码审查、测试编写、文档补全、CI/CD 集成这些环节里,找到 AI 擅长的事,把它嵌入进去,同时保留人对架构和质量的最终控制权。
我见过很多团队用 AI 编程,效果两极分化严重。用得好的,效率翻倍;用得不好的,代码库里堆了一堆 AI 生成的“看似正确但实则有毒”的代码,比如没过时的 API、没处理边界条件、甚至逻辑完全错误但语法好看。差别在哪里?差别就在你有没有一套工作流来约束 AI 的输出,以及你有没有建立“AI 输出必然需要人工审查”这个基本认知。
1.2 为什么选择“人机协作”而不是“完全自动化”
很多刚接触 AI 编程的朋友,第一反应是“能不能让 AI 自己把整个项目写出来”。我的答案是:现阶段别这么干,至少不要对核心业务代码这么干。
原因很简单。AI 大模型擅长的是“模式匹配”和“知识复述”,它见过海量开源代码,所以写 CRUD、写工具函数、写测试用例、写正则表达式、写 Dockerfile 这些东西非常在行。但一旦涉及你项目的特定业务逻辑、特定的技术约束、特定的性能要求,它就只能靠“猜”了。你让它猜,它就会一本正经地给你生成一个“看起来像那么回事但实际不能用”的东西。
所以我在设计这套工作流时,原则很明确:AI 负责产出,人负责决策。AI 控制器具和样板代码的生成,人控制架构设计和关键逻辑的判断;AI 负责快速给出多个方案,人负责选择最合适的一个;AI 负责写第一版测试,人负责补边界条件和业务异常分支。
1.3 这套工作流适合谁、不适合谁
根据我自己的使用经验,这套工作流最适合这几类人:
- 独立开发者或小团队:人手不够,AI 相当于多个“免费初级程序员”,能显著提升单人产出。
- 有经验的开发者:你越懂代码,越能把 AI 的输出质量拉高。AI 是一个放大器,你本身的能力越强,放大的效果越明显。
- 需要大量写胶水代码的团队:比如接入第三方 API、写数据转换脚本、生成重复性 CRUD 接口,这些工作 AI 完成度极高。
不太适合的情况也有:
- 对代码质量要求极其严苛的领域(如航空航天、医疗设备控制),不是不能用,而是人工审查成本太高,性价比不明显。
- 纯粹零基础想靠 AI 直接做出商业产品:AI 能帮你写代码,但改 bug、部署、调优时,你真的需要知道底层在发生什么,否则一个小问题都会卡住你半天。
2. 核心工具选型解析:AI 编程工作流的“三驾马车”
2.1 代码生成:从 Cursor 到 Continue,怎么选
聊 AI 编程,绕不开的就是代码补全和生成工具。我用过 GitHub Copilot、Cursor、Continue、通义灵码,还有几个开源的本地模型方案,目前的结论是:主力用 Cursor,备胎用 Continue,偶尔用通义灵码处理一些中文注释和文档需求。
Cursor 之所以能成为我的主力,核心原因是它对“多文件上下文”的处理能力。普通的 AI 补全工具只能看当前这个文件,而 Cursor 可以把整个项目的结构、相关文件、甚至你的 git 历史都作为上下文喂给模型。这意味着你让它“帮我重构一下用户模块的接口”,它是真的会把用户相关的文件都读一遍再动手,而不是只盯着你当前打开的那个文件瞎猜。
Continue 是我在 Cursor 的订阅额度用完之后的备选。它是个开源 IDE 插件,支持自定义模型(可以接本地 Ollama 部署的模型),适合对数据隐私有要求、或者不想订阅付费服务的场景。缺点是需要自己折腾配置,对新手不太友好。
通义灵码则是阿里出的,免费,中文理解能力强,尤其适合给代码写中文注释、生成中文文档的场景。我一般让 Cursor 写代码,然后再丢给通义灵码补注释和文档,两个工具搭配着用。
2.2 流程编排:Dify、coze、n8n 各自的定位
如果说 Cursor 这类工具解决的是“写代码”的问题,那“AI 编程工作流”里的另外一个重要维度,是把 AI 能力嵌入到业务流程里。这时候就需要工作流编排工具。
我用过的三款主流工具,定位差异挺大:
| 工具 | 核心定位 | 适合场景 | 上手难度 |
|---|---|---|---|
| Dify | 开源 LLM 应用开发平台 | 做 RAG 应用、Agent、内部工具 | 中等 |
| Coze(扣子) | 字节的 AI 应用平台 | 快速做 bot、插件、发布到飞书/微信 | 低 |
| n8n | 通用自动化工作流 | 把 AI 节点嵌入到业务自动化里 | 中等偏高 |
如果你要做的是纯 AI 应用,比如知识库问答、简历筛选、自动写周报,那 Dify 和 Coze 都很合适。区别是 Dify 开源、可私有化部署,适合对数据安全有要求的团队;Coze 用起来最省心,拖拽式搭建,发布渠道也多。
如果你想做的是“把 AI 作为某个业务自动化流程中的一个环节”,比如“收到邮件 → 用 AI 提取关键信息 → 自动同步到表格 → 发通知”,那 n8n 会更顺手。n8n 本身是通用自动化工具,AI 节点只是它众多节点中的一种,你可以轻松把 AI 能力嵌进现有流程里。
2.3 模型层选型:在线调用还是本地部署
模型选型这块,我踩过不少坑,现在的原则很简单:线上为主,本地为辅。
线上模型我主力用的是 DeepSeek 和通义千问,偶尔用 Claude。DeepSeek 的代码能力在国产模型里是第一梯队,而且价格非常便宜,对一些高频、重复性的任务(比如生成单元测试)可以放开用。Claude 的代码理解和多文件重构能力确实强,适合处理复杂任务,但费用也高,我一般只在关键节点才用它。
本地部署模型我用的是 Ollama + CodeLlama 和 Qwen2.5-Coder。说实话,本地模型和线上模型的差距还是明显的,特别是复杂逻辑的生成,本地方案经常会给出“语法正确但逻辑跑不通”的代码。但本地模型有一个线上模型无法替代的优势:数据不出内网。如果公司对代码安全有严格要求,或者你要处理的代码涉及敏感业务逻辑,那本地部署是唯一合规的选择。
我的建议是:个人开发者和中小团队直接上线上模型,省心省力;有合规要求的场景才考虑本地部署,不要为了“白嫖”而牺牲效率。
3. 实操过程:从零搭一套可以用的 AI 编程工作流
3.1 基础环境准备:IDE、插件与模型配置
先说环境这一块。我日常的主力 IDE 是 VS Code,Cursor 本质上是一个基于 VS Code 的发行版,所以我的配置路径是:日常编码用 Cursor(VSCode 的 AI 加强版),遇到复杂项目分析再用 Continue 插件接入不同模型。
配置 Cursor 的步骤很简单:
- 去官网下载 Cursor 安装包,安装完成后登录账号(免费版有一定额度,Pro 版按月付费)。
- 打开设置,在 Models 里选择你需要的模型。我一般会同时配置 GPT-4o 和 Claude 3.5 Sonnet,因为不同模型在不同任务上的表现差异明显。比如,我发现 Claude 在处理“根据需求文档生成完整项目脚手架”这种任务时表现更好,而 GPT-4o 在“根据现有代码解释 bug 原因”时更靠谱。
- 把项目的根目录打开,Cursor 会自动索引项目文件。注意:不要整个项目太大还全塞进去,我试过把一个微服务全仓(几十万行代码)喂给 Cursor,结果响应速度变得很慢,而且上下文容易被无关文件稀释。最佳实践是只打开当前迭代涉及的相关模块。
如果你选择的是 Continue 插件路线,配置 OpenRouter 或者本地 Ollama 的方式稍微麻烦一点,需要在 config.yaml 里配置模型接口。我贴一份我用的 Ollama 配置片段:
models: - name: qwen2.5-coder:14b provider: ollama model: qwen2.5-coder:14b api_base: http://localhost:11434这样配置后,在 VS Code 里按 Cmd+L(或者 Ctrl+L)就能调起对话窗口,可以指定模型,也可以直接把选中的代码发过去问。
3.2 写代码阶段:如何给 AI 下达高质量编程任务
很多人在这一步就翻车了,因为他们把 AI 当成谷歌来用,问的都是“怎么实现一个分布式锁”这种泛泛的问题。AI 给的答案也没错,但跟你项目的实际情况严重脱节。
我自己总结了一套“AI 编程提示词模板”,核心是:背景 + 任务 + 输入输出格式 + 约束条件 + 示例。
举个实际例子。假设我现在要在用户模块里加一个“根据用户 ID 批量查询用户信息”的接口,我发给 Cursor 的提示词是这样:
背景:这是基于 Spring Boot 3 + MyBatis-Plus 的用户服务项目。用户表结构见 UserEntity.java,现有 Mapper 层接口见 UserMapper.java。 任务:新增一个批量查询接口,方法名为 listUsersByIds,接收 List<Long> ids 参数,返回 List<UserVO>,UserVO 里的字段包括 userId、username、email、avatar。 约束条件: 1. IDs 为空列表时,直接返回空列表,不要发 SQL 请求。 2. IDs 超过 100 个时要分段查询,每段 50 个。 3. 查询结果要按传入 ids 的顺序返回,不要按数据库默认顺序。 4. 如果某个 id 不存在,跳过即可,不需要抛异常。 示例: 输入:[1, 2, 3] 输出:[UserVO(id=1, username='张三', ...), UserVO(id=2, username='李四', ...), UserVO(id=3, username='王五', ...)]你会发现,这个提示词里包含了 AI 需要的所有信息:项目背景、使用技术栈、具体任务、边界条件、示例格式。AI 生成的代码基本可以做到“开箱即用”,而不是给你一个“网上随便抄来的标准答案”。
实操下来,这种写法的成功率比我早年“随便问一句”提高了至少一倍。
3.3 代码审查阶段:让 AI 做第一轮 Code Review
写完代码不等于完事。我现在的习惯是,每次写完代码后,不急着提交,而是先把 diff 丢给 AI 做一轮 code review。
具体操作有两种方式。第一种,如果你用的是 Cursor,直接把 git diff 复制到对话里,然后问:“请审查这段代码,重点关注:潜在的空指针风险、并发安全性、SQL 性能问题、异常处理是否合理。按严重程度排序输出,并给出修改建议。”
第二种,用 Continue 插件的“/review”命令(需要自己配置),或者写一个小脚本,把 git diff 传给指定模型。我试过用 shell 脚本把 diff 发给 claude,再让它输出 markdown 格式的审查报告,效果很不错。
说一个我自己踩过的坑。有次我让 AI 写一个批量导入 Excel 的接口,AI 生成的代码逻辑非常漂亮,该检查的都检查了。结果 code review 阶段 AI 自己发现了一个问题:导入过程中,如果某一行数据格式错误,程序会回滚整个事务,导致之前所有正确数据也导入失败。按照业务需求,应该单行进单行判断,跳过错误行继续导入后续数据。这个 bug 如果光靠人眼 review,说实话,很容易漏掉。这也说明“AI 写代码 + AI 查代码 + 人做最终判断”这个组合确实有实际价值。
3.4 测试与部署环节:AI 在 CI/CD 里的嵌入实践
我早期对 AI 编程的理解比较狭隘,以为只有写代码环节能用。后来发现,测试用例生成和 CI 联调阶段,AI 也能帮上大忙。
测试用例生成这块,我现在是用一段简单的脚本把某个 service 类的方法签名提取出来,然后调用模型为每个方法生成 JUnit/Mockito 的单元测试。生成的时候我会指定边界条件:比如“这个方法传入 null 参数怎么办?传入空列表怎么办?模拟数据库异常怎么办?”AI 生成的测试可以覆盖我第一时间想不到的边界分支,我再人工审查一遍,补齐业务相关的特殊情况,测试覆盖率能明显提升。
部署阶段,我用 n8n 搭建了一个简单的 CD 工作流:代码 push 到主干分支 → 触发 CI(跑测试和静态检查)→ 通过后自动构建 Docker 镜像 → 推送到私有镜像仓库 → 通知我手动点击部署。中间还接了一个 AI 节点,专门分析 CI 失败的日志,给出可能的修复建议。虽然这个 AI 分析有时不太准,但碰到“依赖版本冲突”“环境变量缺失”这类常见问题时,它比人翻日志快多了。
4. 进阶实操:用 Dify 搭一个真实的 AI 工作流应用
4.1 用 Dify 实现“简历自动筛选 + 结构化分析”
前面说的都是 AI 在代码生产环节的应用,下面聊一个更完整的“AI 工作流”案例:简历筛选。
我自己创业的时候,招人是个大工程。一份 JD 发出去,邮箱里能收到几百封简历,光初筛筛选就要花两三个小时。后来我用 Dify 搭了一个简历筛选工作流,整个过程变成了:HR 收到邮件 → 自动下载附件简历 → 解析 PDF 内容 → AI 按照 JD 要求打分 → 输出结构化评估报告 → 发送通知。
搭建步骤大概是这样的:
- 创建知识库:把团队的文化价值观、常用技术栈要求、过往优秀简历的共性特征整理成文档,上传到 Dify 的知识库里做向量化索引。这一步的作用是给 AI 提供判断的“参照物”。
- 创建工作流:在 Dify 的工作流画布里,拖一个“文档提取器”节点(负责解析 PDF/Word),再拖一个“LLM 节点”,把 JD 要求和知识库内容作为上下文喂给模型。
- 配置评分 Prompt:这个环节最关键。我的 Prompt 大概是这样的:
你是一位资深技术面试官,正在筛选【Python 后端开发】岗位的候选人。 请根据以下 JD 要求评估这份简历: 1. 教育背景是否符合要求 2. 后端开发经验,尤其是 Python 项目经验 3. 对数据库、分布式系统、消息队列的掌握程度 4. 参与项目的复杂度和真实性 请输出以下 JSON 格式的评估结果: {"score": "1-10 分", "summary": "两句话概括候选人优势", "concern": "需重点考察的疑点", "suggestion": "建议进入面试/建议进入笔试/建议淘汰"}- 设置 HTTP 请求节点:把评分结果通过 webhook 发送到企业微信或飞书机器人,HR 手机上就能收到通知。
这个工作流上线之后,我初筛简历的时间从平均 2 小时降到了 20 分钟。当然,AI 的筛选结果不能直接拍板,还要人工复核一遍。但 AI 帮我筛掉了 80% 明显不符合要求的简历,剩下 20% 的候选人我只需要花很少的精力去仔细看。
4.2 工作流里如何安全地调用大模型与私有知识库
顺便提醒一个很多人忽略的问题:在工作流里直接调用大模型 API,很容易把隐私数据发出去。我见过一个团队,用默认配置接了个园区级 RAG 应用,把公司的财务数据直接发给了外部大模型厂商,好在及时发现没有造成实质损害。
自己在搭建类似工作流的时候,至少要注意这几点:
- 优先用 Dify 的私有化部署版本,把整个应用跑在自己的内网环境里。Dify 支持 Docker Compose 一键部署,并不复杂。
- 如果必须调用外部模型 API,在 Prompt 里明确“请勿在回答中引用或复述原始数据”,这是笨但有效的方法。
- 对用户上传的文档做脱敏处理。比如简历筛选场景里,可以把姓名、电话、邮箱先用正则替换成脱敏标识,让 AI 只看能力匹配度,避免不必要的隐私风险。
- 控制知识库的数据访问权限。知识库里如果包含了不该共享的文档,谁调用这个应用都能读到,这个问题很容易被忽略。
4.3 工作流搭建中的常见障碍与自动化运维建议
Dify 这类工具虽然已经很成熟了,但实操中还是有不少坑。我总结几个高频问题:
- 向量化质量差导致检索结果不准:刚开始用 Dify 做 RAG 时,我直接把一堆 PDF 丢进去,结果 AI 回答问题时总是引用不相关的段落。后来发现,文档切分(chunk)策略很关键。简单的按字符切分会让语义点被切断,需要按标题层级或段落语义来切分。Dify 里可以在“知识库 → 分段设置”里配置分段方式,建议开启“父子分段”模式,用大段落检索、小段落生成。
- 工作流节点报错后排查链路长:Dify 的日志功能做得很一般,节点报错时只能看到很笼统的错误信息。我的建议是在关键节点之间加“打印变量”之类的空节点,把中间过程打出来,定位问题会快很多。这个习惯救过我很多次。
- 外部 API 超时导致整个流程失败:某些大模型 API 在高峰期会很慢,默认超时时间往往不够。我一般把 LLM 节点的超时时间调到 120 秒,并在上游加一个“如果超时则重试一次”的分支。
- 数据格式兼容问题:工作流里不同节点之间的数据格式有时对不上,比如 HTTP 节点返回的是字符串,而 LLM 节点要接收数组,这时候需要加一个“代码节点”做转换。我在这上面的经验是:Dify 内置的 Python 代码节点是真的有用,不要忽略它。
5. Prompt 工程与 AI Agent:把工具的能力再放大一倍
5.1 编写高质量编程 Prompt 的原则与模板库
如果说工作流是骨架,Prompt 就是血液。我这两年亲身感受:同样的模型,不同的 Prompt,代码质量能差出一大截。系统性的写法有几个核心原则,分享给你们。
原则一:给足背景,不做“无状态”提问。所有行业里的老手都知道,AI 没有任何关于你项目的记忆,每次对话都是“失忆”状态。所以你每次提问都要把必要背景放进去:项目技术栈、文件位置、业务场景。不要嫌啰嗦,背景就是 AI 的“眼睛”。
原则二:把需求拆成“验收标准”级的指令。不要对 AI 说“帮我优化一下这段代码”,它不知道优化方向是什么。要说清楚“请将这段函数的时间复杂度从 O(n^2) 降到 O(n log n),同时保持对外接口不变,并确保空数组输入时返回空列表而不报错”。验收标准越明确,AI 的完成度越高。
原则三:给 AI 一个“思考框架”,让它分步输出。我最常用的一句话是“请先分析这段代码可能有哪些问题,列出问题清单后再给出修改后的完整代码”。这能避免 AI 上来就输出一大段你也不好判断对不对的代码。先让它说“问题”,再让它给“方案”,这其实是为了触发它更偏推理链路的注意力,效果立竿见影。
原则四:建立可复用的模板库。习惯之后,我把常用的 Prompt 整理成了一套模板库,放在项目 docs 目录里。包括:写接口模板、生成单元测试模板、代码审查模板、数据库迁移脚本模板、解释报错模板等。每次新项目直接复制改改就能用,省掉大量重复动作。
5.2 AI Agent 在编程中的边界:何时让它自主行动
“AI Agent”这个概念最近很热,所谓“会用工具、能自主规划、自己动手执行”的智能体。放到编程领域,大致就是:你给它一个目标,它能自己决定先读哪些文件、执行哪些命令、调试哪些测试,直到完成任务。
我确实试过。有一次让一个 Agent 重构一个 Python 项目中的全部 print 日志为 loguru 调用。Agent 自己分析了项目结构,逐个文件改,然后运行测试,最后把结果汇总给我检查。整个过程大概 10 分钟,比我手动改快多了,质量也在线。
但这不意味着我会让 Agent 去独立完成设计任务。我的经验是:能明确描述验收标准的、单个步骤重复性高的、不涉及核心架构决策的任务,非常适合 Agent 干;而需要业务判断、需要架构审美的任务,现阶段还是亲自上手更稳。
如果你对 AI Agent 还不熟悉,可以从一个简单的工具开始:n8n 里有一个 “Agent” 节点,接上大模型后,它会根据你给的 goal 尝试调用节点工具来完成任务。不过需要提醒的是,Agent 每个步骤都会调用一次模型,token 消耗比较大,而且经常会“迷路”——它可能在一个简单的文件查找上绕来绕去,这时候你需要给它更明确的工具使用边界。
5.3 异步编程与智能体的关联:AI 如何加速并发场景开发
热搜词里出现了“异步编程”和“MapReduce 编程实例”,我猜很多朋友是想知道 AI 能不能简化这些偏“底层”的编程工作。我的体验是:能,但需要给出更细致的上下文。
异步编程的核心在于处理并发、事件循环、回调地狱、线程安全这些概念。对于不熟悉异步模型的开发者,写起来容易绕进去。AI 模型因为训练语料里包含大量的异步编程示例,对常见模式非常熟悉。
一次我让 AI 把一个基于回调的 Node.js 文件处理函数改成 async/await 写法,它不仅能改,还能顺手指出数据竞态条件和未捕获的 Promise 异常。修改后的代码,在测试环境下压测,时延降低了不少。
不过关于 MapReduce,AI 有时候会混淆概念。有一次我让它写一个简单的多文件词频统计 MapReduce 示例,它给我的代码“很标准”,但明显是从 Hadoop 教程里抄的,完全没考虑我是在单机 Python 环境里跑。后来我在 Prompt 里补充了一句“请使用 multiprocessing 模拟 MapReduce 的思想,避免依赖 Hadoop”,它就给出了正确版本的代码。
这说明一个道理:AI 擅长的是给你“标准的、教科书式的”答案,而你要做的是通过 Prompt 把“标准答案”校准成“适合我场景的答案”。
6. 常见问题与排查技巧实录
6.1 提示词被忽略?模型没有正确遵守指令的处理
我遇到最多的问题,就是“我让 AI 不要用某个库,它还是用了”或者“我让它输出 JSON,它夹带了 Markdown 代码块”。
排查思路其实不复杂。首先要意识到,大模型对指令的遵循是有优先级差异的。你的核心约束条件(比如“不要使用 FastAPI”)如果埋在一大段描述中间,模型很可能注意不到。所以重要约束要单独一行,甚至单独加粗(在 Prompt 里用标签包裹)。此外,输出格式类指令可以更强制一点,比如用下面这种写法:
只输出一个 JSON 对象,不要包含任何其他文字、代码块标记或者其他解释性语句。如果模型还是不听,那就优化模型的 temperature 参数。Reasoning 模型的 temperature 一般建议设成 0.2 甚至 0,让它更循规蹈矩、更可预测。太高的 temperature 会让它在格式上“自由发挥”,带来很多不必要的解析烦恼。
还有一招:如果对话式交互老是不准,把同样的任务封装成函数(Function Calling)的格式,让模型通过结构化参数返回结果,合规率会高得多。像 OpenAI 和国产模型都支持 Function Calling,在 Dify、Coze 里直接配置工具节点就能用。
6.2 生成代码有 Bug 时,如何系统排查与修正
AI 生成的代码有 Bug,太正常了,我几乎没有一次生成完就直接能上线的。处理 Bug 的系统化思路是:
- 先复现:把 AI 给的代码跑起来,看具体报错信息。很多小白一看到报错就截图问 AI,其实 AI 也一头雾水。你最好把完整的报错堆栈贴给它,同时标注“在第 X 行触发了什么异常”。
- 缩小范围:如果你贴一整段代码给它让它找 bug,效果其实一般。这时候要做的是自己先定位到出问题的代码块,把上下文压缩到最小范围内,再让 AI 分析。
- 让 AI 自己解释代码逻辑:这个方法很神奇。当我怀疑一段 AI 生成的代码有隐藏逻辑错误时,我让它“逐步解释这段代码的执行流程”,它往往能自己“说出”自己的错误。因为模型在这种模式下会更仔细地推理,能捕捉到前面生成时忽略的边界条件。
- 不要盲目信任 AI 的“修正方案”:AI 修 bug 有时是拆东墙补西墙——修复了空指针却引入了并发问题。每次让 AI 修改后,要追问一句:“这次修改会不会影响其他调用方?”以及“是否支持并发场景?”
6.3 工作流运行慢、Token 消耗大怎么办
工作流慢,主要有三个瓶颈:模型推理速度、外部 API 响应速度、知识库检索耗时。
模型推理速度优化,常见的做法是改用更小更快、但对特定任务已足够用的模型。比如在 Dify 里,同一个工作流的“意图识别”节点可以用便宜的轻量模型,只有“核心内容生成”节点才用最强模型。这个思想叫做“多模型分级调用”,实操下来能省 50% 以上的 token 费用。
知识库检索慢,多半是 chunk 太多或者 embedding 模型太慢。优化方案包括:精简知识库文档、按主题拆分成多个知识库、把不需要实时更新的文档提前做缓存。
另外还有一个容易忽略的点:很多工作流工具默认开了“历史会话保留”,多轮对话时会把之前所有内容都发给模型,token 消耗成倍增长。如果业务场景不需要上下文记忆,就关掉会话记忆功能,或者设置一个“只保留最近两轮”的窗口。
6.4 常见问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| AI 不遵守“不要用某库”的指令 | 约束条件埋没在长提示词中 | 把该约束单列一行,必要时用特殊符号强调 |
| 输出格式经常不符合预期 | temperature 过高或未限制格式 | temperature 调低至 0~0.2,明确只输出 JSON |
| 生成代码频繁报错 | 上下文不够,AI 对项目结构不了解 | 提供相关文件内容、接口签名和错误堆栈 |
| 工作流里 LLM 节点超时 | 模型 API 高延迟 | 调大超时时间,加重试机制,换用更快的模型 |
| 知识库回答经常引用无关内容 | chunk 切分不合理 | 使用父子分段,或按标题/段落语义切分 |
| Token 消耗过快 | 会话记忆太长或模型选型过大 | 关闭记忆或缩短历史窗口,分级调用模型 |
| 本地模型生成质量差 | 模型参数量过小或量化损失 | 换更大参数量模型,减少量化级别,或改用线上模型 |
| Agent 执行任务“迷路” | 工具权限过宽,目标不明确 | 限制可用工具集,把大目标拆成小步骤逐步执行 |
先说结论**——这套“从零搭建 AI 编程工作流”的方法论,我自己用了大半年,最核心的心得就是一句话:别指望 AI 替代你的思考,而是把所有重复性的、标准化的、有明确验收标准的工作逐步交给 AI,把时间和精力省出来,投入到真正需要人的创造力和判断力的事情上。**
我个人在实际操作中的体会是,搭建这套工作流最难的并不是工具配置,而是改变自己的使用习惯。从“手动写每一行代码”切换到“让 AI 写代码、我来审视”的模式,前一两周其实很不适应,总感觉 AI 写得不够好、还得改很多,效率反而低了。但只要你能把提示词质量提上来、把审查环节建立好,熬过这段磨合期,后面的收益会越来越大。
最后再分享一个小技巧:把整条 AI 编程工作流本身也当成一个持续迭代的产品。我每隔几周就会复盘一下,比如“这个月我让 AI 写的设计文档,有几次需要大改?原因是什么?”、“哪些类型的任务 AI 完成度一直不高,要不要继续投入时间优化,还是直接放弃?”这类复盘会让你越来越清楚 AI 的边界在哪里,并且能帮你逐渐构建出一套只属于你自己的、别人拿不走的 AI 协作方法论。希望大家都能搭建出适合自己节奏的那套工作流,把 AI 真正变成手上的利器。