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

【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for Repository-Aware Code Translation

assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608172531121.png

摘要

代码翻译在实际应用时的挑战:不完备的上下文理解,不灵活的prompt设计,不完备的错误修复方法。
设计RepoTransAgent,多智能体框架实现repository-aware code translation,
具体实现:将翻译任务分解为特定的子任务,包括context retrieval,dynamic prompt construction和iterative code refinement,每个过程使用专用的agent

一. Introduction

现有工作缺陷:

  • rule-based 系统难以处理复杂的语法结构和缺乏处理多重programming contexts的控制
  • 基于prompt方法过于简单和静态,难以处理动态多样化的repository contexts
    挑战:
  • 传统静态分析,包括call graphs和program dependency graphs,难以直接向LLM解释,同时引入了冗余和不相关信息
  • prompt设计难以处理动态和变化的repo context
  • 错误修复过度依赖于test case的执行,而不是提供可行动的guidance和comprehensive context
    RepoTransAgent,将repo-level的代码翻译转换为特定的子任务:检索语义近似的functions,收集相关的上下文信息,并且执行迭代的code generation和refinement
    Agent设计:
  • RAG Agent:基于检索从repo中识别与检索与source function语义相似的function
  • Context Agent:使用特殊tools增量式收集必要的上下文信息,关注于code translation最重要的相关components
  • Refine Agent:基于source function,target function signature和RAG,Context Agent检索到的comprehensive information完成翻译过程,同时执行test cases,收集执行的feedback进行反思生成,生成targeted suggestions
    动态和可适应的prompting模板:
    静态组件:包括Goals,Guidelines和Examples,明确目标任务,基本原则和工作流
    动态组件:涵盖Gathered Context,Input和Last Command,使得智能体根据具体输入和之前上下文适应不同的工具

评测:
基于6个popular open-source projects收集数百个Java-C# translation pairs。翻译效果超越baseline,同时发现大多数的错误为编译错误

二. Motivation

2.1 Motivation Examples

示例:从camel case(驼峰)到 snake case(蛇形)function 从Java翻译为C#,挑战如下:
assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608173220619.png

  • 缺乏Context Retrieval的静态分析: 需要LLM识别和理解dependencies,invocation relationships和相似的function implementations用于指导翻译过程。传统方法基于call graphs和program dependency graphs收集必要的context,但是该信息难以转换为对LLM正确理解的格式。静态分析方法依赖于预定义规则和模式匹配,难以适应代码结构和外部依赖的动态变化。同时静态分析引入无关上下文。
  • 固定Prompt设计提示不足:前序工作依赖于简单和固定的prompt designs,难以捕捉functions间结构和功能的差异,同时难以在varying contexts足够适应
  • 错误机制纠正不足: 仅依赖erroneous code和related test failures难以正确的修复错误,错误信息可能是由于class symbol难以找到(当未提供解决方案信息),正确的修复应当是理解错误根因,收集必要上下文,之后得到target fixes

2.2 Key Ideas

  • 多智能体framework:基于RAG、Context、Refine Agent,每个subtask交给专门的agent
  • 基于工具引入的智能Context检索: 设计五个专用工具,允许agent选择性引入context。减少冗余context和提升翻译效率。并基于推理能力解释代码中自然语言描述,和利用语义知识推断语义信息,实现更为京都企鹅的上下文检索,以及处理传统静态分析的不灵活和冗余现象
  • 动态Prompt Construction:在Context 和 Refine设置动态和well-structured prompts。静态包括Goal、Guidelines、Example和Output,而动态信息基于agent当前state,如Input基于被翻译的source function更新,Gathered Context协同前序收集的信息
  • 上下文分析提升Error Correction:基于faulty code 和 test outputs分析error causes,之后提出针对性修复策略,指示agent重新调用工具,收集识别错误信息相关的上下文

三. Approach

assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608191256397.png

3.1 Overview

  • RAG Agent:检索与目标函数相似的函数,以协助翻译原函数
  • Context Agent:检索需要的上下文信息,用于翻译原函数
  • Refine Agent:将翻译的代码迭代优化,基于test cases results生成reflections,并基于error messages重新检索context,再进行修正

3.2 RAG Agent

RAG Agent主要包括4个部分:Preprocessing,Selective Retrieval,Multi-Route Retrieval 和 Result Filtering

1)Preprocessing

首先预处理metadata,并将其两个截然不同的components生成对应的embedding
first component:所有source-target translation pairs 的 method bodies
second component:target repo所有methods的function names
存储至两个database中,指向pair store 和 name store

2)Selective Retrieval

在启动RAG之前,让Agent决定target function是否需要RAG协助。基于目标函数是否独立且具备足够的简单性,若Agent判断不需要RAG,则绕过RAG过程

3)Multi-Route Retrieval

该RAG包括两个互补部分

  • first component:检索与当前source function相似的source-target translation pairs,基于BM25和余弦相似度检索,并基于Reciprocal Rank Fusion(RRF)精排
  • second component:检索与target function名字最相似的top-k function
4)Result Filtering

并不是检索到的所有function是有助于翻译的,要求Agent基于functional similarity,structural resemblance 和 referenced context决定去留

3.3 Context Agent

基于Context Agent获取repository-aware 代码翻译的必要context

1)Workflow

基于相关的source 和 target functions,构建动态的prompts,确定引入什么工具。当确定后,Context Agent调用指定的工具获取相应的输出。之后,基于信息不断重建动态的prompt。
直至到达最大迭代次数 或者 agent确定获取足够的上下文

2)Tool Introduction

主要包括如下5类工具

  1. get_source_class_info:获取包含source function的class的所有field definitions和method signatures
    辅助agent推断class是否包括该instance,有助于agent探索source function的class在target repo如何实现
  2. get_target_class_info:获取包含target function的class所有的field definitions和method signatures,
    辅助agent理解在target function引入什么样的field和methods
  3. find_target_imports:检索包含目标函数的文件中所有导入的类,揭示target class间的依赖关系
  4. find_target_class_info:给定class name,在target repo中检索所有field definition information和method signature information包括class。如果代理认为某个类在target function中被引用的可能性很高,这个工具功能可以有效地帮助代理找到关于该类的相关信息
  5. find_target_method_body:给定class name 和 method name,获取method body,便于agent在target function更好的利用该method,或决定是否使用该method
    首先要求agent使用get_source_class_info,get_target_class_info和find_target_import,获取与source function相关的基本信息,之后基于获取的信息进行翻译,同时基于find_target_class_info和find_target_method_info多次得到更为具体的信息。所有的信息为JSON格式
    assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608212632482.png
3)Dynamic Prompt Construction

prompt主要包括如下部分:

  1. Goals(Static):收集最相关的信息,辅助repo 代码翻译
  2. Tools(Static):所有tools的定义,包括names,parameters 和 descriptions
  3. Guidelines(Static):首先要求Agent使用get_source_class_info,get_target_class_info和find_target_imports,来获取source function的相关基本信息。之后,指导使用find_target_class_info和find_target_method_body收集足够的context,包括识别新的类型依赖,验证接口实现,解析packages到namespace的mappings
  4. Example(Static):设计示例如何正确使用工具序列,收集必要的上下文
  5. Input(Dynamic):包括source function和target function signature,用于收集context,指导agent收集与source function相关的信息
  6. Gathered Context(Dynamic):基于tool检索的信息,作为agent memory确定调用下一个合适的工具
  7. Output Format(Static):输出格式统一使用JSON object
  8. Last Command(Dynamic):记录调用的tool序列和返回的output,提示agent反思是否存在缺陷,并避免重复调用工具

3.4 Refine Agent

作为代码翻译和迭代error correction的核心部分。基于test case执行和self-reflection方法迭代提升翻译质量

1)Initial Generation

Agent接受source function body和target function signature作为输入,最后附带Context Agent的上下文信息和RAG Agent的similar function,输出markdown格式的翻译代码

2)Test Execution

收集和分析test execution results,主要包括如下4类错误:
compilation errors,test failures,runtime errors 和 non-terminating executions
收集 error logs,error classifications,output messages 和 precise error locations辅助针对性修正

3)Reflection

检查source function,target function signature,generated erroneous code 和 相关的 test execution results
确定哪里出错以及为何错误

4)Error Correction

增加信息,包括上轮的错误代码,详细的测试执行结构,agent的反思和修复策略
不断迭代,直至修复成功

四. 实验

4.1 Dataset

包括6个highly-rated Github projects,提取Java-C#翻译pairs,包括对应的test casesassets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608225119449.png

4.2 Baselines

选择3个,分别为UniTrans 和 PLTranslation,以及直接使用LLM翻译,不用Agent框架

4.3 Evaluation Metrics

compile rate 和 pass rate

五. 结果与分析

  • RQ1:Effectiveness Comparison.相较于baseline的翻译效果
  • RQ2:Ablation Study
  • RQ3:不同模型下的效果
    翻译效果(基于Deepseek v3):
    assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608230309047.png
    翻译结果的交集:
    assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608230737702.png
    不同类型的错误分布:
    assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608230828962.png

assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608232754652.png
Case Study:
CellPropertyType:通过find_target_imports发现未引入CellUtils,而是等价的CellPropertyType
collectCount:

消融实验:
assets/【论文阅读】RepoTransAgent: Multi-Agent LLM Framework for  Repository-Aware Code Translation/file-20260608230855802.png

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

相关文章:

  • Cyber Engine Tweaks 终极指南:5步掌握《赛博朋克2077》脚本开发与性能优化
  • Redis 分布式锁进阶第二篇讲解
  • 储能行业GEO优化实操指南:2026年如何选对服务商? - GEO优化
  • 2026年铝箱厂家推荐榜单:仪器仪表箱/拉杆仪器箱/铝合金化妆箱/航空箱/医疗设备箱及公文箱实力品牌精选 - 品牌发掘
  • 【高层次嘉宾 | JPCS出版,EI稳定快检索 |广东石油化工学院支持 | 已连续5届完成EI和Scopus检索,上一届会后3个月完成EI检索】第六届新材料与化学工程国际学术会议(AMCE 2026)
  • 华为2288H V5服务器断电后‘趴窝’?别慌,手把手教你用SmartKit+BMC修复工具搞定
  • KUKA KRC4/VKRC4控制器ProfiNet通信配置文件全版本包(V2.25–V2.4,含图标与多协议支持)
  • MiniMax M3 + Claude Code 实战:Redis 故障排查、SCAN 算法复刻与监控面板搭建
  • HS2-HF Patch:三分钟搞定Honey Select 2汉化与功能增强的终极指南
  • 答辩筹备提速新思路,paperxie AI PPT 助力毕业生轻松完成毕业宣讲
  • 别怕倾诉,总有人听|5大正能量陪聊平台实测,看见百亿市场里的温柔一面 - 时时资讯
  • ssm240葛溪乡留守儿童信息管理系统+vue(文档+源码)_kaic
  • 广州番禺上门回收奢侈品,哪家价格高口碑好又快捷? - 花生花生1
  • 新能源行业GEO优化选型实操手册:2026年哪家更靠谱? - GEO优化
  • 非线性非局域记忆宇宙泡方程(MEMCBE)的严格推导与结构性修复
  • 为什么Mac用户都在寻找完美的视频播放器?IINA给出了答案
  • Amphenol 17-101074工业以太网线束解析与替代方案参考
  • 2026年搪瓷钢板厂家推荐排行榜,地铁站/隧道/隔音/外墙/双曲弧/木纹/电镀穿孔搪瓷钢板供应商精选! - 品牌发掘
  • 猫抓插件:网页视频音频下载的终极解决方案
  • 【MySQL高阶】27.事务(2)-锁
  • 2026第一季度杭州装修公司解析:7家透明报价与闭口合同的装企 - 博客万
  • 传统闻不到异味就是空气干净,编写程序模拟室内密闭时长,预判无形有害气体累积浓度并预警
  • 智能机器人行业GEO优化案例复盘:2026年哪家公司强? - GEO优化
  • 终极指南:如何用开源3D点云标注工具快速搞定自动驾驶数据标注难题
  • Amphenol 17-10003线束组件解析:工业连接系统中的可靠传输解决方案
  • SaaS行业GEO优化避坑指南:2026年该怎么选公司? - GEO优化
  • 避开这两个坑,你的微信小程序才能成功对接华为云ModelArts
  • HarmonyOS应用<节气通>开发第13篇:隐私设置与服务模式
  • 采集的数据格式可以自定义吗?深度解析企业级智能体数据采集的灵活性边界与技术选型
  • LEGO与TikTok如何重塑儿童认知脚手架