AI 编码 Agent 是否像人类一样打日志?一项实证研究 Do AI Coding Agents Log Like Humans? An Empirical Study
基于 4550 个 Agent PR 的实证研究:Agent 改日志的频率比人类低 16%,自然语言指令 67% 不被遵守,72.5% 的后续修补仍由人工默默完成。
前置知识
软件日志(Software Logging)
软件日志是开发者插入源代码中的诊断语句(如 logger.info('user logged in')),用于在系统运行时记录关键事件、错误和状态变化。日志是软件可观测性(observability)的三大支柱之一(另两个是 metrics 和 traces),主要服务于故障排查、行为审计和安全取证等非功能性需求。
论文研究的核心对象就是日志。理解 Agent 写日志与人类写日志的差异,首先要明白日志不是功能需求(passing tests 不会检查它),而是依赖开发者经验和项目惯例的隐性规范,这正是 Agent 难以自动遵循的原因。
AI 编码 Agent(Agentic Coding)
区别于简单的代码补全工具(如 Copilot 的内联提示),AI 编码 Agent 能够理解高层目标、自主规划任务、调用工具并提交完整的 Pull Request(PR)。代表性的 Agent 包括 Claude Code、Cursor、GitHub Copilot Workspace、Devin、OpenAI Codex 等,它们通常由 LLM 驱动,通过多步推理完成端到端开发任务。
论文直接以 Agent 作为研究对象,使用 AIDev 数据集覆盖了 5 类主流 Agent。读者需要理解 Agent 不是被动补全工具,而是会自主产出 PR 并触发人类审查流程的主动参与者,这会从根本上改变代码审查和维护的成本结构。
Pull Request(PR)与代码审查
Pull Request 是 GitHub 等代码托管平台上的代码合并请求机制。开发者(或 Agent)将变更推送到一个分支后,可以发起 PR 请求他人审查、讨论并最终合并到主分支。审查过程中,评审者会通过行内评论、提交额外 commit(即 post-generation 提交)来修改或修复问题。
论文 RQ3 正是围绕 PR 生命周期展开:通过追踪 PR 第一次提交到最后合并之间的所有 commit 和审查评论,作者量化了人类在 Agent 提交后对日志的隐性修补工作量(72.5%)。
可观测性(Observability)
可观测性是指通过系统外部输出(logs、metrics、traces)推断其内部状态的能力。与传统的'监控'(monitoring)相比,可观测性更强调对未知故障的诊断能力。它不仅关乎代码是否运行正确,更关乎代码是否能被理解和调试。
论文把日志放在可观测性的语境下,强调日志是 NFR(非功能性需求),因此不像功能正确性那样有自动化测试兜底——这正是 Agent 容易在日志上'偷懒'的根本原因,也是论文呼吁引入确定性防护栏(CI/CD 检查)的理论依据。
LLM-as-Judge 多 Agent 评判协议
用多个 LLM 作为评判者对同一文本进行分类,并通过多数投票或一致性检验得到最终标签的方法。论文使用 GPT-4o、GLM-4.7、DeepSeek-V3.2 三个前沿模型对日志指令进行独立分类,最终标签由多数投票决定。该方法在 NLP 评估中越来越流行,可以缓解单一模型的偏差。
论文依赖该协议自动识别 issue、PR 评论、仓库指令文件中是否包含日志指令以及指令意图(Add/Remove/Modify)。理解这一方法是看懂 RQ2 数据流(Fig. 9)的前提。
Kaplan-Meier 生存分析
一种起源于医学统计的生存分析方法,用于估计某个事件(如日志被修改)尚未发生的时间分布。它特别适合处理'删失数据'(如 PR 在被修改前就合并了)。
论文 Fig. 12 用生存曲线展示了 Agent 引入的日志在后续 commit 中被修改的时间分布,并发现人类日志比 Agent 日志被修改得更频繁更快。理解此方法有助于正确解读'agent 日志更 sticky'这一结论。
研究动机
随着 Claude Code、Cursor、Copilot、Devin 等 AI 编码 Agent 在开源项目中的普及,一个关键的非功能性需求——软件日志——面临着严重的治理真空。日志不像功能正确性那样有自动化测试兜底,它依赖开发者经验和项目惯例:什么时候打 INFO,什么时候打 ERROR,try/catch 里要不要加上下文,循环里要不要埋点。传统工程实践中,资深工程师会通过代码审查把这些隐性规范传给新人;但 Agent 不是'新人',它们被训练成以通过单元测试为主要目标,对可观测性这类 NFR 缺乏内在动机。已有研究(如 Rodriguez 等人对 GPT-4o 的评估)发现 LLM 存在 'over-logging' 倾向:在 64% 的位置上能匹配人类,但有 83% 的过度打日志倾向,常把冗余埋点放在函数开头或结尾。但这些结论来自孤立基准测试,未必反映真实 Agent 工作流的实际情况。具体到 OSS 场景,我们不知道:(1) Agent 究竟比人类多打还是少打日志?(2) Agent 能否通过自然语言指令(写在 issue 或 CLAUDE.md 中)被有效引导?(3) 当 Agent 的日志不合规时,是由人类在 code review 中显式拦截,还是在后续 commit 中默默修补?这些问题的答案决定了我们究竟应该把 Agent 当作'初级工程师'来培训,还是当作需要 CI/CD 硬约束的'流水线工人'。
本文的目标是本文通过对 4,550 个 Agent PR 与 3,276 个人类 PR 的全生命周期实证对比,给出三大可量化的结论。第一,Agent 在 58.4% 的仓库中改日志的频率显著低于人类(p=0.019,Wilcoxon signed-rank),其中位数 prevalence score=0.45,意味着典型仓库中 Agent 改日志的 PR 占比只有人类的约 84%;第二,仅 4.7% 的 PR 包含显式日志指令,且即便在强指令(specifying log levels/files/frameworks)下 Agent 的合规率也只有 27.3%,整体 constructive 请求合规率仅 33%(即 67% 不合规);第三,Agent PR 合并前有 77.2% 会被后续 commit 修订,其中 72.5% 的日志修补由人工完成,Kaplan-Meier 生存曲线显示人类日志在前 5 个 commit 内被修改的概率显著高于 Agent 日志。作者希望用这些硬数据推动社区从'靠 prompt 治理 NFR'转向'靠 CI/CD 静态检查强制治理',并为下一代 Agent 的训练(RLHF/RLVR)提供可观测性维度的 reward 信号。
与已有工作不同的是,与已有的 LLM 基准研究(如 LANCE、UniLog、Rodriguez 等人的 GPT-4o 评估)相比,本文的差异是'在野'(in-the-wild)视角:所有数据来自 81 个真实活跃开源仓库的合并历史而非合成数据集,且配对了同仓库同时段的人类 PR 作为对照基线。与已有的 Agent 实证研究(如 Watanabe 关于 Claude Code 接受率 83.8%、He 关于 Cursor 静态警告 +30%、Wang 关于 programmatic bias 93.8%)相比,本文的切入角度是'NFR 而非功能性正确':其他研究关注的是代码能否运行或被接受,本文关注的是代码能否被理解和调试。与传统的软件日志研究(如 Fu、Pecchia、Yuan、Li 等人对人类日志实践的刻画)相比,本文首次把人类日志与 Agent 日志放在同一项目、同一时间窗内做配对比较,避免了跨项目的方法论噪声,并通过'归一化 score = agentic/(agentic+human)'把异质规模统一到 [0,1] 区间。进一步的差异化贡献是把'沉默的代码审查'纳入指令范畴:把人类在后续 commit 中的默默修补视为'隐性指令响应',由此揭示出 72.5% 的隐性维护负担这一此前未被量化的现象。
核心方法
论文采用'数据收集 → 日志识别 → 指令分类 → 配对比较'的四步实证流水线(Fig. 1)。整体直觉是:要在同一个仓库内同时有人类 PR 和 Agent PR,把它们的日志行为放进同一坐标系做配对比较。具体技术路线分三层:(1) 数据层——从 AIDev 数据集筛选出 2024 年 12 月到 2026 年 7 月间至少有 10 个 Agent PR 和 10 个人类 PR、且主语言为 Python/Java/JS-TS 的 81 个仓库,得到 4,550 个 Agent PR 与 3,276 个人类 PR(最终含日志变更的子集为 77 仓库);(2) 检测层——使用针对三种语言的定制正则(如 Python 的 \b(?:logging|logger)\.\w+\s*\(、Java 的 LOGGER.warn、JS-TS 的 console.log)从代码 diff 中识别日志变更,正则在 380 个 diff 的人工抽样验证上达到 96% 精确率与 94% 召回率;(3) 指令层——同时收集三类潜在日志指令源(linked issue、仓库级指令文件如 CLAUDE.md/.github/copilot-instructions.md、PR review 评论),用 GPT-4o、GLM-4.7、DeepSeek-V3.2 组成 LLM 评审团(majority vote,Cohen's κ=0.83)将每条文本分类为 Add/Remove/Modify/None 四种意图。最终以'项目内配对 + 归一化分数 score = agentic/(agentic+human)'的方式把 0–1 区间作为对比尺度,0.5 即 parity。
本文最核心的方法创新是'配对归一化分数'(paired normalized score)的设计:$\text{score} = \frac{\text{Agentic}}{\text{Agentic} + \text{Human}}$。这个看似简单的变换把异质的项目规模归一化到 [0, 1] 区间,使得跨项目比较有统一尺度,且只要单边非零即有定义——有效解决了 Agent PR 数量通常远少于人类 PR(4550 vs 3276)的样本不均衡问题。第二个关键设计是'指令来源三分法'(linked issues + 仓库指令文件 + review comments):以往研究只关注 prompt 中显式给出的指令,而本文把'沉默的代码审查'(即人类在后续 commit 中默默修补日志)也纳入'指令'范畴,由此揭示出 72.5% 的隐性维护负担。这一思路把'Agent 是否听话'的问题从'指令-响应'的窄视角拓展到'指令-合规-治理'的全生命周期视角。
方法步骤详情
整个方法的具体步骤如下。第一步是数据筛选(Section 3.1):从 AIDev-pop(33596 个 Agent PR、6618 个人类 PR、2807 个仓库)出发,依次叠加'主语言 Py/Java/JS-TS''≥500 stars''≥10 个 Agent PR 与 ≥10 个人类 PR'三道过滤,得到 130 仓库 / 6843 Agent PR / 4784 人类 PR 的候选集,最终因排除 4 个无日志变更的仓库得到 77 仓库 / 4550 Agent PR / 3276 人类 PR 的最终集。第二步是日志识别(Section 3.2):对每个 PR 的代码 diff,针对其修改文件的扩展名运行对应的语言正则(Table 1);同时排除构建产物目录(如 node_modules/、dist/)与测试文件(test_*.py、*Test.java 等,Table 2);最终输出每个 PR 中'被增加、修改或删除的日志语句集合'以及对应的代码上下文(if/try/loop/unnested,Table 5)。第三步是指令收集(Section 3.3.1):对每个 Agent PR,收集三类指令——通过 GitHub API 拉取关联 issue(仅 Copilot PR 可关联),按 Table 3 的正则(如 \*\*/CLAUDE.md、\.github/copilot-instructions\.md)扫描仓库指令文件在 PR 创建时点的快照,并拉取 PR 的 review 评论。第四步是指令意图分类(Section 3.3.2):构造一个 system+user prompt(Fig. 2)让 GPT-4o/GLM-4.7/DeepSeek-V3.2 各自独立给出 {label, rationale} JSON;通过 100 条人工标注样本迭代调参至 Cohen's κ=0.83 后,采用 majority voting 决定最终标签;与此同时,第一作者与第二作者按 'Strong/Weak' 维度双盲标注 100 条指令,κ=0.96,用于 RQ2 的强度分析。第五步是指标计算(Section 4):对每个项目-类型(Agent/Human)组合,计算 logging prevalence(改日志的 PR 比例)、log density(每 1K LOC 改动日志数)、message length、log level 分布(按 Table 4 的 verbosity 分类)、syntactic context 分布(按 Table 5 归一化)。第六步是配对比较与统计:每个项目得到一个 [0,1] 的归一化分数;用 Wilcoxon signed-rank 或配对 t 检验比较 Agent vs Human 的项目级中位数;RQ3 进一步用 Kaplan-Meier(scikit-survival)追踪 Agent 引入日志在后续 commit 中被修改的时间分布,并用 commit authorship metadata 把每次后续修改归因于 human 或 bot。
技术新颖性
方法层面有三个新颖点。第一,'按指令源分别计算合规率'的拆解视角(Table 6)——同一份日志指令可能来自不同渠道,本文把渠道差异(task specification vs repository instruction)作为变量考察,发现两者合规率差异显著(40% vs 8.3%),并指出部分原因可能是某些 Agent 工作流根本不会加载仓库指令文件。第二,'指令强度'作为调节变量的引入——通过对 100 条指令人工标注 Strong/Weak,发现一个反直觉现象:弱指令合规率反而高于强指令(50% vs 27.3%),提示'越具体的指令越难被 LLM 准确解读',这是一个之前未被量化讨论的 LLM 行为模式。第三,把 Kaplan-Meier 引入到日志稳定性研究——传统日志研究多用静态指标(如修改率),本文用生存分析刻画'日志多久会被改',揭示出 Agent 日志更'sticky'(被改动频率低于人类日志)这一新发现。
实验结果
论文有三大核心发现。第一,Agent 在大多数仓库中改日志的频率显著低于人类(RQ1)。具体来说,在 58.4%(45/77)的仓库中,Agent 的归一化 logging prevalence score < 0.5(p=0.019,Wilcoxon),中位数 score=0.45,意味着 Agent 平均比人类少改约 16% 的日志;但反过来,在两类贡献者都改日志的 67 个仓库中,Agent 的 log density 反而更高(中位数 score=0.56,即 Agent 比人类每 1K LOC 多产 30% 的日志)——这一表观'over-logging'在 Fig. 5 中被解释为组合效应:Agent 的 PR 中位数大小仅 1279 LOC(人类为 2770.5 LOC),46.8% 的 Agent log-adding PR 集中在 ≤1000 LOC 范围(人类仅 33.0%),而当控制 PR 规模时(19 个 Agent PR 反而比人类 PR 大的仓库),Agent 实际更保守(少 21%);log level 层面 Agent 在 ERROR(53.2% 一致)和 DEBUG(64.9% 一致)匹配度高,但在 INFO(人类多 24.7%)和 WARN(Agent 多 29.9%)出现分歧;syntactic context 层面 Agent 在 try/catch(58.4% 一致)和 unnested(59.7% 一致)表现良好,但在 conditional(仅 46.7% 一致)和 loop(41.5% 一致)保守,明显'不敢'在控制流分支里加 INFO。第二,显式日志指令既稀少又无效(RQ2)。在可观察指令渠道的 1308 个 Agent PR 中,仅 4.7%(61 个)包含任何日志指令;其中 15 条来自 issue、46 条来自仓库指令文件,零重叠;指令意图以 Add 为主(41 条),Modify 8 条,Remove 12 条;Agent 对 constructive(Add/Modify)请求的整体合规率仅 33%(即 67% 不合规),并且在 73.3% 都是 Strong 指令的情况下 issue-level 合规率仍只有 27.3%;更关键的是 Table 8 揭示了一个反直觉结果:log-instructed PR 的 logging change rate(14.8%)甚至低于 log-uninstructed PR(20.8%),Pearson χ²=1.32, p=0.25 无显著差异——意味着仅仅在 prompt 中加一句'记得打日志'对最终行为没有可观测影响。第三,PR 合并前存在'隐性维护税'(RQ3)。Fig. 11 显示 77.2% 的 Agent log-changing PR 会在合并前被修订(人类为 81.6%),但修订主体差异巨大:人类 PR 修订 97.8% 由纯人工完成,而 Agent PR 仅 54.5% 由纯人工完成、35.1% 由 bot 完成、10.3% 二者皆有;在日志语句层面,人类贡献了 72.5% 的 post-generation 修改(人类 PR 此比例为 99.5%);Kaplan-Meier(Fig. 12)显示人类日志在前 5 个 commit 内被修改的概率显著高于 Agent 日志,说明 Agent 日志更'sticky';Table 9 显示 PR-level 显式 logging feedback 在 Agent 与人类组中比例几乎相同(2.18% vs 2.17%),意味着人类更多是通过'默默提交补丁'而非'显式要求修改'来修复 Agent 日志问题——这就是论文所说的'silent janitors'现象。Fig. 13 进一步揭示:修订集中在大型 PR(Agent 修订中位数 2702 LOC vs 未修订 231 LOC;Cliff's δ=0.688,p<0.001),说明 Agent 在小改动上的日志自洽性较高,而在大改动上仍需大量人工补救。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 项目级 logging prevalence 比较 | 归一化 score(Agent/(Agent+Human)) | 45/77 (58.4%) 仓库 score<0.5;中位数 0.45 | 人类 PR 在同仓库的 prevalence | Agent 比人类少改 ~16% 日志(p=0.019) |
| 项目级 log density 比较(限两类都改日志的 67 仓库) | 归一化 score / 每 1K LOC 改日志数 | 中位数 score=0.56;Agent 多 30% | 人类 log density | Agent log density 偏高,但 Fig. 5 证明这是 PR 规模组合效应,控制规模后趋同(>2500 LOC 时 1.64 vs 1.59) |
| log level 一致性(Agent vs Human) | 仓库占比:相似 / Agent 多 / Human 多 | ERROR 53.2% 相似;DEBUG 64.9% 相似;INFO 59.7% 相似;WARN 仅 48.1% 相似 | 人类 log level 分布 | Agent 在 ERROR/DEBUG 高度匹配人类,但 INFO(Human 多 24.7%)和 WARN(Agent 多 29.9%)显著分歧 |
| syntactic context 一致性 | 仓库占比:相似 / Agent 多 / Human 多 | Try/Catch 58.4% 相似;Unnested 59.7% 相似;Conditional 46.7% 相似;Loop 41.5% 相似 | 人类 syntactic context 分布 | Agent 在错误处理场景匹配良好,但在控制流分支中保守(Human 在 conditional/loop 中多 28.6%/32.5%) |
| 日志指令合规率 | compliance % / PR 数量 | Issue Add 40.0% (2/5);Issue Modify 37.5% (3/8);Issue Remove 0.0% (0/2);Repo Add 8.3% (3/36);Repo Modify 0.0%;Repo Remove 100% (10/10,但疑似 vacuous compliance) | 理想 100% 合规 | 整体 constructive 请求合规率仅 ~33%,Strong 指令也只达 27.3% |
| post-generation 修订主体归因 | 修订 PR 占比 + 修订者构成 | Agent 修订 77.2%;其中 Human-only 54.5%,Bot-only 35.1%;人类贡献 72.5% 的语句级修改 | 人类 PR 修订 81.6%,其中 Human-only 97.8%,Bot-only 1.6% | Agent 引入大量 bot 自动化迭代,但仍依赖 72.5% 人工修补 |
| Kaplan-Meier 日志稳定性 | 前 N 个 commit 内日志被修改的概率 | Agent 日志存活率高于人类日志(前 5 commits 内下降更慢) | 人类日志存活曲线 | Agent 日志更 'sticky',暗示初始生成质量差异或人类对 Agent PR 审查更宽松 |
| PR-level 显式日志反馈率 | feedback PR / 总 PR | Agent 2.18% (99/4550);人类 2.17% (71/3276);log-changing PR 中:Agent 5.80%,人类 6.00% | 人类 PR 反馈率 | 两组几乎相同,说明人类对 Agent 与人类 PR 的'review 显式反馈密度'相当,但日志修补主要发生在后续 commit |
局限与改进
作者在 Section 6 显式承认了三类局限。(1) 内部有效性:LLM-as-Judge 协议(GPT-4o/GLM-4.7/DeepSeek-V3.2)虽经 Cohen's κ=0.83 校准,仍可能误分类边缘案例;ephemeral IDE chat 指令(如开发者在 Cursor 里临时输入的'记得打日志')完全不在数据集内,可能低估真实指令密度。(2) 构造有效性:regex 方法会漏掉自定义日志封装(如 MyLogger.track())和动态拼接的消息;96% 精确率与 94% 召回率虽高,但 6% 的误报和 4% 的漏报在 4550 个 PR 上会累积成可观噪声。(3) 外部有效性:仅 Py/Java/JS-TS 三种语言,且要求 ≥500 stars 和至少 10+10 个 PR,样本偏向成熟活跃 OSS;结论未必适用于企业内部仓库、嵌入式 C/C++、Go、Rust 等生态;针对的 Agent 也限于 AIDev 数据集覆盖的 Copilot/Cursor/Devin/Claude Code/Codex 五类,新一代 Agent(如 Agentless、AutoCodeRover)未必适用。我自己的观察还有:(a) 'silent janitors' 这一现象可能部分归因于 bot 自动 fix(如 dependabot/lint bot),但论文没有区分自动 fix 与人类 review 触发的 fix;(b) Kaplan-Meier 仅追踪'PR 内 commit',跨 PR 的日志修改(如后续重构 commit)未纳入,因此可能高估日志稳定性;(c) 论文统计检验多用非参数 Wilcoxon 但没有做多重比较校正(FWER),多个 RQ 同时检验下 5% 的 p 值需要更谨慎解读。
独立分析的弱点
独立审视论文,我识别出以下几个具体弱点及对应改进方向。(1) 指令合规率的'强度悖论'——强指令合规率(27.3%)反而低于弱指令(50%),作者只报告现象但未深入归因。改进方向是用 interpretability 方法(如 attention rollout、logit lens)检验 LLM 是否对'Strong'指令中具体字段(log level、文件名)产生 token-level 冲突,或在 prompt 中用 few-shot 示例替代自然语言细则。(2) 'Remove 100% 合规'是 vacuous compliance——dropseed/plain 这一个项目贡献了所有 10 条 Remove 指令,且要求是'先打日志调试,提交前删除',但代码中本来就没有 debug 语句,于是被计为 100% 合规。改进方向是把 vacuous compliance 单独标记或在合规率计算中引入'非平凡编辑量'阈值。(3) 缺少对'为什么 Agent 不打 INFO'的因果分析——RQ1 只观察到 INFO 显著偏少(24.7% 仓库中人类更多),但没解释是训练数据偏差、reward model 偏好还是安全审查触发。改进方向是用 rejection sampling + counterfactual prompt 探查因果,例如把 issue 中加一句'请添加 INFO 级别日志以追踪状态'对比自然状态。(4) PR 规模效应虽有讨论但没有形式化建模——Fig. 5 显示 log density 与 PR 规模强相关,但论文未给出密度对规模的回归方程。改进方向是用 $\log(\text{density}) = \alpha + \beta \cdot \log(\text{LOC}) + \gamma \cdot \text{Agent} + \epsilon$ 拟合,从 $\gamma$ 是否显著区分 Agent/Human 的'本质行为'。(5) 缺乏对 Agent 类型(Copilot vs Claude Code vs Cursor 等)的分层分析——Table 3 列出了五种 Agent 但论文结果未按 Agent 类型拆分。改进方向是对每类 Agent 单独跑一遍指标,可能揭示某些 Agent(如 Claude Code)的指令合规率显著高于其他(如 Devin)。
未来方向
作者在 Section 5 给出三类未来方向。(a) For Tool Builders:从 prompt 治理转向 CI/CD 硬约束。具体可探索的方案包括:在 agent 工作流中插入 observability-focused linter(如自定义 ESLint rule、pylint plugin),把'每个 catch 块必须有 logger.exception'作为可执行检查;或在 PR 创建前自动运行基于 AST 的日志覆盖率分析,未达标则阻断 PR。(b) For Researchers:训练主动可观测性 Agent。论文建议 RLHF + RLVR 两条路径:RLHF 用开发者对日志质量的偏好对(如'这个日志太啰嗦'vs'这个日志不够')做 pairwise 比较训练 reward model;RLVR 把静态分析器(log coverage、log level distribution)的输出作为 verifiable reward,自动惩罚未埋点的控制流分支。此外还可探索:把 logging 视为 sequence labeling 任务做专用 pre-training;用 agentic self-play 让一个 Agent 生成代码、另一个 Agent 做'observability critique'形成对抗训练。(c) For Practitioners:把可观测性纳入 PR 审查 checklist。具体的工程动作包括:code review template 强制要求 reviewer 勾选'agentic PR 是否覆盖了所有异常分支';定期 audit 仓库的 log churn 率作为可观测性健康的 leading indicator。基于论文结果可延伸的方向还包括:(i) 跨语言泛化——论文限 Py/Java/JS-TS,但 Rust/Go/C++ 的 Agent 日志实践尚未被研究;(ii) 跨组织对比——企业内部仓库的日志指令密度与合规率是否与 OSS 一致?企业内部更可能存在硬性 SLA,可作为对照实验组;(iii) 长周期效应——Agent 引入日志后 6/12/24 个月的演化趋势,是否会逐渐沉淀成事实标准?(iv) 多 Agent 协作场景——多个 Agent 协作修改同一文件时日志的归属与冲突解决。
复现评估
复现性方面论文提供了完整的 replication package(参考文献 [20]),作者明示愿意公开所有代码。数据来源是 AIDev 公开数据集(DOI 已索引),覆盖 81 个真实仓库的 PR 与 review 评论,可通过 GitHub API 重新拉取 patch。计算依赖方面,方法主体是 Python(regex、pandas、scikit-survival、scipy),LLM 评审团使用 GPT-4o/GLM-4.7/DeepSeek-V3.2 的 API 调用,复现成本主要在于 API 费用(4550 个 PR 的指令分类 + 多次 majority vote 估计在数十美元量级);Kaplan-Meier 在 scikit-survival 中是几行代码即可跑通;统计检验用 scipy.stats 的 wilcoxon 与 chi2_contingency。复现难度整体评估为中等偏低,主要门槛在于 LLM API 的可访问性与费用。需要注意的是:(1) AIDev 数据集的时间窗(2024-12 至 2026-07)跨越多个 Agent 版本升级,论文结果绑定到具体的模型快照(如 Claude 3.5 Sonnet),新模型上的合规率可能变化;(2) regex 是基于 Py/Java/JS-TS 惯用法调优的,移植到新语言需要重新调参与人工验证;(3) LLM-as-Judge 的 prompt 是关键资产,作者已附在论文中(Fig. 2),但完全复现 κ=0.83 需要重新做 100 条人工标注作为 ground truth。总体而言,对于熟悉 Python 数据栈与 LLM API 的研究者,复现周期估计在 1-2 周内可完成。
论文图表
分组柱状图,y 轴为 PR size(log scale LOC)。四组:Agent Unchanged 中位数 231、Agent Revised 中位数 2702;Human Unchanged 中位数 250、Human Revised 中位数 4390。Agent 和 Human 都呈现'revised PR 远大于 unchanged PR'的模式,且 Human 的 revised PR 中位数最大。
把'修订'与'PR 规模'耦合起来——展示日志治理成本主要集中在大 PR 上,对 Agent PR 而言尤为关键(Agent Unchanged vs Revised 差距 12x)。