From Laboratory to Real-World Applications: Benchmarking Agentic Code Reasoning at the Repository Level
Idea
RepoReason 用 Abductive Assertion Verification 评测 repository-level reasoning:隐藏测试断言中的确定值,让 agent 通过跨文件阅读和状态推演补出答案。通过执行驱动 mutation 与 dynamic slicing,benchmark 同时降低记忆答案的可能性并给错误提供可解释的复杂度诊断。
Research Problem
函数级代码题缺少真实 repository 依赖,修复型 benchmark 又多只给 pass/fail,难区分检索、理解、模拟状态和多源整合失败。直接使用开源测试的原始常量可能被记忆或就近复制,随机隐藏代码又容易产生多解和语法噪声。
Insight
unit-test assertions 是开发者选定的语义检查点,适合作为可验证状态问题;改变测试事实后由 Python runtime 重新生成答案,可以保持真实 API 推理结构而减少原答案泄露。对断言做 causal slicing,则能把仓库总体大小与实际必需信息负担分开。
Method
- 选取成熟的 predominantly pure-Python repositories,排除核心逻辑不可由 Python tracing 观测的大量 native extensions。人工过滤 trivial API checks、浅层变换、随机性或外部状态依赖测试。
- 教师模型联合修改变量表达、常量与输入,同时保持原 API call sequence;把 assertions 暂转为 DEBUG_RESULT probes,执行获取真实状态,再按原风格重建断言。仅保留可运行、断言成立且调用序列一致的变体。
- 用 sys.settrace 记录目标库调用与状态,按文件、函数、调用次数和深度进行结构筛选;确定值协议拒绝时间、地址、多解比较与动态引用,优先保留 literals/constants 等稳定答案。
- 从 assertion 沿控制和数据依赖构造 dynamic slice,定义 ESV 为相关计算单元代码量、MCL 为按执行次数计的状态推进长度、DFI 为独立上游逻辑输入数。以 ReadOnlyAgent 评测 2,492 题,按维度分析 comprehension、simulation 与 integration 相关失败。
Sources & Reading Scope
阅读依据:官方 PDF 正文。核读页码按 PDF 页序计数,可能与 proceedings 页码不同。
p. 1 · p. 4 · p. 5 · p. 6 · p. 7
核读章节:Foundation: Real-world Repository Curation · Countering Memorization: The Execution-Driven Mutation Engine · Countering Superficiality: Trace-Based Structural Filtering · Countering Ambiguity: The Deterministic Value Protocol · Cognitive Diagnostic Framework · Experimental Setup
核读 mutation、运行验证、筛选与三个诊断指标。trace 收集设有最大调用深度,且图示与正文筛选阈值表述不一致,笔记不采用争议数值;复杂度与失败的关联属于经验诊断。