研究笔记

可预测代码生成需要保持契约

确定性采样并不等于可预测性;只有可观察的受保护属性和验收检查,才能让生成行为可测试,并报告拒绝率、稳定性与任务成功。

分享这篇研究笔记Share

直接回答

什么使代码生成具有可预测性,而不只是可控制?

可预测性需要在生成之前声明可观察契约:什么可以变化,什么必须稳定,如何测量每个属性,以及何时拒绝输出。固定提示、随机种子、掩码、语法或潜在码都只是机制。

为什么这一区分重要

方法采用的边界必须与所声称的保证对应同一个可观察属性。

确定性生成是在固定条件下重复同一个输出。可预测生成则让预先声明的属性可测试,例如 API 签名不变、编辑只发生在指定区域、语法始终有效,或测试套件继续通过。

这一区别很重要,因为控制输入本身并没有定义其效果。锁定潜在位置、固定随机种子或约束语法可以提高可检查性,但解码之后仍必须测量真正要保护的属性。

实用步骤

  1. 声明受保护属性

    明确必须保持在给定容差内的源代码区域、结构、接口、行为或分布。

  2. 选择匹配的控制机制

    根据要保护的属性,采用源代码复用、编辑掩码、形式约束、潜在码锁定或“提出候选—验证候选”流程。

  3. 在采样前定义验收条件

    在查看输出之前,规定解析、编译、测试、结构检查、局部性阈值和任务成功标准。

  4. 测量重复运行行为

    跨重复运行报告接受、拒绝、稳定性、多样性和不确定性,而不是依赖一个示例。

应要求哪些证据

主张的强度取决于生成或解码后真正被测量的属性。

  • 分别声明受保护属性和可编辑属性。
  • 每个所声称的保证都有可观察测试或指标。
  • 在衡量稳定性的同时评估任务成功。
  • 展示重复运行差异与拒绝率。
  • 明确排除尚未测量的属性。

相关研究实际报告了什么

  • 相关实验把分层离散位置作为短 Python 函数的一种可检查控制界面。
  • 锁定四个顶层位置后,解析率提高,同时未锁定位置保持较高变化率,样本唯一率也保持较高。
  • 论文把这描述为早期概率性证据,并未声称精确 AST 保持、语义等价、功能正确或仓库级可预测性。

阅读论文简体中文导读 检索英文论文全文

适用边界

  • 可预测性取决于具体属性:系统可能在语法上可预测,却在行为上不可预测。
  • 确定性解码也可能重复同一个错误或过度宽泛的编辑。
  • 现有站内实验不能建立超出短函数测量范围的保证。
定义保持契约

主要与邻近来源

请使用链接论文查阅原始方法、测量结果和作者声明的局限。

  1. Inspectable Control for Structure-Preserving Software Regeneration

    主要的有边界实验及其明确证据限制。

  2. EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding

    复用未改变源代码片段的一种编辑式机制。

  3. Constrained Decoding of Diffusion LLMs with Context-Free Grammars

    具有显式形式约束的生成机制示例。

本页由 维护,只总结已有证据, 不添加超出引用来源的新实验结果。

浏览全部研究笔记