论文

ORBIT:用于自主 C-to-Rust 转译的引导代理编排

ORBIT: Guided Agentic Orchestration for Autonomous C-to-Rust Transpilation

摘要

将遗留 C 代码大规模迁移到 Rust 为提高内存安全性提供了一条有希望的途径,但由于有限的上下文窗口和幻觉,基于 LLM 的 C 到 Rust 的翻译仍然具有挑战性。先前的方法主要是在偏向于小型代码库的小型程序或数据集上进行评估,对现实系统的可扩展性提供的了解有限。它们还依赖于静态上下文构建,这在存在复杂的跨模块依赖关系时会崩溃,并且通常需要手动干预。最近的 编码智能体 通过动态代码库导航和上下文管理提供了一个有前途的替代方案。然而,当开箱即用时,它们经常会产生表面上看起来正确的不完整翻译。我们提出了 ORBIT,一个用于项目级 C 到 Rust 转换的自主代理框架,它将动态上下文收集与依赖项引导的编排和迭代验证相结合。 ORBIT 构建一个依赖项感知的翻译图,生成 Rust 接口,将 C 函数映射到 Rust 对应项,并协调多个专用代理。我们在 CRUST-Bench 的 24 个程序上评估了 ORBIT,其中 91.7% 的程序超过 1,000 行代码。 ORBIT 在专家界面和自动生成界面设置中实现了 100% 的编译成功和 91.7% 的测试成功,大大优于 C2Rust 和 CRUST-Bench,同时将不安全的 Rust 代码块减少到几乎为零。我们进一步在 DARPA TRACTOR 基准测试中的挑战性案例中评估 ORBIT,相对于参与系统,它实现了具有竞争力的性能。