为解决 AI 编码代理「改对但写乱」问题,作者用 Rust 构建了确定性源码编辑工具,将代码修改严格限定在 OBSERVE→IDENTIFY→GUARD→MUTATE→VERIFY→CERTIFY 管道中,支持 Tree-sitter 精准定位。
我一直看到 AI 辅助编码中同样的失败模式:Agent 选对了改动,却通过临时的 sed、正则替换、patch、一次性脚本、直接写入或整文件重写来应用它。
问题不在于这些工具不好。问题在于每条路径对于歧义、陈旧状态、保留、失败和证据都有不同的规则。Agent 不得不自行判断最终写入是否安全。
所以我构建了 Threadmoth,一个用于代码仓库最后一公里编辑的小型 Rust CLI。
Threadmoth 将请求的变更转换为一条狭窄的管道:
OBSERVE → IDENTIFY → GUARD → MUTATE → VERIFY → CERTIFY
它检查读取的字节,识别预期目标,拒绝歧义或陈旧的请求,仅应用授权的效果,读取回结果,并返回机器可读的证据。
当前实现包括:
精确身份验证和陈旧文件检查;
当目标存在歧义时拒绝基数;
用于代码和 Web 格式的 Tree-sitter 结构化定位;
显式效果配额;
保留源文件的字节级编辑;
带恢复的受保护多文件事务;
以及包含哈希、变更范围、有界差异证据和提交验证的写后证书。
重要的设计约束是 Threadmoth 不试图替换专业工具。rustfmt、Prettier、Black、gofmt、jq、AST 工具和类似工具仍然可以决定期望的状态。Threadmoth 只负责界定和验证最终落地的内容。
解析器可以指向布料,但它不能重新编织它。
Threadmoth 1.5.1 以 MIT 许可证发布,适用于 Windows 和 Linux。托管的 Linux 和 Windows CI 已通过。本地正确性检查的运行报告了 8/8 个困难案例,零错误变更,破坏性测试报告 FOOTGUN-100 安全通过 100/100。
这些是发布检查,不能证明该工具在每个 Agent 工作流中都有用。我现在正在运行一个公开的现场测试,寻找愿意用 Codex、Claude Code、Gemini CLI、Cline、OpenCode 或其他编码 Agent 尝试一两个真实代码仓库变更的人。
我想要的反馈是具体的:
Agent 是在没有被主动告知其请求模式的情况下发现 Threadmoth的吗?
当任务适合时,它选择了 Threadmoth 吗?
一个有效的编辑被拒绝了吗?
一个不安全或陈旧的编辑被正确拒绝了吗?
无关的字节被保留了吗?
如果 Threadmoth 不可用或未被选择,Agent 使用了什么替代方案?
Repo: https://github.com/matthewjameswatkins1978-cyber/Suture Release: https://github.com/matthewjameswatkins1978-cyber/Suture/releases/tag/v1.5.1 Five-minute field test: https://github.com/matthewjameswatkins1978-cyber/Suture/blob/main/FIELD_TESTING.md
我是开发者,这是我的项目。实现和测试的部分过程有 AI 辅助;我为架构、集成和发布负责。具体的破坏性反馈比一个 star 更有价值。