因此,在实际项目中如何运用 MiMo Code 完成库之间的转换?以下几个关键环节值得深入掌握。
明确转换目标,选对启动模式
不同的转换场景需要启动不同的 Agent 模式,选择错误将导致转换效果悬殊。
- Build 模式:适用于最常见的场景——已知目标库,需要改造现有代码。例如,将项目中的 Axios 统一替换为 Fetch 并添加自定义封装。操作非常简单:直接运行
mimo进入默认的 Build 模式,然后使用/convert axios → fetch这类指令触发转换。该模式不会过多询问,直接开始执行。 - Plan 模式:适合技术评估或选型阶段,只输出方案而不修改代码。按下 Tab 切换到 Plan 模式后,输入“分析从 React Router v5 升级到 v6 的路由重构要点”,它会生成一份影响范围分析、风险点清单以及关键 API 映射表,不修改任何一行代码。简单来说,就是先规划再动手。
- Compose 模式:用于端到端交付的全面转换。例如,将 Vue 2 + Vuex 项目完整迁移到 Vue 3 + Pinia,先按 Tab 切换到 Compose 模式,再输入“将 src/ 下 Vue 2 组件和 store 迁移为 Vue 3 Composition API + Pinia”,系统会自动完成需求拆解、API 对齐、文件重写、测试补全以及 diff 审查,几乎是一条龙服务。
提供足够扎实的上下文
MiMo Code 并不依赖猜测,而是主动扫描项目关键文件:package.json(识别当前库版本和依赖关系)、tsconfig.json / babel.config.js(锁定构建约束)、已有测试文件(反推接口行为)。此外,你还需要手动补充内容——强烈建议创建一个 CONVERT.md 文件,写明你的转换原则。例如:“保留所有副作用函数签名”、“Vuex action 必须转为 useStore() 中的 setup 函数”,写得越清晰,转换执行越准确。
如果项目结构较为复杂,例如微前端中有多个子应用共用一套工具链,建议在根目录先运行 mimo /scan,让它生成一份 ARCHITECTURE_SUMMARY.md。然后基于这份摘要发起转换指令,你会发现准确率明显提升。
利用记忆系统,避免重复踩坑
跨库转换过程中难免反复试错。比如,你曾将 Lodash 的 _.debounce 转换为原生 setTimeout,结果发现防抖逻辑失效——这种错误只需要犯一次。MiMo Code 的 SQLite 记忆系统会自动帮你记录:
- 你否决过的方案(例如“reject: 用 requestIdleCallback 替代 debounce”)
- 已验证通过的等效映射(例如“lodash.debounce ↔ (fn, ms) => { let t; return () => { clearTimeout(t); t = setTimeout(fn, ms); } }”)
- 项目特有的硬性约束(例如“本项目禁止使用 Promise.allSettled”)
下次处理类似转换时,它会主动引用这些历史记忆,跳过已被证伪的路径。你还可以手动运行 /dream 让它定期归档经验,将零散的试错沉淀为可复用的转换规则,越用越顺手。
接管关键环节,不交出控制权
自动化不等于全自动。MiMo Code 在关键节点会主动暂停并等待你的确认:
- 当检测到模糊接口时(例如某个自定义 Hook 同时被 Vue 和 React 文件调用),它会列出 2–3 种兼容方案供你选择,避免出现意外。
- 修改
package.json之前,会生成详细的 diff 预览,并标注潜在的 breaking change,让你了解清楚后再确认。 - 新生成的测试用例完成后,它会自动运行
npm test并高亮失败项,你可以使用/fix test让它针对性修正,直到全部通过。
最关键的是,所有操作都通过 Git 分支隔离执行(默认创建 mimo-convert-xxx 分支),你随时可以 git checkout main 回到起点,完全无需担忧。这正是自动化的核心——将控制权牢牢握在自己手中。
