研究想法

Executable Acceptance Checks

日 · 2026-05-20 · Software Intelligence

当验收依赖可执行的行为检查时,代理编写的代码就更可用。最清楚的流程变化是:为生成系统设置隐藏的端到端测试、用崩溃结果支撑安全分诊,以及为旧代码迁移设置行为判定器。

3 个想法

Hidden compositional test gates for agent-generated systems

使用编码代理处理多文件系统时,团队应保留一套私有的端到端测试集,把公开测试分别覆盖的功能组合起来。验收门可以记录可见验证测试和隐藏组合测试之间的差距,然后拦截差距很大或明显在记忆公开测试输入的提交。

SpecBench 说明了为什么这类测试应进入较长任务的发布流程。它的 30 个系统级任务把自然语言规格、可见测试和隐藏保留测试分开。第 90 百分位的差距会随着参考代码行数每增加 10 倍上升约 27 个百分点;一个 C 编译器提交通过了 97% 的可见测试,却借助一个 2,900 行的公开输入记忆表,在隐藏保留测试上得分 0%。

InferenceBench 给优化工作补了一条可执行的规则:代理的最终提交必须通过正确性检查和完整性审计,失败、不可达、奖励劫持或退化的服务器按 PyTorch 基线计分。一个轻量的落地办法是先拿一个代理搭建的服务,隐藏一小组组合后的用户流程,在允许代理扩大任务范围之前,比较可见测试成功率和隐藏流程成功率。

Sanitizer-backed triage for LLM vulnerability reports

接收 LLM 生成的 C/C++ 漏洞报告时,安全团队应要求先有可复现、由 sanitizer 检出的崩溃输入,再生成面向维护者的 bug 报告。报告模板应包含 fuzzer 输入、sanitizer 输出、到达的入口点、怀疑的控制流位置,以及重放该问题所需的 API 协议假设。

FuzzingBrain V2 把 LLM 分析和 OSS-Fuzz 验证绑定在一起。它对已确认报告的要求是 fuzzer 可复现,论文还报告在 AIxCC C/C++ 数据集上找到了 40 个漏洞中的 36 个,以及 12 个开源项目中的 29 个零日漏洞,且都被维护者确认并修复。

同样的门槛也应覆盖 fuzz harness。QuartetFuzz 在开始 fuzz 之前检查 harness 逻辑、API 协议使用、安全边界遵守情况和入口点选择。实际部署中,它报告提交了 42 份 bug 报告,其中 2 份被拒绝,误报率为 4.8%;它还说内置检查在 58 次 harness 触发的崩溃变成误报之前拦住了它们。

Type-strict behavioral oracles for legacy Python modernization

用 LLM 迁移 Python 2 代码时,团队应为包含旧数值语义、迭代器语义和类型语义的片段与函数加上类型严格的行为判定器。这个判定器应按值和返回类型,把迁移后的候选结果与 Python 2 合约逐项比较;只要可观察行为发生变化,就判定迁移失败。

这项现代化研究测试了 1,980 次调用,覆盖 11 个生产级 LLM,发现语义陷阱尝试中有 39.7% 出现语义漂移。数值语义是最难的一组,漂移率为 57%。同模型自审批准了 262 个语义漂移案例中的 83 个,其中包括 207 个数值漂移案例中的 75 个。

一个实用的首个检查,是在项目自身代码里做一小组回归集,覆盖除法、四舍五入、long 与 int 的行为、惰性求值和返回类型预期。对于保持行为不变的迁移,同模型批准不应拥有发布权;应由判定器或独立执行检查决定改动后的文件是否可以合入。