Vue2 → React 全自动迁移流水线 · 11 Agent 协同 · 端到端 · 行为等价验证
page-logic.json 是整个流水线的枢纽,由 Extract Logic Agent 生成,被后续所有 Agent 消费。它将 Vue2 的运行时语义转换为与框架无关的结构化描述,彻底解耦「解析阶段」与「生成阶段」,支持断点续跑与局部重试。
{
"meta": {
"sourcePath": "src/views/OrderList.vue",
"componentName": "OrderList"
},
"state": [
{ "name": "list", "type": "Order[]", "initial": "[]" },
{ "name": "loading", "type": "boolean", "initial": "false" },
{ "name": "pagination", "type": "Pagination","initial": "{}" }
],
"apis": [
{
"name": "fetchOrderList",
"method": "GET",
"url": "/api/order/list",
"params": ["pageNo", "pageSize", "status"],
"onSuccess": "list = data.list; pagination = data.page",
"onError": "message.error(msg)"
}
],
"lifecycle": {
"mounted": ["fetchOrderList"]
},
"events": [
{
"name": "handlePageChange",
"params": ["page"],
"body": "pagination.current = page; fetchOrderList()"
}
],
"computed": [
{ "name": "isEmpty", "deps": ["list"], "expr": "list.length === 0" }
]
}
React 组件只负责 JSX 渲染,通过 props 接收数据,通过 callback 触发事件,不直接调用 API,不持有业务状态。
Zustand store 持有页面状态,action 封装业务逻辑,selector 封装派生数据。UI 层通过 hook 订阅,与渲染解耦。
所有 HTTP 请求集中在 api 层,包含请求参数类型、响应类型、错误处理。model 层通过 import 调用,不直接 fetch。
Parse / Extract / Validate — 只读源文件,输出 page-logic.json,不接触目标框架代码
Types / Store / API — 以 page-logic.json 为唯一输入,生成框架无关的逻辑层代码
Gen UI — 以 template AST + page-logic.json 双输入,生成 React 组件,只引用逻辑层 hook
Tests / Review — 生成测试、执行验证、综合评分,决定是否触发回退重试
Fix Lint — 独立处理 ESLint / TypeScript 编译错误,不修改业务逻辑
Equivalence — 驱动旧/新页面执行相同操作序列,捕获 API 调用差异并评分
每个 Agent 拥有独立的 CLAUDE.md 上下文文件,只加载当前步骤所需的信息,避免长上下文导致的注意力漂移。Agent 间通过文件系统(page-logic.json、生成产物)传递数据,不共享内存状态。