benord-labs/frink 是一个让 AI 编码智能体依据工单、错误和日程运行的项目,在本次变更之前,它以本地、开源的形式提供会先询问是否批准的自动化。2026 年 10 月 26 日的提交 b5b3178 增加了通用测试矩阵,用同一场景验证五个提供方(Claude Code、Codex、OpenCode、GitHub Copilot、Cursor),同时还清理了权限批准在测试用例之间泄漏的问题。
矩阵的每一行都会经过 handleRemoteExecute,真实聊天与 Flow 阶段都要穿过它,行名采用 conformance: <场景> x <运行时> 格式,因此结果读起来像一张一致性矩阵。场景只有两个。文本响应到达聊天且回合完整跑完的简单回合,五个提供方全部通过;但写入文件后编辑器标签页刷新的场景只有 Claude 通过。原因是只有 Claude 的回合循环会发送 file-changed,而 Codex 的编辑卡片里不包含 file_path。当前的差距列在 conformance/baseline.ts 中,并用 vitest 的 fails 选项标示;由于不在列表中的失败与列表中的成功都会让测试失败,因此防止了列表只减不增。
同一次提交还纠正了更早的测试状态。executor.test.ts 的 490 个用例中,有 237 个带着前一个用例遗留的待处理权限卡片,479 个直接继承了前一个用例安装的卡片发送器;其中 470 个是自动批准实现。原因是 vi.clearAllMocks 清除后实现仍然残留。现在所有用例都在没有待处理卡片的情况下开始,这两个数字都变成了 0。drain 测试也一并修正,让检查在伪 CLI 内部运行,异常不再被当作失败的回合吞掉。
不过,这次变更并未触及产品行为。由于目前还没有用提供方真实二进制记录的允许写入执行,所有夹具都是脚本,只在 RECORDED 与 SCRIPTED 之间区分。单元测试套件只在 Linux CI 上运行,并不是 Windows 上的验证。预计在下一个 PR 中,当编辑器刷新效果从 Claude 的循环移到公共代码后,其余行会变为通过。以当前情况来看,写入文件后的编辑器标签页刷新只作用于 Claude 路径,而矩阵并不掩盖这一差异,而是把它显现出来。