首页 › use-cases › 别重写祖传代码:AI迁移实战账本

别重写祖传代码:AI迁移实战账本

导语: 每个团队都有一座"祖传代码"的山:Python 2 没升完、Java 8 卡了十年、jQuery 页面没人敢碰。海外一线公司已经摸索出一条"AI 驱动的大规模代码迁移"路线,最夸张的案例是亚马逊用 AI 升级了 3 万多个内部应用——本文把这条路拆成你可以直接抄的三步流水线,附工具清单、成本账本和踩坑清单。


一、先看一个大案例:亚马逊怎么用 AI 啃下 30000 个应用

据亚马逊 CEO Andy Jassy 2024 年 9 月公开披露(未经独立审计验证,数字以官方口径为准):内部用 Amazon Q Developer 的自动升级能力,把 30000 多个内部 Java 应用从 JDK 8/11 升级到 JDK 17,官方估算"节省了约 4500 个开发人年"。

这个数字你可以不信,但方法论值得细看。传统路径是什么?开个立项会、拉三个高级工程师、排六个月排期、改到一半线上出事故、项目烂尾。亚马逊的路径是:

  1. AI 扫描依赖树,找出所有用了已废弃 API 的调用点(这是最费人力的部分,纯体力活);
  2. AI 批量生成替换代码,不是整文件重写,而是精准的局部替换(比如把废弃的 Date 用法换成 java.time);
  3. 编译+测试跑一遍,失败的回炉重改,成功的直接提交 PR,人只做最后审核。

关键认知差在这里:海外团队已经不把 AI 迁移当"辅助写代码"了,而是当流水线——AI 干体力活,人干判断活。 国内大多数团队还停留在"让 ChatGPT 解释一下这段老代码"的阶段,差了整整一个工作流代际。

同样的玩法在 Java 生态里有个开源对应物:OpenRewrite(openrewrite.org),一组针对 Spring Boot、JUnit 4→5、JDK 升级的自动化重构配方(recipe),在 Maven/Gradle 里跑一条命令就能完成大部分机械修改。它证明了一件事:代码迁移里 70% 的改动是有模式可循的,而有模式的地方 AI 就能接管。

二、核心案例拆解:一个人 + AI,怎么迁移一个中型老项目

下面这条流水线是海外独立开发者和开源维护者反复验证过的组合拳,工具全是免费或低价的:

第 1 步:先建"安全网",再动代码(最重要的一步)

90% 的 AI 重构翻车,不是 AI 太笨,而是改完之后你根本不知道它有没有改坏。海外做法叫 Characterization Test(特征测试):

工具选择:Python 用 pytest --snapshot-review 配合 syrupy 快照库;JS/TS 用 Vitest 的 toMatchSnapshot()。这一步一天就能给核心模块铺完,成本几乎为零。

第 2 步:用 Aider 或 Claude Code 做"有地图"的修改

这一步的信息差在于别直接把代码贴进网页版聊天框。以开源工具 Aider(github.com/Aider-AI/aider,目前 40k+ Star)为例,它有两件网页版 AI 做不到的杀器:

实际操作节奏(这也是 Claude Code 最佳实践里反复强调的):

aider --model deepseek --map-tokens 2048
> /add src/legacy/orders.py
> 把所有回调风格的写法改成 async/await,保持函数签名不变
> /test

关键纪律:一次只让它改一个主题(比如"只处理数据库连接部分"),改完跑测试,通过再进下一个主题。让 AI 一口气"把整个项目现代化",是新手翻车的第一大原因。

第 3 步:机械改动交给 Codemod,别浪费 AI 额度

大批量、有确定模式的改动(重命名导出、换废弃 API、框架升级的破坏性变更),先用 Codemod(codemod.com,海外专门做代码迁移的平台,带社区 codemod 注册表)这类确定性工具扫一遍。确定性工具能搞定的,比 AI 便宜且 100% 可靠;AI 只接手剩下的 20% 疑难杂症。 这么分配预算,迁移成本能砍掉一半以上。

整条流水线长这样:

flowchart TD
    A[祖传代码库] --> B[Step 1: 铺特征测试<br/>Golden Master 快照]
    B --> C{扫描全库}
    C --> D[确定性 Codemod<br/>OpenRewrite / Codemod.com<br/>处理 70% 模式化改动]
    C --> E[AI 处理疑难 30%<br/>Aider repo-map / Claude Code<br/>小步提交]
    D --> F[编译 + 测试]
    E --> F
    F -->|通过| G[git commit 合入]
    F -->|失败| H[diff 定位 → 回滚或让 AI 重改]
    H --> E
    G --> I[下一批模块<br/>循环直到清零]

三、成本账本:这条流水线到底花多少钱

以一个 5 万行的中型项目为例(以下为估算,实际取决于测试覆盖率):

项目 传统外包/自研 AI 流水线
周期 3–6 个月,1–3 人 2–4 周,1 人
现金成本 数万到数十万人民币 工具费 $0–100/月(Aider 免费 + API 按量)
API 开销 — 全程 $20–80 量级(用 DeepSeek 可再降一个数量级)
主要风险 项目烂尾 测试没铺好就动手

一条实操省钱建议:Aider 这类 CLI 工具不绑定模型,接入 DeepSeek 等低价模型跑批量修改,把 Claude/GPT 级别的模型留给最后 10% 的疑难场景,混合调度比全家桶便宜得多。

四、信息差总结

维度 你以为的 海外实际在做的
AI 在迁移中的角色 辅助解释/补全代码 流水线上的主力工人,人只做审核
第一步 直接让 AI 改代码 先铺 Characterization Test 安全网
大批量改动 全部喂给大模型 确定性 Codemod 先扫,AI 只收尾
改动粒度 "帮我现代化整个项目" 一次一个主题,小步提交+测试门禁
成本结构 请人/自己耗时间 API 费用 + 少量人工判断,可量化

五、行动指南

  1. 今天:挑一个你最怕动的老模块,用 pytest/Vitest 给它铺一层快照测试(半天够用);
  2. 本周:pip install aider-chat,接一个低价模型,让它先做一次"只读分析"——列出全库的废弃 API 调用清单(不改代码,纯侦察);
  3. 下周:按"一次一个主题"的纪律开改,每批改动必须过测试才 commit;
  4. 进阶:Java 技术栈直接上 OpenRewrite 的官方 recipe,先跑 spring-boot 升级配方看看能白捡多少。

六、参考来源

  1. Aider — 开源 AI 结对编程 CLI:https://github.com/Aider-AI/aider
  2. Anthropic 官方 Claude Code 最佳实践(先测试后改动的纪律出处):https://www.anthropic.com/engineering/claude-code-best-practices
  3. OpenRewrite — 开源大规模自动化重构框架:https://openrewrite.org
  4. Codemod — 代码迁移平台与 codemod 市场:https://codemod.com
  5. Amazon Q Developer(Java 升级能力产品页):https://aws.amazon.com/q/developer/

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入