Language Server CLI Empowers Language Agents with Process Rewards
作者: Yifan Zhang, Lanser Contributors
分类: cs.CL, cs.AI, cs.PL, cs.SE
发布日期: 2025-10-27
备注: Project Page: https://github.com/yifanzhang-pro/lanser-cli
🔗 代码/项目: GITHUB
💡 一句话要点
Lanser-CLI通过进程奖励赋能语言Agent,解决API幻觉和错误编辑问题。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 语言服务器 代码Agent 进程奖励 代码生成 代码编辑
📋 核心要点
- 现有大型语言模型在代码生成和编辑中存在API幻觉和定位不准确的问题,影响了代码质量和可靠性。
- Lanser-CLI通过语言服务器提供结构化信息和可操作的进程奖励,将Agent的规划与程序现实对齐,从而解决上述问题。
- Lanser-CLI提供鲁棒的寻址方案、确定性分析包、安全的操作包络以及可计算的进程奖励函数,提升了代码Agent的性能。
📝 摘要(中文)
大型语言模型经常出现API幻觉和错误定位编辑的问题,而语言服务器可以计算经过验证的、IDE级别的关于真实代码的事实。本文提出了Lanser-CLI,一个CLI优先的编排层,它为编码Agent和CI固定和调解语言服务器协议(LSP)服务器,从而暴露确定性的、可重放的工作流程。我们的观点是,语言服务器不仅提供结构信息(定义、引用、类型、诊断),还提供可操作的进程奖励:机器检查的、逐步的信号,使Agent的规划循环与程序现实对齐。Lanser-CLI贡献包括:(i)一种鲁棒的寻址方案,通过Selector DSL(符号、AST路径和内容锚定选择器)超越了脆弱的“file:line:col”,并具有原则性的重定位算法;(ii)确定性的分析包,规范化语言服务器响应并捕获具有稳定内容哈希的环境/能力元数据;(iii)一个用于变异操作(重命名、代码操作)的安全包络,具有预览、工作区jail和Git感知的事务性应用;(iv)一种从语言服务器事实(诊断增量、消歧置信度和安全应用检查)导出的进程奖励函数,该函数可在线计算和离线重放。我们形式化了冻结快照下的确定性,并为进程奖励建立了单调性属性,使其适用于进程监督和反事实分析。
🔬 方法详解
问题定义:现有的大型语言模型在进行代码生成和编辑时,经常出现API幻觉(即生成不存在的API)以及错误定位编辑位置的问题。传统的基于文件行号的定位方式脆弱性较高,容易受到代码变动的影响。这些问题严重影响了代码Agent的可靠性和实用性。
核心思路:Lanser-CLI的核心思路是利用语言服务器(Language Server)提供的精确代码分析能力,为代码Agent提供结构化的信息和可量化的进程奖励。通过将Agent的规划循环与语言服务器提供的程序现实对齐,从而减少API幻觉和错误编辑的发生。
技术框架:Lanser-CLI作为一个CLI优先的编排层,主要包含以下几个模块:1) Selector DSL:提供一种鲁棒的寻址方案,超越了传统的“file:line:col”方式,支持符号、AST路径和内容锚定选择器。2) Analysis Bundles:用于规范化语言服务器的响应,并捕获环境和能力元数据,生成具有稳定内容哈希的分析包。3) Safety Envelope:为变异操作(如重命名、代码操作)提供安全保障,包括预览、工作区jail和Git感知的事务性应用。4) Process Reward Function:从语言服务器的事实(如诊断增量、消歧置信度、安全应用检查)中导出进程奖励,用于指导Agent的规划。
关键创新:Lanser-CLI的关键创新在于将语言服务器的分析结果转化为可量化的进程奖励,并将其用于指导代码Agent的规划。这种方法不仅提供了结构化的代码信息,还提供了一种可操作的反馈机制,使得Agent能够更好地理解和操作代码。此外,Selector DSL和Analysis Bundles的设计也提高了代码定位的准确性和代码分析的确定性。
关键设计:Selector DSL采用了一种基于符号、AST路径和内容锚定的混合寻址方式,可以更精确地定位代码元素。Analysis Bundles通过规范化语言服务器的响应,并捕获环境和能力元数据,保证了代码分析结果的确定性和可重现性。Process Reward Function的设计考虑了诊断增量、消歧置信度和安全应用检查等因素,可以更全面地评估Agent的操作效果。
📊 实验亮点
论文形式化了冻结快照下的确定性,并为进程奖励建立了单调性属性,使其适用于进程监督和反事实分析。通过Lanser-CLI,代码Agent可以获得更准确的代码信息和更有效的反馈机制,从而减少API幻觉和错误编辑的发生,提升代码质量。
🎯 应用场景
Lanser-CLI可应用于自动化代码生成、代码重构、代码修复等领域。通过提供精确的代码分析和可量化的进程奖励,Lanser-CLI可以显著提升代码Agent的性能和可靠性,从而提高软件开发的效率和质量。未来,该技术有望应用于更复杂的软件工程任务,如自动化测试和持续集成。
📄 摘要(原文)
Large language models routinely hallucinate APIs and mislocalize edits, while language servers compute verified, IDE-grade facts about real code. We present Lanser-CLI, a CLI-first orchestration layer that pins and mediates a Language Server Protocol (LSP) server for coding agents and CI, exposing deterministic, replayable workflows. Our position is that language servers provide not only structural information (definitions, references, types, diagnostics) but also an actionable process reward: machine-checked, step-wise signals that align an agent's planning loop with program reality. In this work, Lanser-CLI contributes: (i) a robust addressing scheme beyond brittle "file:line:col" via a Selector DSL (symbolic, AST-path, and content-anchored selectors) with a principled relocation algorithm; (ii) deterministic Analysis Bundles that normalize Language Server responses and capture environment/capability metadata with stable content hashes; (iii) a safety envelope for mutating operations (rename, code actions) with preview, workspace jails, and Git-aware, transactional apply; and (iv) a process-reward functional derived from Language Server facts (diagnostic deltas, disambiguation confidence, and safe-apply checks) that is computable online and replayable offline. We formalize determinism under frozen snapshots and establish a monotonicity property for the process reward, making it suitable for process supervision and counterfactual analysis. Project Page: https://github.com/yifanzhang-pro/lanser-cli