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

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 给出了四项明确的承诺:
- 存储格式稳定
- SQL 兼容性可靠
- 版本控制功能完整
- 生产级性能
从实际反馈来看,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 个,且每个差异都标注了明确原因:
- 表按主键(primary key)组织,而不是按 rowid 组织。部分测试直接检查 rowid,因此出现差异。
- 存储单位是块(chunk)而不是页(page)。部分测试直接检查页结构,因此出现差异。
- 没有 WAL 或 journal 附属文件。相关测试直接跳过。
对 SQLite 用户来说,上手 DoltLite 基本没有门槛:用法和 SQLite 一致,只是多了版本控制相关函数。
完整的版本控制功能
DoltLite 已实现 Dolt 核心的 Git 风格版本控制能力。
本地操作完整支持:分支(branch)、合并(merge)、差异(diff)、变基(rebase)、拣选(cherry-pick)、重置(reset)等。远程操作同样可用:可以从自定义远程仓库或 DoltHub 上进行 push、pull、clone 和 fetch。
关键要点
- SQLite 换核不改面:DoltLite 保留 SQLite 的 SQL 层,只替换 B-tree 存储层,就获得了 Git 式版本控制能力。
- Beta 承诺明确:存储格式稳定、SQL 兼容性高、版本控制功能完整,是进入 Beta 的四个前提。
- 兼容性数据扎实:580 万条 sqllogictest 100% 通过;TCL 验收测试通过率 99.46%,差异均有明确原因。
- 版本控制开箱即用:本地(branch、merge、diff、cherry-pick 等)和远程(push、pull、clone、fetch)功能都已可用。
- 智能体工程能力验证:约 2000 个智能体 PR 构建出这个可用的数据库项目,为 AI 编程的实际产出提供了一个有分量的样本。
你甚至可以直接使用完整的 Dolt Workbench 图形界面,它内置了智能体(agent)模式。你可以让智能体直接在你的 SQLite 数据库上执行操作,一旦它做出错误改动,执行 dolt_reset('--hard') 即可一键回滚,恢复原状。
生产性能
在性能方面,DoltLite 拥有微秒级的嵌入式数据库响应速度,但版本控制机制会给写入操作带来额外的开销;读取性能则与 SQLite 基本持平。
DoltLite 项目在 GitHub 上每晚都会发布一份性能报告,使用标准 sysbench 基准测试对比 DoltLite 与 SQLite 的表现。根据最新一晚的报告:
- 内存模式下,DoltLite 的读取速度比 SQLite 慢约 10%,写入速度慢约 60%;
- 文件存储模式下,读取性能基本持平,批量写入慢约 10%。
其中最大的性能差异出现在小体积的自动提交(autocommit)写入上:DoltLite 的耗时约为 SQLite 的 3.1 倍。因此,对性能敏感的 DoltLite 场景,应尽量采用批量写入。不过即便如此,自动提交的单次写入也仍然处于亚毫秒级:在小型 GitHub runner 上,SQLite 单次写入约需 125 微秒,DoltLite 约需 400 微秒。