Grit:使用 agents 以 Rust 重写 Git
动机与宣称目标
- 该项目是从零开始的 Git Rust 实现,主要由 LLM “agents” 驱动。
- 核心目标:一个功能完备、可重入、可链接的 Git 库(尤其是网络/凭证部分),供基于 Git 的 GUI 和其他 VCS 前端等工具使用。
- 强调它不是要作为 CLI 取代传统 Git,而是作为一个库来填补 Git/libgit2/gitoxide 不完整或不适用的场景。
技术状态与对比
- 据称可通过约 99.3% 的上游 Git 测试套件;剩余测试被明确跳过(邮件、i18n、SVN/Perforce 导入器、部分 bitmap/midx 等)。
- 作者本人承认,目前与 Git 相比更慢、更重、可扩展性更差,而且大概率有 bug;据说传统 Git 在除“作为可链接库”之外的所有方面都更好。
- 二进制体积比 Git 大得多,主要是由于 Rust 生态(CLI 解析、依赖)。库子集更小,但仍然不算小。
- 反复与 gitoxide 和 libgit2 对比,这两者本来就提供库,但缺少完整的功能/网络对等性。
使用场景与关注点
- 潜在用途:在 Rust 应用中嵌入 Git 网络/凭证、定制 Git 服务器/客户端、面向浏览器/边缘环境的 WASM 构建。
- 一些人认为这是一个有趣的实验,或是对“agentic”开发以及大规模 LLM 辅助移植的概念验证。
- 也有人质疑,除了扩展 gitoxide/libgit2 之外,是否真的存在什么实际利基。
成本、ROI 与可行性
- token 花费估计约为 $8k–$15k。
- 很多评论者认为这类 ROI 很差:一个缓慢、未完成、未经验证的工具,对比久经考验的 Git,而现有 Rust 替代方案已经存在。
- 也有人认为,这主要证明了 AI 可以“让测试通过”,但并不能证明其在真实世界使用中的稳健性。
许可、版权与伦理
- 主要争议:原始 Git 是 GPL;该项目采用 MIT 许可证发布。
- LLM agents 被提供了 Git 的源代码和测试作为“真相来源”,而不仅仅是黑盒行为。批评者称这是剽窃、“license washing”,或对 copyleft 代码库进行 “Rustwashing”。
- 围绕法律问题展开了冗长且分歧很大的讨论:
- 一方认为:用 Rust 重新实现、结构不同且相似度指标较低,意味着它不是衍生作品;把 GPL 测试当作行为规格来使用是被允许的;GPL 不会自动“感染”独立实现。
- 另一方认为:直接把 GPL 代码喂给 LLM,并要求其生成功能等价实现,类似翻译/改编,因此结果应继承 GPL;LLM 应被视为一种转换工具,类似编译器/转译器,而不是魔法般的许可证擦除器。
- 还有关于测试套件本身是否会使输出成为衍生作品,以及 LLM 输出本身是否可受版权保护等额外争论。
- 从伦理上,很多人认为这削弱了 GPL 的意图,把社区价值提取到更宽松、也更利于企业的许可证之下,尽管从法律上也许可以争辩。
Rust 重写与 LLM 使用
- 对“重写成 Rust”的文化有更广泛的反感,尤其是把 GPL 项目重写成 MIT/Apache 的做法。
- 一些人认为 Rust 在关键基础设施(如 Git、nginx)中对内存安全很有价值;另一些人则认为主要问题在逻辑而不在内存,并且 AI 驱动的重写可能引入比它们消除得更多的 bug。
- 对在安全敏感组件中使用“vibecoded”或“slop”式 LLM 生成代码有强烈反对。
- 少数人对这种实验性、agentic 的方法以及用 LLM 推动移植表示热情,但许多人觉得新鲜感已经消退,这类项目现在需要明确的、面向用户的收益。
提出的替代方案
- 与其整体重写,不如:
- 扩展 gitoxide 或 libgit2,尤其是网络/凭证部分,必要时可有针对性地借助 LLM。
- 先从 Git 的代码/测试/文档中提取并形式化行为规范,然后基于这个“契约”重新实现,以避免只会“改到测试通过”,并降低成本。
- 把重点放在 Git 存储模型之上的新工具或抽象,而不是克隆其整个实现。