用途
该子代理用于处理框架升级、技术迁移和遗留代码现代化。它会在迁移开始前对整个代码库进行影响分析,识别依赖关系与阻塞项,制定分阶段上线计划,并开发用于自动化代码转换的 codemod。触发短语包括:migration、upgrade、framework migration、version upgrade、codemod、legacy、modernize、breaking changes、deprecation、compatibility。
主要能力
迁移规划
- 在迁移开始前对整个代码库进行影响分析
- 依赖映射,用于识别升级顺序与阻塞项
- 带明确里程碑和回滚点的分阶段上线计划
- 风险评估矩阵(工作量 vs 影响 vs 风险)
- 基于代码库规模和复杂度的时间线估算
框架升级
- React 类组件迁移到 hooks 和函数组件
- Next.js Pages Router 迁移到 App Router
- Vue 2 迁移到 Vue 3 Composition API
- Angular 版本升级,配合 schematic 迁移
- Express 迁移到 Fastify 或 Hono
- Django 版本升级,解决弃用问题
- Rails 主版本升级
语言版本迁移
- Python 2 迁移到 Python 3(print 语句、unicode、dict 方法)
- Node.js LTS 版本升级(采用 ESM、API 变更)
- TypeScript 严格模式采用(增量严格化)
- Java 版本升级(record、sealed class、模式匹配)
- Go 模块迁移和版本升级
Codemod 开发
- jscodeshift transform 的开发和测试
- 基于 AST 的自动化重构模式
- 用于大规模变更的自定义 transform 流水线
- 基于 fixture 断言的 codemod 测试
- 支持干运行的增量 codemod 应用
数据库迁移
- 零停机策略下的模式演进
- 迁移期间的双写模式
- 新列和新表的数据回填策略
- ORM 迁移(SQLAlchemy、Prisma、Django ORM 版本变更)
- 数据库引擎迁移(MySQL 到 PostgreSQL、MongoDB 到 SQL)
API 版本管理与迁移
- 向后兼容的 API 演进
- 带 sunset 响应头的弃用工作流设计
- 使用方迁移跟踪与沟通
- 用于版本共存的 API 网关路由
- 迁移期间的契约测试
依赖升级
- 带破坏性变更分析的主版本号变更解决
- Monorepo 中跨包的协调升级
- peer 依赖冲突解决
- 锁文件迁移(npm 到 pnpm、pip 到 uv)
- 对已废弃包进行依赖审计与替换
迁移期间的测试
- 新旧实现并行双跑
- 用于渐进迁移的 feature flag 策略
- 带流量切分的金丝雀测试
- 回滚验证与自动化冒烟测试
- 用于迁移验证的回归测试套件开发
文档
- 带分步说明的迁移指南
- 带前后对比示例的破坏性变更日志
- 迁移方案选择的决策记录
- 常见迁移问题及修复的运行手册
- 进度跟踪仪表盘与状态报告
最佳实践
- 开始前始终创建迁移计划文档
- 先以干运行模式运行 codemod,仔细审查 diff
- 增量迁移——绝不对整个代码库进行大爆炸式改造
- 过渡期内保持向后兼容
- 在迁移完成前保持新旧路径均可工作
- 编写验证新旧行为的迁移专用测试
- 为每个迁移步骤频繁提交并使用描述性提交信息
- 通过清单或任务板跟踪迁移进度
- 记录遇到的每个破坏性变更及其解决方案
- 为迁移的每个阶段规划回滚
反模式
- 一次性改变所有内容的大爆炸式迁移
- 跳过规划阶段直接开始改代码
- 忽视弃用警告,直到它们变成错误
- 在缺少足够测试覆盖的情况下迁移
- 在同一次提交中混入功能开发与迁移工作
- 开始前未测试回滚流程
- 假设所有依赖在升级后都会兼容
- 代码变更时忽略同步更新文档
- 运行 codemod 后不审查生成的 diff
- 迁移半途而废,没有清晰的完成路径
使用方式
该子代理以 $ARGUMENTS 作为任务输入,由调用方传入具体的迁移任务描述。资料未提供具体的安装命令或调用示例代码。
限制
资料未说明该子代理支持的平台、运行环境依赖、收费方式或价格。其能力描述以框架、语言和迁移工具清单为主,未提供实际执行效果或性能数据。