教会代码代理在不泄露私有代码的情况下提问
Teaching Code Agents to Ask Without Leaking Private Code
精选理由
帮助代码智能体保护隐私,同时更有效借助云端模型修复问题。
AI 摘要
本地代码代理可以通过咨询更强大的云端模型来扩展能力。然而,这类咨询往往会暴露代码仓库中的私有标识符、文件路径和源代码。主机端掩码可以隐藏已识别的标识符,却无法改变周围的代码和代理的措辞;而训练代理减少披露又可能抑制咨询行为,或生成过于含糊、无法回答的问题。我们提出实用性验证抽象(utility-verified abstraction,UVA)方法,教代理根据私有实体的作用和类型来描述它们,同时保留专家所需的技术细节。我们从已解决的修复轨迹中,将每个问题改写为这种形式;只有当改写后的问题披露的私有实体更少,并且从相同的执行状态出发、结合修复轨迹重放后仍能完成修复时,才保留该改写。在两个基准测试中,训练后的代理比训练前更常进行咨询。在代码仓库级问题修复任务中,它解决了37.6%的问题,而同一模型独立工作时的解决率为25.3%;这一提升来自整体训练,而不仅仅是咨询本身。与未训练代理向同一专家提出的问题相比,它的问题披露的私有实体减少了3.7倍,逐字泄露的代码减少了1.4倍。