跳到主内容
重构遗留代码cursorclaude-code工作流

用 AI 重构遗留代码:从 800 行到 3 个模块

用 AI 重构遗留代码 2026 实战:重构前体检(圈复杂度 / 测试覆盖 / 依赖分析)、让 AI 先出重构计划再动手、分步骤提示词模板(拆分 / 提取 hook / 加测试 / 验证)、每步回滚策略,以及一个约 90 分钟的真实案例。

发布 2026-08-02更新 2026-09-28核实 2026-09-28

一句话结论

AI 重构遗留代码的成败,不取决于用 Cursor 还是 Claude Code,而取决于流程:先体检 → 让 AI 出重构计划 → 小步提交 → 每步可回滚。最大的坑是「让 AI 一口气大改 800 行」,结果 diff 没法 review、出错没法定位。把大任务拆成 5-10 个可验证的小步,成功率从约 50% 拉到 90%+。

重构前体检

动手前先用工具摸清代码债,别盲目相信 AI 的「我理解了」:

检查项工具 / 命令目的
圈复杂度npm run lint(开 complexity 规则)/ sonarlint找出「该拆」的函数
测试覆盖vitest --coverage / pytest --cov确认有没有安全网
依赖分析madge --circular / import 可视化找循环依赖、死代码
类型健康tsc --noEmit / mypy确认类型兜底

AI 之家 观点:没有测试覆盖的遗留代码,先让 AI 补测试再重构。补测试是重构的「安全网」——否则你永远不知道 AI 改没改坏逻辑。补测试的方法见 用 AI 写单元测试。

让 AI 先出「重构计划」再动手

不要直接说「重构这个文件」。先要计划:

分析 src/legacy/orderService.js(约 800 行),输出重构计划:
1. 识别职责(按业务拆成几个模块)
2. 标出高风险点(状态共享 / 副作用 / 隐式依赖)
3. 给出目标目录结构
4. 列出每步的验证方式(测试 / 手动)
不要改任何代码,只给计划。

AI 给计划后,你 review 风险点,确认无误再进入执行阶段。这一步能挡掉 80% 的「重构改坏逻辑」事故。

分步骤提示词模板

第 1 步:拆分巨型函数

把 processOrder() 按职责拆成 validateOrder / calcPrice / persistOrder 三个纯函数。
保持对外接口不变(仍导出 processOrder)。每拆一个函数补一个单元测试。

第 2 步:提取重复逻辑为 hook / util

扫描 src/ 里重复的日期格式化 / 错误处理代码,提取到 src/utils/。
替换所有调用点,确保行为一致。

第 3 步:加测试

按 用 AI 写单元测试 的三段式提示词补测试。

第 4 步:验证

跑 pnpm test + pnpm build,确认全绿。对比改动前后行为无差异。

每步回滚策略

铁律:每完成一个子目标就 commit。 任何一步翻车,git reset --hard <上一个干净 commit> 即可。

git add -A && git commit -m "refactor: split processOrder into 3 fns"
# 下一步前再 commit,绝不攒一大坨

Claude Code 用户可用 /rewind 回滚到任意 checkpoint(代码 + 对话)。Cursor 用户每步 Accept 前看 diff 预览,别无脑 Accept All。

AI 之家 观点:git 是重构的「无限后悔药」。我们规定「任何单步 diff 不超过 200 行、必须能单独 revert」,AI 改得再顺也不能破这个规矩。

真实案例:90 分钟拆 800 行

一个 Express 的 orderService.js(800 行、0 测试、3 个循环依赖):

时间动作结果
0-15 min体检 + 让 AI 出计划拆成 3 模块 + 标 2 个高风险点
15-35 min拆函数 + 补测试12 个单测,全绿
35-55 min提取 utils + 去重复删 120 行重复代码
55-75 min去循环依赖 + 类型标注tsc 通过
75-90 min全量验证 + commit测试 + build 全绿

关键:中间第 2 步 AI 把一个副作用写错(改了全局状态),因为每步都 commit,直接 git reset 回到上一步,改提示词重跑,没影响其他进度。

常见失败模式与对策

失败模式表现对策
大改一次性提交diff 没法 review拆成 <200 行小步
改了测试让它「通过」假绿测试先写好再改实现
破坏对外接口调用方报错第 1 步明确「接口不变」
引入新依赖包体积膨胀禁忌清单写「不引入未声明依赖」

什么时候不该用 AI 重构

这套流程不是万能的。以下四类场景下,让 AI 主导重构的期望收益低于风险,建议改为人主导、AI 辅助:

场景为什么不适合更合适的用法
没有测试覆盖的核心链路没有「绿」作为判定基准,AI 改完你无法验证没坏先补** characterization test**(固化当前行为的测试),再谈重构
并发 / 时序相关代码行为依赖调度顺序,AI 看到的静态代码不足以推断正确性让人写清不变量,AI 只做提取与改名这类语义保持的改动
跨服务契约变更改动半径超出单个仓库,AI 看不到调用方先做契约评审,把「接口不变」写成硬约束再交给 AI
性能敏感的热路径AI 的优化常以可读性为目标,可能引入额外分配或拷贝让人给出优化目标与基准,AI 只做结构整理

判断标准其实只有一条:你能不能在改完之后,用一句可执行的话判定「没坏」。能,就可以交给 AI 推进;不能,就先补判定手段。

让 AI 重构的六个纪律

前面各节讲的是步骤,这里收敛成可以贴在团队 wiki 上的六条:

  1. 先要计划,再要代码。 AI 直接吐 diff 时你失去了拒绝的机会——计划阶段拒绝的成本是零,代码阶段拒绝的成本是已经花掉的时间。
  2. 一步一个 commit,且每个 commit 都能独立编译 / 通过测试。 「可回滚」的粒度就是 commit 的粒度。
  3. 测试先于实现。 让 AI 改了测试让它通过的「假绿」,是重构里最贵的失败——它把质量 gate 本身污染了。
  4. 明确写出「不许做什么」。 不引入新依赖、不改对外接口、不动公共工具函数。负面清单比正面描述更有效,因为模型的默认倾向是「顺手改进」。
  5. 每步之后人读一遍 diff。 不用逐行,但要看改动范围是否符合预期——本来说改 3 个文件结果动了 11 个,这就是信号。
  6. 保留一次完整回滚点。 开始重构前打一个 tag 或分支。这条听起来多余,直到你真的需要它。

更新说明

  • 2026-09-28:新增「什么时候不该用 AI 重构」与「让 AI 重构的六个纪律」两节;正文步骤、提示词模板与案例未作改动。
  • 本文的提示词模板基于 Cursor 与 Claude Code 的通用能力编写,未针对特定版本做一手实测;两个工具的版本节奏较快,斜杠命令与配置项请以各自官方文档为准。

相关阅读

来源说明:本文基于 Cursor / Claude Code 官方文档及 AI 之家 编辑部重构实践归纳。命令与功能以最新官方文档为准。

相关对比

Aider vs Claude Code:终端 AI 编程双雄怎么选

Aider vs Claude Code 2026 选型对比:开源 BYOK 多模型 vs Anthropic 订阅长任务 Agent,从编程能力、多模型支持、价格、Git 集成、国内可用性和适合人群判断,帮你选对终端 AI 编程工具。

Cursor vs Aider:GUI IDE 还是 CLI?2026 对比

Cursor vs Aider 2026 选型对比:GUI IDE vs Git 原生 CLI,从 Composer vs Architect 双模型、Tab 补全、多模型 BYOK、价格计费、开源与否和适合人群判断,帮开发者选对。Cursor 是闭源 VS Code fork 月费 $20,Aider 是开源 Apache-2.0 CLI 自带 API key。

Augment Code vs Cursor:企业 AI 编程怎么选?Context Engine vs AI IDE 对比

Augment Code vs Cursor 2026 选型对比:Context Engine 全仓索引的企业 AI 平台 vs SpaceX 收购的 AI IDE 天花板,从形态、Context 覆盖、长任务、价格、合规、中文支持和适合人群 8 个维度判断,帮你选对企业 AI 编程工具。

Claude Code vs Cline:CLI AI Agent 怎么选?2026 对比

Claude Code vs Cline 2026 选型对比:Anthropic 官方闭源 CLI Agent vs Apache-2.0 开源 VS Code 插件。从模型绑定、工作流、MCP 支持、价格、隐私和适合人群 6 个维度帮你选对 CLI AI 编程工具。

Claude Code vs Codex CLI:终端 AI Agent 双雄对比

Claude Code vs Codex CLI 2026 选型对比:Anthropic 与 OpenAI 两大官方终端 Agent 的模型、长任务、MCP 生态、Windows 支持、订阅打包价格和国内可用性全方位对比,帮你判断该用哪个终端 AI Agent,以及能不能两个一起用。

Claude Code vs Crush:Anthropic 官方 vs 多模型 TUI(2026 实测选型)

Claude Code vs Crush 2026 选型对比:Anthropic 官方 CLI Agent(Claude only + 长任务最稳 + MCP 一等公民)vs Charmbracelet 开源 TUI Agent(多模型 mid-session 切换 + LSP + FSL-1.1-MIT)。从模型、长任务、生态、价格、国内可用性帮你选对终端 AI 编程工具。

相关评测