← Agent Tool Use 2026

ACL 2026 · Long · E98

SpecAgent: A Speculative Retrieval and Forecasting Agent for Code Completion

代码 / 软件 / 科研执行 · 直接工具使用 · 方法 / 系统

Idea

SpecAgent 将昂贵的 repository 探索从代码补全的即时路径移到后台 indexing,并为每个文件预先缓存检索证据和可能新增函数的 speculative drafts。用户开始补全时,只需把这些 context blocks 与当前局部代码一起提供给 completion model,利用预先计算换取更丰富的跨文件上下文。

Research Problem

Repository-level completion 需要项目 API、依赖和调用惯例,BM25、dense retrieval 等通常在获得当前函数 query 后才检索,质量与交互延迟相互制约。另一方面,仅从 benchmark 删除目标函数体仍会留下未来调用者、测试、注释等信息,使检索方法获得在目标函数尚未开发时不应存在的提示。

Insight

文件的已有结构可以提前提供未来编辑方向,检索到的事实用于约束接口,预测出的实现可作为候选草稿,二者互补。关键不是消除计算,而是把分析提前并跨多次补全复用;相应评估也必须区分 indexing-time snapshot 与目标函数已存在的 inference-time repository。

Method

  1. 在目标文件和 indexing-time repository 上运行只读探索 agent,使用 file read、keyword search 和 shell 检查依赖、helper、调用模式与结构信息;Retriever Agent 输出 ranked retrieval blocks,Forecaster Agent 输出可能新增函数的 prediction blocks。
  2. 按固定 context budget 混合两类输出,主实验采用 9 个检索块和 3 个预测块,并按文件存入 index。补全时拼接 left/right context、函数 signature/docstring 与缓存块,再调用独立 completion model。
  3. 设计 function removal agent,在静态分析定位 callers 后进一步编辑仓库,删除与目标函数语义相关的 imports、注释和周边逻辑,构造合成的较早仓库状态并保持剩余功能;以 REPOCOD 为基础构建评估。
  4. 比较检索、预测、混合和不同 context 配比,并设可读取目标实现的 oracle retrieval 参考。正文基线沿用原 REPOCOD inference-time 设置,而自家 agent 使用清理后的 snapshot;因此同时报告质量与即时检索延迟,并讨论后台成本和重新索引问题。

Sources & Reading Scope

阅读依据:官方 PDF 正文。核读页码按 PDF 页序计数,可能与 proceedings 页码不同。

p. 1 · p. 3 · p. 4 · p. 5 · p. 6 · p. 7

核读章节:3.3 Indexing-Time vs. Inference-Time Retrieval · 4.1 Indexing-Time Agents · 4.2 Oracle Agent · 5.1 The Future Context Leakage Problem · 5.2 Benchmark Construction · 6.1 Experimental Setup

核读 context 构造、缓存、benchmark 清理及两类比较协议。零额外探索延迟不等于零 indexing 成本,增量重索引仍是未来工作;清理状态是 agent 合成而非真实历史提交。基线与本方法的仓库状态差异在正文明确列出,未将比较描述为完全相同信息条件。