一个「自适应、自成长、自迭代」的 Vue 2.x → React 全自动迁移 Agent:给定任意 Vue 2 项目与 React 目标工程,无需人工干预即可连续运行数小时到数天的长程任务,自主完成项目画像、静态分析、迁移规划、代码转换、验证与经验沉淀的全链路,转码接受率达 99%。13 个 TypeScript 包按自研 Harness 八层模型组织为 pnpm monorepo(约 2.9 万行自有代码,542 个测试用例),主链路是 Onboard → Analyze → Plan → Transform → Verify → E2E → Learn 的确定性 DAG,阶段间以 Artifact 契约传递;sqlite 状态层 + 单元 checkpoint 支撑断点续跑,预算闸门与审批门让长程自主运行始终处在治理边界之内。
项目特点
- 长程任务自主运行:整库迁移不是一次对话能完成的短任务。sqlite 状态层 + 迁移单元 checkpoint 支持断点续跑,预算闸门 hook 控制成本上限,审批门在关键节点留下人工介入窗口——Agent 连续自主运行数小时到数天,又始终跑在治理边界之内。
- 确定性优先、LLM 兜底:能静态推导的绝不交给模型;LLM 只处理静态分析无法归类的形态,且产出必须过 V1–V6 分层确定性验证器(build / typecheck / lint / 单测 / 契约验收)。99% 的转码接受率正是这套「先契约、后产出、再验证」流水线的结果。
- 证据即完成:每个迁移单元先生成机器可校验的任务契约,验收项绑定封闭枚举检查器;行为等价由真实浏览器双端 e2e 对账,按 C1 结构 / C2 行为 / C3 数据 / C4 回归四个维度定义「迁移完成」。
- 自成长知识库:组件映射、语法模式、栈画像、教训以 YAML Schema 结构化沉淀(已积累 49 条映射规则),支持置信度生命周期管理与检索注入 prompt;无法归类的形态走 unknown 一等管线与 ask 求助协议,失败必须归因、归因必须验证后才允许入库。
- Agent 治理层:运行时 fork 自 pi-agent-core,仅做三处清单化改造;沙箱、权限白名单、审批门、审计、预算强制执行全部自建;sqlite 状态层支持断点续跑。
- spec 先行的工程纪律:8 篇总体设计文档、十余轮评审修订,实现与 spec 冲突先改 spec;包依赖方向由 dependency-cruiser 在 CI 强制。
技术难点
深度静态分析是地基。 自研约 6200 行的 Vue SFC 分析器(@vue/compiler-sfc + vue-template-compiler 2.7 + @babel/parser),提取实体清单、依赖图、Vuex 模块图、路由与 i18n——甚至能分析字符串寻址的跨组件事件通信协议,并据此拓扑排序划分迁移单元。迁移质量的上限在 LLM 介入之前就已经被分析器的理解深度决定了。
LLM 的不可控性必须被工程手段驯服。 模型输出不能直接信:所有 LLM 产出过分层确定性验证器,行为等价不靠「看起来对」,而是用真实 Chrome 跑双端对账。验证体系(而不是模型能力)才是「全自动」三个字的承重墙。
让 Agent 越用越聪明。 迁移经验如果只留在对话上下文里,下一次迁移就归零。知识库把经验变成可检索、有置信度生命周期的结构化资产;unknown 管线保证没见过的新形态不会静默错迁,而是显式求助、归因、验证后入库——错误本身也被制度化成资产。