迭代开发与复杂依赖处理


文档摘要

迭代开发与复杂依赖处理 本节摘要:项目骨架搭好后,真正的挑战才开始——持续迭代。本节讲解功能迭代的多轮对话策略(每轮聚焦一个功能、保持上下文连贯)、处理第三方库版本冲突(AI 经常给出过时 API)、以及跨模块修改的上下文管理(改一个接口,前后端测试都要联动)。核心心法:把大功能拆成小步骤,每步一个对话回合,永远让 AI 在「小范围」内工作。 一、多轮对话的迭代策略 每轮只做一个功能点 错误示范: AI 会试图一次性输出所有代码,结果:上下文爆炸、代码互相冲突、你无法审查。 正确做法——每轮对话聚焦一个功能: 💡 技巧:每轮对话开始前,先告诉 AI「当前项目状态」和「本轮目标」。不要假设 AI 记得上一轮的所有细节——它的上下文窗口有限,早期信息可能已被截断。

迭代开发与复杂依赖处理

本节摘要:项目骨架搭好后,真正的挑战才开始——持续迭代。本节讲解功能迭代的多轮对话策略(每轮聚焦一个功能、保持上下文连贯)、处理第三方库版本冲突(AI 经常给出过时 API)、以及跨模块修改的上下文管理(改一个接口,前后端测试都要联动)。核心心法:把大功能拆成小步骤,每步一个对话回合,永远让 AI 在「小范围」内工作。

一、多轮对话的迭代策略

每轮只做一个功能点

错误示范:

帮我实现拖拽功能、评论系统、通知功能、文件上传。

AI 会试图一次性输出所有代码,结果:上下文爆炸、代码互相冲突、你无法审查。

正确做法——每轮对话聚焦一个功能:

第一轮:实现看板拖拽(用 @dnd-kit/core) 第二轮:实现任务评论(纯文本,不支持 Markdown) 第三轮:实现 @提及 功能(在评论基础上扩展) 第四轮:实现通知(评论/分配时触发)

💡 技巧:每轮对话开始前,先告诉 AI「当前项目状态」和「本轮目标」。不要假设 AI 记得上一轮的所有细节——它的上下文窗口有限,早期信息可能已被截断。

保持上下文连贯

多轮迭代中,上下文管理是关键:

方法一:摘要接力

每完成一个功能,让 AI 总结当前状态:

请总结当前项目状态: - 已完成的功能 - 关键文件路径 - 下一步计划 我会在下一轮对话中把这个摘要作为起点。

下一轮对话开头:

项目状态(上轮总结): - 后端:认证 + Task CRUD 已完成,API 在 src/api/ - 前端:登录 + 看板页面已完成,用 useFetch 请求数据 - 本轮目标:实现拖拽排序 请开始。

方法二:文件引用

在 Cursor 中,用 @file 引用关键文件让 AI 看到最新代码:

@src/api/tasks.py @src/components/TaskCard.tsx 现在要给 Task 加「标签」功能: - 后端:Task 模型加 tags 字段(JSON 数组),API 支持按标签筛选 - 前端:TaskCard 显示标签,看板页加标签筛选器

方法三:规则文件兜底

第 4 章配置的 .cursorrules 在这里发挥价值——无论对话怎么切换,AI 始终知道项目规范(技术栈、目录结构、代码约定)。

二、处理第三方库版本冲突

AI 的「过时知识」问题

AI 的训练数据有截止日期。它可能:

  • 给你 React 17 的写法(你用的是 React 18)
  • 调用已废弃的 API(如 getServerSideProps 在 Next.js 14 App Router 中不适用)
  • 推荐已停止维护的库

应对策略

策略一:在 Prompt 中锁定版本

注意:我使用的是 Next.js 14 (App Router),不是 Pages Router。 - 用 "use client" 标记客户端组件 - 不用 getServerSideProps / getStaticProps - 路由用 src/app/ 目录,不用 pages/

策略二:让 AI 先查文档再写代码

我要用 @dnd-kit/core 实现拖拽排序。 请先确认: 1. 当前最新稳定版是多少? 2. 核心 API 是什么(DndContext, useDraggable, useDroppable)? 3. 跟 React 18 有没有已知兼容问题? 确认后再写实现代码。

策略三:遇到报错时给 AI 完整信息

安装 @dnd-kit/core@6.1.0 后运行报错: TypeError: Cannot read properties of undefined (reading 'current') at useSensor (node_modules/@dnd-kit/core/dist/index.js:1234) 我的 React 版本: 18.2.0 我的 Next.js 版本: 14.2.3 请分析原因并给出修复方案。

⚠️ 注意:如果 AI 连续两次给出的修复都不生效,大概率是它的知识跟当前库版本不匹配。这时应该:去官方文档查最新用法 → 把文档关键段落贴给 AI → 让它基于「正确信息」重写。

依赖冲突的排查流程

三、跨模块修改的上下文管理

典型场景:改一个接口,三处联动

假设你要给 Task 加一个 priority 字段(高/中/低):

涉及修改:

  1. 后端模型:Taskpriority 字段 + 数据库迁移
  2. 后端 API:创建/更新接口支持 priority 参数,列表接口支持按 priority 筛选
  3. 前端类型:types/task.ts 加 priority 字段
  4. 前端组件:TaskCard 显示优先级标记,创建表单加优先级选择
  5. 测试:更新相关测试用例

正确的做法:分层推进

第一轮(后端): @src/models/task.py @src/schemas/task.py @src/api/tasks.py 给 Task 加 priority 字段(enum: high/medium/low, 默认 medium): 1. 模型加字段 + 生成 Alembic 迁移 2. Schema 加 priority(创建时可选,更新时可选) 3. API: 创建/更新支持 priority,列表支持 ?priority=high 筛选 4. 运行 alembic upgrade head 确认迁移成功

验证后端无误后:

第二轮(前端): @src/types/task.ts @src/components/TaskCard.tsx @src/app/projects/[id]/page.tsx 后端已加 priority 字段(high/medium/low)。前端联动: 1. types/task.ts 加 priority 字段 2. TaskCard 左上角显示优先级色块(红/黄/灰) 3. 创建任务弹窗加优先级下拉选择 4. 看板页顶部加优先级筛选按钮

为什么不能一轮全做?

  • 上下文太长 → AI 容易「忘记」前面的修改
  • 出错时无法定位是后端还是前端的问题
  • 你无法分步验证(后端改完先跑 API 测试,确认没问题再改前端)

💡 技巧:跨模块修改时,按「数据流方向」推进:数据库 → 后端模型 → 后端 API → 前端类型 → 前端组件。这样每一步的输入都是上一步已验证的输出。

四、迭代中的常见陷阱

陷阱 表现 应对
上下文溢出 AI 开始「忘记」之前的约定,重复生成已有代码 开新对话 + 贴摘要
过度重构 你让它加个字段,它把整个文件重写了 明确说「只改 X,不要动其他代码」
幻觉 API AI 调用了一个不存在的方法 跑代码验证,报错后贴错误让它修
依赖膨胀 AI 为一个小功能引入一个新库 审查 package.json,问「能用现有依赖实现吗?」
测试遗漏 改了功能但没更新测试 每轮结束追问「需要更新哪些测试?」

本节要点回顾

  1. 每轮一个功能:大功能拆成小步骤,每步一个对话回合,在小范围内工作
  2. 上下文管理:摘要接力 + 文件引用 + 规则文件兜底,三招保持连贯
  3. 版本锁定:在 Prompt 中明确框架版本和 API 风格,防止 AI 给出过时写法
  4. 依赖冲突:npm ls 查依赖树 → 调版本或换库 → 让 AI 基于正确信息重写
  5. 跨模块修改:按数据流方向分层推进(数据库→后端→前端),每层验证后再下一层
  6. 防过度重构:明确告诉 AI「只改 X」,审查每次输出的变更范围

功能在迭代中生长,Bug 也在迭代中冒出来。下一节讲 AI 辅助 Debug 的完整闭环:从报错到修复到验证。


发布者: 作者: 灏天文库 转发
评论区 (0)
U