Chronicle:为 LLM agent 做回归测试的

来自 arXiv · 期号 2026-09-18

摘要

LLM agent 的失败很难复现:模型输出不确定、工具状态会变、多步轨迹几乎不会重跑一遍。 Chronicle 把 agent 运行过程在每次非确定性边界处录成不可变的信封(envelope),然后从记录回放。它的核心操作是 cut-point replay:从记录中选一部分边界回放,另一部分用新代码实时执行,这样就把一次事故变成了一个可以在 CI 里跑的回归测试。 在 6 个模拟事故的 benchmark 上,每次边界记录增加 23 μs(假设模型调用 300 ms,相当于 0.008%),完整回放零模型调用、20 次重复位稳定,cut-point 测试在所有 6 个事故上都能在坏代码上失败、在安全改动上通过。在工具层的变异测试中,cut-point 测试抓住了所有让记录中的不安全动作通过的变异,而把所有边界都 stub 掉的 baseline 一个都没抓住。 论文附了开源代码。

深读

导读 LLM agent 的失败极难复现:模型输出不确定、工具状态会变、多步轨迹几乎不会重跑一遍。Chronicle 提出了一种基于 cut-point replay 的回归测试方法,把一次事故录成不可变的信封(envelope),然后从记录回放,让 agent 的失败可以在 CI 里稳定复现和测试。读完能理解 agent 测试领域一个关键痛点的新解法及其量化效果。 关键信息 - Chronicle 在每次非确定性边界(如模型调用、工具调用)处记录一个不可变的信封(envelope),记录开销为每次边界 23 μs,按模型调用 300 ms 估算,仅占 0.008%。 - 完整回放不产生任何模型调用,且在 20 次重复中保持比特级稳定(bit-stable)。 - 在 6 个模拟事故的 benchmark 上,cut-point 测试在所有事故上都能在坏代码上失败、在安全改动上通过。 - 在工具层的变异测试中,cut-point 测试抓住了所有让记录中的不安全动作通过的变异,而把所有边界都 stub 掉的 baseline 一个都没抓住。 逐节讲解 问题:LLM agent 的失败为什么难以复现 LLM 响应是非确定性的(non-deterministic),因此 agent 的失败依赖三个因素:推理结果无法比特级复现、工具读取的状态会变化、多步轨迹几乎不会重跑一遍。现有的 agent 工具链虽然能记录运行过程,但只用于追踪或评分,不能用来测试代码改动。 Chronicle 的核心设计:信封记录与 cut-point replay Chronicle 把 agent 运行过程在每次非确定性边界处录成不可变的信封(envelope),然后从记录回放。其核心操作是 cut-point replay:从记录中选一部分边界回放,另一部分用新代码实时执行。这样就把一次事故变成了一个可以在 CI 里跑的回归测试。 实验评估 论文在 6 个模拟事故的 benchmark 上做了三组测试。记录开销为每次边界 23 μs(按模型调用 300 ms 估算,仅占 0.008%)。完整回放不产生任何模型调用,且在 20 次重复中保持比特级稳定。cut-point 测试在所有 6 个事故上都能在坏代码上失败、在安全改动上通过。在工具层的变异测试中,cut-point 测试抓住了所有让记录中的不安全动作通过的变异,而把所有边界都 stub 掉的 baseline 一个都没抓住。 值得注意 论文的 benchmark 只有 6 个模拟事故,规模较小,且模型边界是模拟的(simulated model boundaries),没有在真实 LLM 调用上验证。此外,cut-point replay 的效果高度依赖边界划分的合理性,如果边界选得不对,可能漏掉真正的回归。论文附了开源代码,但摘要…

读原文

本站只做摘要与索引,全部内容版权归原作者所有。