Ratchet:一个只能前进的AI交付循环
Praveen Vijayan 介绍了 Ratchet,一种旨在防止倒退的 AI 交付工作流程。它基于 GitHub 构建,限制编码代理只能向前推进工作,最终合并始终由人工审批。Ratchet 是开源的,与代理无关,注重可审计性和安全性。
近年来,AI 编码代理的能力不断提升,但如何在生产环境中安全地应用它们,仍是一个挑战。许多团队发现,全自动方案要么偏离预期,要么在测试失败时停滞不前,甚至直接合并未审查的代码。Praveen Vijayan 在金融行业的工作经历让他深刻意识到这些问题的严重性。为此,他创建了 Ratchet——一个强制单向交付的工作流系统。
Ratchet 的核心思想很简单:只允许工作向前推进,绝不允许后退。它模拟了棘轮的工作原理,确保每次操作都向最终交付靠近。系统基于 GitHub 构建,利用 issue、分支、标签、Actions 和 pull request 等原生功能,无需额外的数据库或服务。任何一步都能在仓库中直观查看。
工作流分为几个阶段:代理从队列中选取任务,通过创建分支自动认领;接着进行小规模编码,每次提交都遵循仓库风格;随后运行项目自身的测试和构建,两次机会后仍未通过则退回队列并附说明;成功通过则创建 pull request,由人工审查。合并后,系统自动更新任务状态,并重新填充队列。
与 Devin 或 Copilot 不同,Ratchet 不绑定特定代理。它支持任何能运行命令行和解析 markdown 文件的代理。这意味着团队可以自由选择最适合的工具,而不必担心被锁定。此外,Ratchet 强调可审计性:所有动作都是真实的 GitHub 事件,带有时间戳和操作者信息,这在高合规性要求的环境中至关重要。
Ratchet 还包含一个记忆系统。项目知识存储在仓库中的两个 markdown 文件中:一个仅供代理读取,另一个允许代理建议修改,但必须通过 pull request 审查。这样,代理的“学习”过程完全透明,团队可以审核每一项变更。避免了黑盒式的记忆存储,让信任建立在可读的代码之上。
目前 Ratchet 以 MIT 许可证开源,作为 GitHub 模板发布。初始化只需运行 /ratchet-init,然后通过 /ratchet-plan 制定计划、/ratchet-next 推进任务。它默认只在本地运行,使用开发者的现有 GitHub 账号,不增加额外安全风险。团队版正在开发中,当前版本主要针对单独开发者设计。
总之,Ratchet 提供了一种安全、可控的 AI 交付方案。它让代理承担重复性的编码和测试工作,而将关键决策保留给人类。这种设计不仅提高了效率,还降低了风险,特别适合对代码质量和安全性有严格要求的团队。