研究笔记
可预测代码生成需要保持契约
确定性采样并不等于可预测性;只有可观察的受保护属性和验收检查,才能让生成行为可测试,并报告拒绝率、稳定性与任务成功。
直接回答
什么使代码生成具有可预测性,而不只是可控制?
可预测性需要在生成之前声明可观察契约:什么可以变化,什么必须稳定,如何测量每个属性,以及何时拒绝输出。固定提示、随机种子、掩码、语法或潜在码都只是机制。
为什么这一区分重要
方法采用的边界必须与所声称的保证对应同一个可观察属性。
确定性生成是在固定条件下重复同一个输出。可预测生成则让预先声明的属性可测试,例如 API 签名不变、编辑只发生在指定区域、语法始终有效,或测试套件继续通过。
这一区别很重要,因为控制输入本身并没有定义其效果。锁定潜在位置、固定随机种子或约束语法可以提高可检查性,但解码之后仍必须测量真正要保护的属性。
实用步骤
声明受保护属性
明确必须保持在给定容差内的源代码区域、结构、接口、行为或分布。
选择匹配的控制机制
根据要保护的属性,采用源代码复用、编辑掩码、形式约束、潜在码锁定或“提出候选—验证候选”流程。
在采样前定义验收条件
在查看输出之前,规定解析、编译、测试、结构检查、局部性阈值和任务成功标准。
测量重复运行行为
跨重复运行报告接受、拒绝、稳定性、多样性和不确定性,而不是依赖一个示例。
应要求哪些证据
主张的强度取决于生成或解码后真正被测量的属性。
- 分别声明受保护属性和可编辑属性。
- 每个所声称的保证都有可观察测试或指标。
- 在衡量稳定性的同时评估任务成功。
- 展示重复运行差异与拒绝率。
- 明确排除尚未测量的属性。
相关研究实际报告了什么
- 相关实验把分层离散位置作为短 Python 函数的一种可检查控制界面。
- 锁定四个顶层位置后,解析率提高,同时未锁定位置保持较高变化率,样本唯一率也保持较高。
- 论文把这描述为早期概率性证据,并未声称精确 AST 保持、语义等价、功能正确或仓库级可预测性。
适用边界
- 可预测性取决于具体属性:系统可能在语法上可预测,却在行为上不可预测。
- 确定性解码也可能重复同一个错误或过度宽泛的编辑。
- 现有站内实验不能建立超出短函数测量范围的保证。
主要与邻近来源
请使用链接论文查阅原始方法、测量结果和作者声明的局限。
- Inspectable Control for Structure-Preserving Software Regeneration
主要的有边界实验及其明确证据限制。