Control surfaces for coding agents
质量控制正被嵌入编码代理工作流,成为显式产物。GROUNDING.md 把领域规则当作优先级高于项目指令的一类输入,并要求代理在请求无效时引用具体规则并拒绝执行。在静态分析里,表现最好的方案也限制了自由生成:类型化的 JSON 中间表示胜过直接写 CPGQL,也胜过使用工具的代理循环。两篇论文传达的是同一个实际判断。把解释交给模型,把有效性留给硬约束和确定性代码,效果更好。
这一天最强的工作都在让 AI 编码更可用,方法是收窄模型可以自由发挥的范围,并增加针对真实行为运行的检查。测试生成、静态分析和运行时监控都变得更有结构。核心思路很直接:让模型提出方案,把约束、执行反馈和验证产物承担更多安全关键工作。
质量控制正被嵌入编码代理工作流,成为显式产物。GROUNDING.md 把领域规则当作优先级高于项目指令的一类输入,并要求代理在请求无效时引用具体规则并拒绝执行。在静态分析里,表现最好的方案也限制了自由生成:类型化的 JSON 中间表示胜过直接写 CPGQL,也胜过使用工具的代理循环。两篇论文传达的是同一个实际判断。把解释交给模型,把有效性留给硬约束和确定性代码,效果更好。
这一时期的测试工作瞄准的是普通覆盖率看不到的行为。TestGeneralizer 从一个真实测试出发,归纳底层场景模式,再扩展成更多可执行用例;它在 EvoSuite、gpt-o4-mini 和 ChatTester 上都报告了明显提升,现场研究里还有 16 个测试被合并。CAT 给 Java 测试生成加入调用链和依赖上下文,在 Defects4J 和较新的 GitHub 项目上都比 PANTA 有更好的行覆盖和分支覆盖。PrismaDV 用同样的思路处理数据系统,把下游任务代码和数据集配置一起读入,再生成面向任务的数据检查,在一个基准上提升超过 20 个 F1 点,在另一个基准上提升超过 26 个。
另一个明显的方向是从现有测试中推断运行时验证。FlyCatcher 把测试转成项目特定的运行时检查器,结合静态分析和 LLM 生成来跟踪 shadow state,并在执行过程中抓住静默的语义失败。在四个 Java 系统的 400 个测试上,它推断出 334 个检查器,其中 300 个被判定为正确,检测出的 mutant 数量比 T2C 多 5.2 倍。这样,验证会在代码生成之后、测试套件结束之后继续运行,所以它对不会让程序崩溃的失败也有用。
另一个较小的设计线索在问:当代理代替人通过软件行动时,人需要什么。HX 文章把可操控性、可审计性和介入点列为主要设计要求,并给出一个具体例子:代理应该向用户显示 78% 的置信度。这篇文章是概念性的,没有基准测试,所以分量不如上面的论文。不过它仍然是读这一时期其他工作的有用视角:很多更强的论文都在模型输出外面加了约束、检查点或恢复循环。