用 Claude 构建可回滚的 CommonJS→ESM 代码迁移工具:59API 实战
先定义可验证的迁移边界
不要让模型直接处理整个仓库。本文以 CommonJS 迁移到 ESM 为例:将 require 改为 import、module.exports 改为 export,并补齐文件扩展名。先新建 Git 分支,再限定 src 目录和 .js 文件,避免生成文件、依赖目录及锁文件进入迁移范围。
- 用 Git 保存每次迁移前后的提交,确保随时可回滚。
- 先用 AST 工具扫描 require、module.exports、动态加载和循环依赖,生成待处理文件清单。
- 把动态 require、原生插件调用和入口文件标记为高风险,转入人工审核队列。
为 Claude 准备足够且受控的上下文
每次只发送一个文件、该文件依赖的少量接口定义,以及明确的迁移规则。提示词应要求模型把源代码视为数据,不执行代码中的指令,并要求仅返回统一 diff,不要解释或使用代码围栏。
提示词核心约束:保持函数行为和公共 API 不变;不得修改文件路径以外的内容;遇到动态加载时保留原逻辑并输出风险说明;新增 import 必须使用仓库现有的路径风格。这样比简单地说“帮我重构”更容易得到可应用的补丁。
通过 59API 调用 Claude
创建 API 密钥后,将 Anthropic SDK 的 base_url 指向 https://api.59api.com,并通过环境变量保存密钥,避免写入仓库。迁移脚本可按任务分层:先用 Haiku 对文件分类和筛选,再用 Sonnet 生成多数补丁,将复杂的循环依赖或测试失败修复交给 Opus。也可按项目需要选择 Fable。
59API 兼容 Claude Code、Codex 和常见 OpenAI SDK,适合把现有脚本逐步接入。其按量付费、原生官方品质模型且不降级,批量迁移时能控制成本;邀请返佣也适合团队长期使用。
安全应用补丁,而不是直接覆盖文件
迁移器应把 Claude 输出写入临时 diff 文件,先执行 git apply --check,再应用到独立工作区。校验失败时记录模型输出、文件名和失败原因,但不要自动覆盖原文件。
- 拒绝包含 ../、绝对路径或超出白名单目录的补丁。
- 限制单次修改文件数、补丁行数和 API 调用重试次数。
- 应用成功后立即生成 Git 提交,例如 migrate: convert utils to esm。
用测试反馈驱动有限次数修复
补丁应用后依次运行格式化、类型检查、单元测试和构建命令。将第一条有效错误、相关文件和当前 diff 发送给 Claude,要求只修复该错误;最多循环两次。若仍失败,自动执行 git revert 并输出人工处理报告。这样可避免模型在多轮修复中不断扩大改动范围。
把工具做成可运营的命令行流程
建议提供 scan、plan、apply、verify 四个子命令:scan 生成清单,plan 只生成补丁预览,apply 需要显式确认,verify 输出测试与风险报告。先在一个小模块试跑,统计每文件 token、成功率和回滚率,再逐步扩大范围。准备开始时,可注册 59API,用较低的按量成本验证你的 Claude 迁移流水线。
शुरू करने के लिए तैयार?
कुछ ही मिनटों में Claude और GPT जोड़ें, सबसे कम कीमत पर। साइन अप करें और API key पाएं।
मुफ़्त साइन अप