旧系统很大
一个真实、长期演化的 Delphi 桌面项目,不是教学示例。
BIG LEGACY把“一次不确定的 AI 转换”,重构成一条有边界、有证据、可停止、可复核的迁移生产线。
一个真实、长期演化的 Delphi 桌面项目,不是教学示例。
BIG LEGACY迁入已经二次开发过的 Spring Boot,必须服从现有框架。
EXISTING TARGET现有 Web 画面由人工对应,工具只负责后端业务逻辑。
BACKEND ONLY但 UI 事件与业务规则混在一起。
但不知道哪些由新框架接管。
但没有旧系统真实结果做基准。
但“看起来正确”不是验收证据。
怎么把 Delphi
翻译成 Java?
怎样证明旧业务行为
在新框架下仍然成立?
前端人工对应,不等于忽略 UI;UI 事件仍然是寻找业务入口的重要证据。
迁移决定已经人工批准
BOUNDARY启用 Case 已确认且旧侧基准存在
BASELINE写入文件全部属于计划与允许目录
TRACE旧新 Case 全部一致,新侧追加 Case 全部通过
PROOF分析建议、Case 草案、计划、代码候选
什么能继续,什么必须停止
每个阶段留下可复核产物
在用户机器上执行,不要求托管旧代码
Form / 事件 / 方法 / SQL
→保留 / 替换 / 废弃 / 新增
→一个业务分支,一个 Case
→记录真实输入与可观察结果
→层 → 任务 → Case → 允许目录
→受控写入、执行、修正
→一致 / 差异 / 未执行
KEEP保留纯业务规则旧新语义必须一致
REPLACE框架替换事件、DataModule、SQL实现改变,行为保留
RETIRE废弃Delphi Form / 控件前端人工对应
ADD新增目标框架强制能力仅新侧验收
MANUAL待决定证据不足的行为阻止后续流程
库存存在
订单未锁定saveOrder
total = 100returnValue
businessError
databaseChanges回滚测试数据
恢复独立状态Case 描述业务操作,不描述 Delphi 按钮坐标,也不绑定 Web DOM。
$ runner --case CASE-042.json
exitCode 0
returnValue true
businessError null
databaseChanges orders:1
baseline captured ✓layer-servicetask-save-orderCASE-042 / 043src/main/java/…保护目录优先
草案不能下流
写入前备份
超限即停
未执行不算通过
计划外写入拒绝
已有决定的旧侧业务节点
÷ 已识别业务节点已确认 Case 覆盖节点
÷ 要求迁移的业务节点结果一致的双侧 Case
÷ 已执行双侧 Case下游失败却被判成功
目标:0{ok:true, rows:1}{rows:1, ok:true}MATCHED{error:"LOCKED"}{error:"LOCKED"}MATCHED{total:80}{total:100}DIFFERENTtarget-only—NOT RUN提示词可编辑 · 结构化产物可查看 · 失败状态可展开 · 模拟与真实证据明确区分
状态机、产物、门禁、Runner、比较器,全部围绕迁移问题设计。
只有出现跨机器队列、海量并行、长期恢复、多专业 Agent 协作时再引入。
LangChain? AutoGen?
Semantic Kernel?当前以静态规则识别逻辑;特殊语法需要扩展。
工具能显示遗漏,但真实业务输入仍来自领域知识。
旧侧与新侧都需要稳定、可重复的执行入口。
业务等价之外,还有构建、迁移、代码评审与人工验收。
AI 负责提高速度;框架负责限制自由;Case 与真实执行负责决定是否成功。