重构时必须嵌入持续验证:先锁定基线(测试覆盖率≥85%、3个核心路径手动验证并存档),再用AionClaw按模块或函数增量替换,严格检查migration.log中的unsafe标记,最后通过新测试集、DOM快照比对和真实数据回归三重验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用AionClaw重构代码时,最怕改着改着原有功能就失效了——按钮点不动、接口返回空、定时任务突然不触发,问题往往在合并后才暴露。必须把验证动作嵌进每一步重构里,而不是等全部改完再测试。
重构前锁定行为基线
打开项目根目录,运行 npm run test:unit -- --coverage 或对应测试命令,确保当前测试覆盖率 ≥85% 且全部通过。若覆盖率不足,先补关键路径的单元测试,尤其覆盖主流程的输入输出边界条件。
手动验证3个核心用户路径:登录→进入仪表盘→点击导出按钮;创建新任务→设置截止时间→保存;API调用 /v1/reports 返回 status=200 且 data 数组非空。录屏或截图存档,这是你后续比对的黄金标准。
用AionClaw做增量替换
方法一:按模块隔离替换
进入 src/modules/report/ 目录 → 执行 aionclaw migrate --module report --target v2 → 等待生成 report.v2.ts 和迁移报告 report.migration.log。不要直接删旧文件,先保留 report.ts 原样不动。
方法二:函数级渐进升级
打开 src/utils/dateFormatter.ts → 找到 formatToISO() 函数 → 在其上方添加注释 // @aionclaw: migrate v2.1 → 运行 aionclaw migrate --function formatToISO。工具会自动生成新函数 formatToISO_v2() 并在调用处插入兼容逻辑:formatToISO(input) || formatToISO_v2(input)。
【必须检查 migration.log 中所有 marked-as-unsafe 的行】——这些是AionClaw无法自动推断类型或副作用的地方,比如涉及 localStorage 写入、全局事件监听、DOM 直接操作,需人工逐行核对并补测试用例。
验证环节不可跳过
第一步:跑通迁移后的新测试集
执行 npm run test:unit -- src/modules/report/v2/,确认新增模块测试全部通过。若失败,立即回退到上一个 git commit,别试图“先修完再说”。
第二步:对比快照差异
在原功能页面(如报表导出页)打开 Chrome DevTools → 切换到 Elements 面板 → 右键 body → “Copy outerHTML” → 保存为 before.html;完成AionClaw替换并刷新后,同样操作保存为 after.html;用 diff 工具比对二者,重点关注 class 名、data-* 属性、button disabled 状态、表单 name 字段是否突变。
第三步:真实数据回归验证
从生产环境脱敏导出10条典型记录(含空值、特殊字符、超长文本),写入本地测试数据库 → 启动 dev server → 手动走一遍导出流程 → 核对生成 CSV 文件的列顺序、编码(必须是 UTF-8 BOM)、数值精度(小数点后两位不能变成三位)。


















