241. 调试底层密码学代码
他们做了什么
Filippo Valsorda 在他新写的 Go 版 ML-DSA 实现上运行 Claude Code(Opus 4.1,无系统提示词)。他的提示词写明了测试命令和代码目录,描述了失败的症状,并让它好好思考。它阅读代码、追踪 bug,还写了一个自己的小测试来验证假设。之后,他对另外两个更早的签名 bug 重复了这个过程,每次都用一个全新的会话。
结果如何
它一次就找出了全部三个 bug,无需任何帮助。Verify 的 bug 几分钟就解决了:高位被取了两次。它提出的修复方案很一般,所以 Valsorda 弃用了它们,自己重写。
需要知道
使用范围明确的失败测试,为每个独立的 bug 开一个全新的会话,并把代理的输出当作指向 bug 的线索,而不是可以直接合并的修复。
你可以这样尝试
我在 [路径] 的密码学代码里有一个失败的测试,[描述症状,例如某些输入下输出错误]。调查它为什么失败,与 [参考实现或测试向量] 进行对比,并提出修复方案。完成的标准是测试通过、并且你解释清楚了根本原因;修改任何文件之前先把 diff 给我看。
评论
0分享你对这一章的想法