DoltLite Beta 发布:基于 SQLite 的 Git 式版本控制,由约 2000 个智能体 PR 构建

HN I Built AI Coding 2026-09-01T23:40:19.132472

DoltLite 是 SQLite 的一个分支,通过替换底层存储引擎实现 Git 风格的版本控制功能。这个项目发布五个月后正式进入 Beta,核心承诺包括存储格式稳定、SQL 兼容性完整和保护本地与远程版本控制能力。它也证明了一件事:由智能体协作完成真实工程,已经具备可行性。

DoltLite Logo

DoltLite 在发布五个月后,迎来了 0.50.0 版本,正式进入 Beta 阶段。这个项目最初只是 DoltHub 团队的一个“玩票”实验:想找一个真实问题,用来测试 Steve Yegge 开发的智能体编排器 Gas Town。于是他们把目光落在 SQLite 上——希望通过一组智能体,构建 Dolt 的嵌入式版本。

用 C 或 Rust 重写 Dolt 的存储引擎,对团队来说成本太高,SQLite 则提供了现成的 SQL 层。大约 2000 个 pull request 之后,DoltLite 走进了 Beta。对智能体编程来说,这是一个相当有说服力的结果。

DoltLite 是什么

DoltLite 是 SQLite 的一个分支。B-tree 层以上的所有内容——SQL 解析器、分析器、文件系统交互、测试框架——都直接沿用 SQLite 原版。

区别在存储层。DoltLite 把 B-tree 替换成了基于 Prolly Tree 的实现,底层由单一的文件块存储(chunk store)支撑。Prolly Tree 本质上是一种内容寻址的 B-tree,正是它为所有 Dolt 产品的版本控制功能提供动力。简单说:换成这套存储后,SQLite 本身不需要改动,就能获得 Git 一样的版本控制能力。

因此,开发者可以在一个 SQLite 软件包内,获得 Dolt 和 Git 的版本控制特性。比如给 SQLite 加分支、合并、diff;用 Git 风格的 push、pull、clone、fetch 来同步数据库;甚至把 DoltHub 当作远程同步后端使用。

Beta 意味着什么

进入 Beta 阶段,DoltLite 给出了四项明确的承诺:

  1. 存储格式稳定
  2. SQL 兼容性可靠
  3. 版本控制功能完整
  4. 生产级性能

从实际反馈来看,DoltLite 在功能和稳定性上都获得了不错评价。项目不仅全部通过了 SQLite 自带的测试体系,还额外通过了 Dolt 自建的一组对拍(oracle)测试。对希望尝试的开发者来说,它已经可以放心上手。

存储格式稳定

开发过程中,用户抱怨最多的是存储格式频繁变更。这种改动不向后兼容,用户要么固定在某个旧版本上,要么手动导出再重新导入数据。

走到 Beta 之前,存储格式前后改了 12 次。当前格式已经沿用了 57 个版本,时间超过三个月,看起来是能够长期稳定的一版。官方现在明确承诺:之后即使出现破坏性变更,也会提供受支持的迁移路径。这消除了采用 DoltLite 时最担心的一项风险。

SQL 兼容性

SQLite 的 SQL 层经过了非常充分的测试,DoltLite 也继承了这一点。

DoltLite 100% 通过了 sqllogictest——这套测试包含 580 万条复杂查询。由于查询层与 SQLite 完全相同,这个结果在预期之内。

此外,SQLite 还附带一套基于 TCL 编写的验收测试,共 892,277 个用例。DoltLite 通过了其中 99.46%,已知差异有 4,809 个,且每个差异都标注了明确原因:

  1. 表按主键(primary key)组织,而不是按 rowid 组织。部分测试直接检查 rowid,因此出现差异。
  2. 存储单位是块(chunk)而不是页(page)。部分测试直接检查页结构,因此出现差异。
  3. 没有 WAL 或 journal 附属文件。相关测试直接跳过。

对 SQLite 用户来说,上手 DoltLite 基本没有门槛:用法和 SQLite 一致,只是多了版本控制相关函数。

完整的版本控制功能

DoltLite 已实现 Dolt 核心的 Git 风格版本控制能力。

本地操作完整支持:分支(branch)、合并(merge)、差异(diff)、变基(rebase)、拣选(cherry-pick)、重置(reset)等。远程操作同样可用:可以从自定义远程仓库或 DoltHub 上进行 push、pull、clone 和 fetch。

关键要点

你甚至可以直接使用完整的 Dolt Workbench 图形界面,它内置了智能体(agent)模式。你可以让智能体直接在你的 SQLite 数据库上执行操作,一旦它做出错误改动,执行 dolt_reset('--hard') 即可一键回滚,恢复原状。

生产性能

在性能方面,DoltLite 拥有微秒级的嵌入式数据库响应速度,但版本控制机制会给写入操作带来额外的开销;读取性能则与 SQLite 基本持平。

DoltLite 项目在 GitHub 上每晚都会发布一份性能报告,使用标准 sysbench 基准测试对比 DoltLite 与 SQLite 的表现。根据最新一晚的报告:

其中最大的性能差异出现在小体积的自动提交(autocommit)写入上:DoltLite 的耗时约为 SQLite 的 3.1 倍。因此,对性能敏感的 DoltLite 场景,应尽量采用批量写入。不过即便如此,自动提交的单次写入也仍然处于亚毫秒级:在小型 GitHub runner 上,SQLite 单次写入约需 125 微秒,DoltLite 约需 400 微秒。

结论

关键要点

查看原文