DeepDiscovery: A Location-Inference Framework for Task-Level Repository Understanding
Jiawei He, Weisong Sun, Mengyu Shi, Jie Jia, Tong Bian, Xikai Yang, Dong Sun
cs.SE, cs.AI
2026-06-22
高德AMAP的DeepDiscovery把仓库理解做成有预算的任务上下文恢复:先定位高置信锚点,再沿显式、隐式和组织关系扩出实现路径。SWE-bench Verified解出率从70.4%升到78.6%。
工业仓库动辄两万多个文件、几百万行,任务真正需要的往往是一条实现路径:接口、业务逻辑、配置注册、测试、跨模块约束。语义检索能找回字面相近的碎片,配不上依赖注入、事件回调、配置键到代码的那些隐式边。静态调用图能走显式依赖,仍然漏掉框架接线。更麻烦的是仓库一直在变,离线向量库和预构建图跟不上提交和切分支。
高德 AMAP 把问题改写成:在上下文、工具步数和延迟预算下,恢复完成本任务所需的文件、关系和证据,而不是把最像的 chunk 塞进提示词。
输入是自然语言任务加当前仓库快照,输出是带元数据和收录理由的结构化上下文包。仓库被看成多关系图:显式边(import、调用、继承、引用),隐式边(配置到代码、注册点、DI 接线、事件/回调、测试到实现),组织边(目录、模块边界、物理邻近)。隐式边来自固定规则库,输出是带置信度的候选关系,不是铁定依赖。
Location 阶段先做环境感知(技术栈、模块范围、产物角色),再按预算压一份仓库摘要,最后用四路分数挑锚点:语义(embedding + BM25)、结构摘要对齐、规则模板、任务条件下的产物角色先验。系数按仓库规模从预设档里选,不按单题调。
Inference 阶段从锚点按 Gain/Cost 优先扩展,停在预算耗尽、优先级低于阈值、或连续两步不再引入新产物角色/桥接关系。上下文默认只放元数据卡片(路径、角色、邻边、收录理由),局部实现细节才晋升全文。作者把这叫先覆盖、后细节:过早把几个文件全文塞满窗口,桥接配置和测试就进不来。
整条链路不维护持久索引或预构建全库图,每次对着当前快照跑。
方法对照在 27 道中等题、135 个专家标注金文件上,宿主统一为 Claude Code + Claude Opus 4.6,各跑三次。主指标 Full Recall Rate(FRR)要求金文件集合被完全覆盖。
| 方法 | FRR | 预处理 | 执行 |
| RAG | 84.4% | 7h / 2.26B token | 57.2s / 24991 token |
| GraphRAG | 90.2% | 9h / 3.14B | 63.8s / 28338 |
| AST+GraphRAG | 90.4% | 9h / 3.98B | 44.8s / 29677 |
| DeepDiscovery | 92.6% | 0 | 13.2s / 8826 |
系统对照把同一模块接到 Cline、Cursor、Claude Code、Codex、OpenCode、Qoder。大子项目 40 题 240 金文件,中等 27 题 135 金文件。六套系统 FRR 全涨,大项目绝对提升 1.6–9.2 个百分点,中等 2.5–7.4。Cline 大项目 72.5%→81.7%,OpenCode 82.5%→87.5%,已经很强的 Claude Code 85.0%→87.5%,Codex 84.2%→85.8%。Micro Precision 仍在约 9%–11%,增益主要来自补全而不是猛剪。
消融(大项目固定宿主):完整管线 FRR 85.8%;只做 Location 80.0%;去掉自适应压缩 81.5%;去掉隐式关系 83.3%;去掉元数据优先 82.2%。
SWE-bench Verified 上只替换仓库理解组件,模型、提示、工具和执行策略保持不变:352/500(70.4%)升到 393/500(78.6%),McNemar p<0.01。增益集中在 django(+17)、xarray(+6)、sympy 和 scikit-learn(各 +5);matplotlib、pylint、seaborn、flask 上几乎没涨。
粗定位靠压缩平均约 70 秒,对照广泛本地搜索约 225 秒。
给 coding agent 换检索器,不一定要先建一套跟仓库赛跑的离线图。先钉住锚点、再按预算把实现路径补全,在高德内部的 2.67M 行、2.5 万+ 文件生态里,六种宿主都涨 FRR。SWE-bench 上 8.2 个百分点不是检索排行榜数字,是换掉上下文构造之后多解出 41 题。
它适合提交频繁、切分支多、离线索引养不起的环境。仓库稳定、查询重复、预处理可以摊销时,预构建 GraphRAG 仍可能更便宜。
仓库理解的金标来自组织内部、DeepDiscovery 开发之前的专家标注,协议可审计,源码不能公开复现。27+40 题规模不大,FRR 又极严:漏一个桥接文件整题失败。Micro Precision 只有约 10%,召回导向会带进邻近非金文件。失败模式作者自己列了三条:任务描述含糊时锚点钉偏;隐式扩展引入结构相邻但非必要的文件;晋升策略过保守时细节看不够。隐式规则库是固定的,换框架要补规则。SWE-bench 对照是匹配替换,不是和当年榜首 agent 的无约束对打。