一个编码智能体改完代码,留下一段自信的总结:bug 修好了,测试通过了,可以进入评审了。评审者却还得追问几个再普通不过的问题——跑了哪些测试?针对哪些文件?跑完之后实现有没有再改过?被引用的那个测试,真的覆盖了它声称的行为吗?
聊天记录让这些追问变得格外别扭。证据散落在消息、终端输出和一个可能已经变过的代码树里。Proofpacket 是一个小型 Python 工具,用来把命令证据和作者的声明装进同一个可携带的文件里。
一个通过的测试,有它的作用域和时间
设想一次文档分享相关的改动,附带两条声明:访客不能转发文档;所有访问路径都被覆盖。一个针对性测试可能为第一条提供有用证据,对第二条则说明不了多少。把同一个绿色对勾同时贴给两条声明,恰好掩盖了评审者需要看见的差别。
Proofpacket 存储声明、显式选定的源文件、命令观测结果,以及作者在声明与检查之间建立的联系。每条命令观测都包含参数、工作目录、退出码、输出摘录,以及执行前后采集的文件指纹。
最后这项细节很关键。如果选定的源文件在命令执行后发生变化,旧观测仍被保留,但会变为过期状态,它无法悄悄变成新版本代码的证据。
跑一遍示例
需要 Python 3.11 或更新版本,运行时不需要任何第三方 Python 包。克隆仓库后在其根目录执行以下命令:
- 克隆仓库并进入目录,用临时目录复制一份示例项目;
- init初始化数据包,指定任务文件、声明文件、项目根目录、选定的源文件路径和输出路径;
- run执行指定命令,记录一次命令观测;
- link把某条声明与某次检查关联起来;
- verify校验数据包,用report生成 Markdown 报告。
针对性命令通过了。访客转发那条声明关联到了通过的证据;范围更大的“所有路径”声明则仍未关联。打开 Markdown 报告,就能看到这一区分。
接着在临时副本里改动一个选定的文件,再跑一次校验。第二次校验以状态码 1 退出。命令的历史执行结果仍然是通过的,但它的新鲜度已变为过期,关联的声明需要重新评审。仅仅加一行注释就足以触发,因为工具保守地对整个文件做哈希。
把评审者留在流程里
数据包记录的是观测结果,它无法判断某个测试是否支持某条声明。一个无关紧要的断言也能成功退出;作者可能关联一个不相干的检查;选定的文件列表可能漏掉某个依赖、配置文件或重要的运行时输入。
命令还以当前用户的权限运行。它是证据记录器,不是用来跑陌生代码的沙箱。
因此一次有用的评审包含两部分:检查记录下来的执行过程,检查测试与声明之间的关系。文件哈希帮助回答选定的字节是否仍然匹配,它们并不证明行为是正确的。
从一条有争议的声明开始
找一个小改动试试,前提是它的完成总结听起来比测试覆盖的范围更宽。记录一条具体声明,选定相关文件,关联一条针对性命令。然后问另一位工程师:这个数据包是否帮他弄清了还有哪些地方需要检查。
真正有意思的衡量标准是,评审者能否在不比评审本身花更多精力记录证据的情况下,发现那些缺乏支持或已经过期的声明。一份整洁的报告本身,并不能证明这种价值。
该仓库采用 MIT 许可证,包含可运行的示例、数据包结构和已记录的局限。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.