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 存储模型之上的新工具或抽象,而不是克隆其整个实现。