代码仓库级别的问题定位旨在找出并排序与报告问题相关的文件和函数。LLM 代理通常采用迭代方式:先挑选可能相关的位置,检查对应代码,再根据新证据修正判断。然而现有环境对这一循环支持不足,代理需要自行搜索未解决的关系目标、从原始源码重建实体语义、在缺乏证据的情况下修正候选。为此我们提出 SemNav 框架,利用确定性检索生成宽泛的候选集,并让 LLM 代理持续细化该集合,实现覆盖与证据驱动的修正相结合。SemNav 通过三大组件实现此过程:语义导航图在语言服务器上按需解析程序关系,支持跨文件直接跳转;问题条件语义卡为每个实体提供简洁、基于源码的角色与问题相关性解释;持久化候选工作区记录每个候选及其证据来源,便于基于证据的验证、修正和排序。在 SWE‑bench Lite 与 PLocBench 上,SemNav 使用 Gemma 4B 将 File Hit@10 从 68.33% 提升至 82.67%。组件消融实验和轨迹分析表明三者互补,语义卡相较完整源码阅读将工作上下文负荷降低 48.2%。在 SWE‑Explore 的七项证据质量指标上全部排名第一,并将下游问题解决率从 44.00% 提升至 52.33%。
点评