当前位置: 首页 > news >正文

研究 COBOL 代码迁移:把 AI 锁进笼子,能否突破迁移瓶颈?

研究团队提出把 AI 锁进笼子

一批研究 COBOL 代码迁移的工程师发表论文,提出把 AI 锁进笼子,论文标题为《Agentic Method for Deterministic Validation of Legacy Code Migration》。他们设计了一个叫 Locksmith Loop 的系统,旨在把 AI 限制在一个确定性的框架里,让它只做擅长的事。

三个模块,AI 只碰一个

Locksmith Loop 的架构分三层。第一层是 Migrator,COBOL 源码进来,Java 目标代码出去,这一步不用 LLM,用的是确定性 AST 转换器,每次跑结果一样。第二层是 Witness Search,这是 AI 唯一出场的地方,LLM 不断构造输入用例,企图穿透程序的所有分支,直到覆盖率推不动为止。第三层是 Oracle,COBOL 原版和 Java 迁移版同时跑同一个输入,输出必须逐位一致,任何偏差都视为迁移失败,回退修正。这样设计是因为每一步都有明确的失败模式,Migrator 和 Oracle 是确定性的,Witness Search 是唯一非确定性的环节,但它的失败模式可控,Locksmith 的设计哲学是把 AI 放在它失败后果最轻的地方。

当 AI 推不动了

Witness Search 不是万能的,跑到某个分支边界时可能会卡住,论文里管这种情况叫 Locked Paragraph。系统不指望 AI 能打开所有锁,当 AI 推不动时,分析器会标记这个 Locked Paragraph,然后系统继续推进其他分支,最终覆盖率取决于 AI 能找到多少“钥匙”。论文报告了三个测试案例的结果,两个开源 COBOL 程序达到了“几乎完全覆盖”,生产级程序达到了 91.90%的分支覆盖率,剩下的 8.1%对应着最复杂的业务逻辑、最深的嵌套条件、最古老的 corner case。

连 bug 一起搬,是设计目标

架构还有一个反直觉的设计,迁移后的 Java 必须和原 COBOL 行为完全一致,包括 bug。aldente0630 在 Hacker News 上澄清,保留 bug 是明确的设计目标,这叫 bug - for - bug compatibility,因为那些 bug 已经在生产环境跑了二十年,下游系统依赖它们的行为。但 bug - for - bug 有一个前提,Oracle 对比的是行为,不是代码,Java 程序员看到保留 bug 行为的代码时,没有任何上下文。

4KLOC 和 230KLOC

Hacker News 上的评论质疑了论文的规模。pacaro 给出真实世界的尺度,IRS 一家就有大约 160 个 COBOL 程序,平均每个 23 万行代码。fock 试过,他们用的代码里内嵌汇编,跨十几个文件、5 万行,测试的所有 LLM 完全不知道预处理器是什么。这指向了 Locksmith Loop 的真正边界,AST 转换器不认识源码里的预处理器宏、内嵌汇编等,会直接失败。Zenst 补充了精度问题,金融系统的 COBOL 程序通常使用 packed - decimal,其精度和舍入行为与 `BigDecimal` 并不完全等价,修复差异意味着在 Migrator 里写越来越复杂的规则。Locksmith Loop 的确定性架构方向是对的,但工程复杂度会随系统规模非线性增长。

COBOL - in - Java

dragonwriter 在 HN 上点出架构最深层的矛盾,唯一现实的低错误率方案是确定性转译,但得到的是 COBOL - in - Java,跑起来正确,但维护起来是噩梦。确定性转换的产物语法是 Java,灵魂是 COBOL,人类程序员做迁移时会重新理解系统意图,用新语言的惯用方式重新表达,这引入了风险,但能产出可维护代码,Migrator 选择了零风险路径,但付出了可维护性的代价,把没人懂的老系统变成了没人懂的新系统。

论文没说的东西

Locksmith Loop 的架构设计是对的,把 AI 限制在测试生成,把翻译和验证留给确定性代码,可能是 AI 在严肃软件工程中唯一可靠的使用方式。但它回避了一个更大的问题,迁移 COBOL 系统的真正瓶颈是理解这个系统在做什么。论文假设 Oracle 是给定的,但在真实场景里,COBOL 系统可能跑不起来,Oracle 本身就是一个需要重建的东西。这不是 Locksmith Loop 的错,这是一个验证方法论文,不是迁移工程论文。

http://www.jsqmd.com/news/1325277/

相关文章:

  • 从零开始复现大模型:5步简化框架
  • 火狐浏览器历史版本官方下载指南:FTP源、版本锁定与安全降级
  • 炉石传说终极模改插件:50+功能让你的游戏体验全面升级
  • Unity资产提取终极指南:AssetRipper深度配置与实战避坑
  • 读半导体简史16IBM
  • LVGL动态加载中文字体:FreeType引擎集成与嵌入式GUI优化实践
  • Forza Mods AIO:地平线4/5终极修改器,开启你的个性化竞速之旅
  • Python+Django构建高效网吧会员管理系统实战
  • 汉全商城A6shop是什么?高端商城定制系统一文讲清
  • 酷果汇谷物肽饮无乳糖,乳糖不耐受人群能喝吗 - 中媒介
  • 基于LangChain与本地大模型,打造个人智能助手:从意图理解到工具调用
  • 知网AIGC检测升级与学术论文降AI处理技术
  • Excel工作表保护:实现部分区域可编辑的完整指南
  • MySQL主从复制--gtid模式
  • ArkTS 基础语法入门:变量声明与数据类型全解析
  • 10款AI工具助力本科生高效科研与论文写作
  • 5个关键步骤:电脑完美运行Switch游戏终极指南
  • SpringBoot+Vue校园招聘平台开发实践
  • Java Set集合核心原理与实战应用详解
  • Unity3D中LitJson-0.16.0集合序列化实战:从原理到库存系统实现
  • 为AI助手构建持久化记忆:基于COS Vectors与mem0的实战方案
  • 铝塑板批量采购哪家推荐? - 中媒介
  • AI Agent安全边界设计:OpenClaw框架中的权限控制与执行隔离实践
  • 北美AI数据中心电力瓶颈凸显,SOFC产业链机会几何?产能爬坡与国内企业布局成关键
  • STM32三ADC同步规则采样:原理、配置与实战避坑指南
  • 应届生求职必备:塔塔网申解决网申 3 大痛点(效率 + 隐私 + 售后)
  • 图片素材批量规范化处理,多款批量图像处理工具能力客观记录
  • Unity-PDFRenderer插件深度解析:从原理到实战的PDF集成指南
  • OpenClaw本地知识库优化:从向量检索到精准调用的RAG实战指南
  • 5步深度诊断与修复:Reset Windows Update Tool专业指南