Aioga
AI资讯 / 行业动态
返回 AI资讯

Mistral 复盘用 AI Agent 迁移 40000 行 Fortran 77 到 C++ 的经验

Mistral AI:News(网页)Aioga 编辑团队2026-09-09T18:59:11.000Z热度 72

Mistral 帮助一家欧洲能源运营商将 40000 行 Fortran 77 储层模拟器迁移到 C++,并复盘了方法与经验。

行业动态Mistral AI:News(网页)

今日 AI 情报摘要

Mistral 帮助一家欧洲能源运营商将 40000 行 Fortran 77 储层模拟器迁移到 C++,并复盘了方法与经验。

中文正文 · AI 翻译

构建、测试并运行AI代理和应用。

训练、对齐并评估定制的人工智能模型。

在终端、IDE 和后台编写代理代码。

前沿规模的培训和推理基础设施。

2a1ffaf3-f171-460b-be1b-fc734aa776aa
Mistral 复盘用 AI Agent 迁移 40000 行 Fortran 77 到 C++ 的经验

用AI代理现代化复杂遗留代码。

Mistral筹集30亿欧元,将主权开放权重人工智能打造为技术前沿

Mistral帮助一家欧洲能源运营商将4万条Fortran 77迁移到C++。了解其做法及后续经验教训。

遗留的科学代码库积累数十年,原作者离开后,代码中蕴含的知识变得难以恢复。此外,使用缺乏活跃开发生态系统的语言意味着错失在他人成果基础上构建的机会。Mistral帮助一家欧洲能源运营商将4万行Fortran 77迁移到C++,这是一个物理密集型的储量模拟器,没有测试套件,也没有集中文档。

将语法从一种语言翻译到另一种语言是一个基本已解决的任务。要求任何近期模型将一个非完全晦涩语言的片段翻译到另一种语言,通常在几次迭代后会收敛到可接受的结果。然而,将完整系统从过程式语言迁移到面向对象的C++,就需要架构重构,使这项任务变得非简单。

Fortran 77 于1977年被标准化,正如其名称所示,其代码直接反映了这些约束:无模块、无命名空间、无结构类型。状态存在于COMMON块中——全局内存,在整个程序中共享。变量以首字母隐式类型,因此拼写错误的名称会无声地生成新变量,而不会引发编译器错误。

举一个简单但有说明意义的例子,看看以下一级泰勒展开的实现。输入和输出是 COMMON 块中的全局,IC 之所以是整数,仅因为它的名称以 I 和 N 之间的字母开头。变量名相当隐晦,因为它们的长度限制在 6 个字符。

在 C++ 中,可以利用显式类型,编写面向对象的代码,并返回一个值,而不是全局写入:

分散的 COMMON 数组变成了单一的 GasProperties 参数,并且网格循环被移到了调用者中,因此没有逐行对应可供检查,这就是验证迁移的难点所在。

这些结构上的差异,加上需要整合现代科学计算框架(如 PetSc),在开始迁移之前就提出了一些重要问题:

如何证明迁移后的代码库在数值上与遗留代码一致

如何将迁移拆分成可管理的阶段

如何最好地利用自主代理加速过程

在放开代理之前,我们需要一种方法证明两个代码库是一致的。在这里,“一致”意味着输出的数值相等——包括最终结果和由客户的油藏工程师标记的一组关键中间点。

允许导出 Fortran 代码库状态的子程序

用于将检查点加载到 C++ 中的测试框架

Skill.md:http://Skill.md 文件,用于引导代理正确使用它们

在迁移工作流程中,代理成功地对 Fortran 代码库进行了仪器化以转储状态快照,并使用 C++ 测试框架验证迁移模块的正确性。

首先构建这部分测试工具对项目来说是一个净正收益的投资:它使长时间运行的代理更安全,并且数值一致性是一个容易验证且有说服力的论据,能够表明一段代码已成功迁移。我们认为,这应该是任何代码现代化工作中最早采取的步骤之一。

下面的示例说明了这一点。我们首先在 Fortran 代码中插入一行以转储 RHOG 变量的值(此运行中为 42.71834),然后在测试迁移后的 C++ 模块时,将该值用作参考检查点。

项目的文档散布在旧的 PDF 文件和隐藏在 Fortran 代码中的注释中,而整个工作中最大的附带收益之一就是将这些文档整理并移到代码旁边。

幸运的是,像 Fortran 这样的过程式代码有一个方便的特性:整个程序可以绘制成一个单一的调用者-被调用者树。我们通过自定义解析器解析代码库生成了这棵树,然后使用 Vibe CLI:https://mistral.ai/products/vibe/ 派出了一百多个代理来进行文档记录。每个代理都可以通过文档库和 Mistral OCR:https://mistral.ai/solutions/document-ai/ 获取相关的 PDF 文档。

从树的叶节点开始向上,每个节点都会生成一个子代理来记录文档并向原始仓库提交 PR。一个以 cron 调度循环运行的审查代理会查找新创建的 PR,审查它们,并在必要时安排修复任务。

在第一次尝试中,我们赋予代理完全自治权:每个 Fortran 子程序对应一个代理,每个代理在一周内独立将其函数翻译为 C++。结果是功能可用的,但不能称之为代码现代化。COMMON 块变成了全局结构体,一对一映射。基于 GOTO 的控制流保持不变,并没有重构为循环或提前返回。它看起来像是用 C++ 语法重新打字的 Fortran,而不是现代化的代码。

在第二次尝试中,我们通过给代理提供结构而不仅仅是自治权来解决这个问题:在每个模块上,一名规划者、一名编码者、一名测试者和一名代码质量审查者共同工作。代码质量相较第一次尝试有了大幅提升。但源代码的复杂性最终还是让代理跟不上。他们会遇到一个 bug,尝试几次修复,然后停滞,没有人可以介入。

我们找到了中间方案:由人类操作一个由编码者、测试者和审查者代理组成的工作流程,逐模块迁移代码库。这保留了第二次尝试中的代码质量,同时增加了一个人类检查点,在代理遇到障碍时进行干预。下一节将详细介绍此工作流程。

在代码库记录完成并且对等测试框架建立后,剩下的有趣部分是调整在仍能输出可合并代码的情况下,可以赋予代理的自治程度。我们尝试了两种极端情况,从完全自主运行到密切监督的手动操作。下面的结构化工作流程就是我们针对该用例最终采用的方法。

与客户的油藏工程师合作时,我们使用呼叫者-被调用者树来识别独立模块——自包含的、可管理大小的子树(经验上,小于约 10,000 行 Fortran 代码)。每个模块都经过相同的工作流程:

生成目标 C++ 架构。

请与一名油藏工程师一起审阅。

经批准后,将其分解为任务队列。

针对每个任务运行实施子工作流程:计划 → 实施 → 测试 → 重复。

由人工审查生成的 PR 并请求修改,直到合并。

第一轮迭代涵盖了核心功能:从 300,000 行中实现了 40,000 行。Fortran 代码库是自包含且可运行的,这是一个有利的起点。依赖外部系统、缺乏可运行基线或包含未记录物理原理的迁移,将带来本文未讨论的额外挑战。

这个项目的三个经验教训应适用于任何大型遗留系统迁移。

在编写迁移代码之前,先构建对等测试工具——数值一致性是证明模块完成的最便宜、最有说服力的方法。

在依赖代理之前先整理文档,因为你无法迁移无人能读的代码。

在这个规模下,带有人类审查关卡的结构化工作流,比完全自动化或手工操作更有效。

Mistral 的应用 AI 团队是一群围绕 Mistral 模型和企业平台构建全栈解决方案的工程师。我们提供高风险、领域特定的解决方案,以解决一些全球最难的问题。

如果这是你想参与的工作类型,请申请加入我们的团队:https://mistral.ai/careers/。

情报判断

Aioga 编辑摘要

Mistral AI称,其帮助一家欧洲能源运营商将一套4万行Fortran 77储层模拟器迁移至C++,并公开复盘了迁移方法与经验。

背景分析

该模拟器面向物理密集型储层模拟,原有代码积累多年,且缺少测试套件和集中式文档。原作者离开后,代码中的知识更难恢复。

Aioga 观点

Aioga 判断:该案例的核心不只是语言迁移,也在于处理缺少测试与文档的遗留科学代码;但现有材料不足以证明其适用于所有类似项目。

影响与后续

可能影响:AI代理参与遗留代码现代化时,需要关注测试、文档和领域知识恢复;单一案例不代表迁移质量、成本或效率已得到普遍验证。 后续观察:应关注Mistral披露的具体代理流程、验证方法和迁移结果,以及项目中如何处理物理模型一致性与缺少测试套件的问题。

来源与版权说明

本页正文由公开来源页面提取并按原有信息整理,同时保留来源、发布时间和原文入口。版权归原作者及来源网站所有,请通过原文链接核验和阅读来源版本。

抓取通道: 摘要聚合 · 原始域名: mistral.ai

来源: Mistral AI:News(网页)

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-09-09T18:59:11.000Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

统一接入主流 AI 模型 API,为开发、测试与生产环境提供稳定调用入口。

立即访问 api.w173.com
AIOGA SHARE POSTER

分享这篇 AI 情报

Mistral 帮助一家欧洲能源运营商将 40000 行 Fortran 77 储层模拟器迁移到 C++,并复盘了方法与经验。

Mistral AI:News(网页)2026-09-09T18:59:11.000Z
扫码打开文章详情扫码直达文章详情

Aioga 自动聚合全球 AI 动态,并保留来源信息用于核验与引用。