Mistral在9月9日披露一个遗留代码现代化案例:为欧洲能源运营商处理约4万行Fortran 77并迁移到C++。这类工作远不止语法翻译,因为旧系统常依赖COMMON全局内存、隐式类型、文件格式和多年积累的业务约定。AI Agent可以加速理解、测试和转换,但只有建立行为基线、模块边界和逐步替换流程,才能避免生成一套看似现代却结果错误的新系统。
先冻结旧系统行为
收集生产输入、输出、边界案例、历史故障和性能指标,为关键计算建立黄金样本。旧代码可能包含不合理但被下游依赖的行为,迁移前先记录而不是立即清理。没有可复算结果时,Agent无法判断重构是否改变业务含义。
构建依赖和数据地图
让Agent辅助识别调用关系、COMMON块、隐式变量、文件布局和外部库,再由熟悉业务的工程师确认。按计算模块、输入输出和副作用划分迁移单元。对无法解释的变量保留追踪任务,不允许模型根据名称猜测物理意义。
先测试再转换
为每个模块建立单元、属性、回归和数值容差测试。浮点算法不能只比较文本完全相等,需要由领域专家确定误差范围和守恒条件。AI生成测试后检查是否只是复述当前实现,增加独立计算、真实样本和异常输入。
采用双轨运行和渐进替换
新旧实现同时处理同一批输入,自动比较结果、耗时和资源。先替换低风险模块,再逐步扩大流量。任何差异都保留输入、调用轨迹和编译环境,定位后再继续,不用大量条件分支掩盖不一致。
让Agent受代码审查约束
每个Agent只处理明确目录和任务,提交小批次变更并说明依据。编译、静态分析、测试和安全扫描必须自动执行。架构变化由人批准,模型不能自行重写接口或删除看似无用的兼容逻辑。最终文档要能让下一位工程师不依赖聊天记录继续维护。
进一步实施建议
实际项目可先选一个一千行左右、输入输出清晰的计算模块做两周试点。第一周只建立文档和测试,第二周迁移并双轨运行。用缺陷数、人工审查时间、测试覆盖、性能和解释完整度评估,不只统计生成代码行数。若业务专家无法确认黄金样本,应暂停大规模迁移,优先恢复知识,而不是让AI替组织做不可验证的决定。
落地检查清单
- 迁移前保存黄金输入输出和业务约束。
- 数值结果使用领域认可的容差验收。
- 新旧系统双轨运行并记录差异。
- Agent提交小变更且必须人工审查。