← 返回 Siami 首頁

DoltLite 進入 Beta:2,000 個 AI Agent PR 合力打造的 Git 版 SQLite

▲ 47 💬 31
DoltLite 進入 Beta:2,000 個 AI Agent PR 合力打造的 Git 版 SQLite

編按:本文綜合整理自 DoltHub Blog — DoltLite Beta 及 GitHub dolthub/doltlite,並加入 Siami 編輯部觀點與分析。

DoltLite 是什麼?

DoltLite 是 SQLite 的一個分支(fork)。從 SQL parser、query analyzer 到檔案系統介面層,全部沿用 SQLite 上游原版;唯一被替換的,是 B-tree 儲存層——改由 Dolt 既有的 Prolly Tree(內容定址的 B-tree)搭配單檔 chunk store 撐起。

簡單說,這是一個「SQLite + Git」的合體:你繼續寫 SQL,但底層每筆資料都自帶版本資訊,可以像 Git 一樣分支、合併、diff、push、pull、clone。

相較於 Dolt 過去得在版本控制儲存層上面重新實作整個 SQL engine(吃重且艱難),DoltLite 反過來利用 SQLite 已有的 SQL 引擎,只改寫儲存層——只需新增約 18,000 行 C 程式碼。

  • 本地版控:分支、合併、diff、rebase、cherry-pick、reset 全套支援
  • 遠端同步:push / pull / clone / fetch,後端可以是 DoltHub 或自架 remote
  • GUI:附完整的 Dolt Workbench(含 agent 模式,能讓 AI agent 對 SQLite 操作後用 dolt_reset('--hard') 救回)

五個月衝到 Beta:2,000 個 PR 是怎麼來的?

這個專案最初的動機非常隨性:作者 Tim Sehn 想找一個「不是玩具等級的真實問題」來測試 Steve Yegge 的 AI agent 編排工具 Gas Town。結果這場實驗,催生出一個資料庫產品。

幾個關鍵數字:

  • 從啟動到 Beta:約 2,000 個 pull request
  • 上游 SQLite 原始 C 程式碼被修改:只有 8 行
  • 全新 C 程式碼量:約 18,000 行
  • Beta 前儲存格式變更次數:12 次
  • 穩定版格式已運行:57 個 release / 超過 3 個月

為什麼 agents 能在 SQLite 這種「工程量怪物」上做出有意義的進展?DoltHub 自己整理的條件是:

  1. 已有 Dolt 跟 SQLite 兩個成熟實作當參照
  2. SQLite 的介面剛好能乾淨地置換 Proly Tree
  3. SQLite 內建完整測試套件,可直接當 agent 的 oracle
  4. SQLite 程式碼規模適中,不會炸 context window
  5. 作者本身就是 Dolt 領域的 deep expert
  6. 預算幾乎無限

Beta 代表什麼?

DoltLite 進入 Beta 並非只是行銷詞。它的意義落在四個具體面向:

  • 儲存格式穩定:未來 breaking change 會提供遷移路徑,使用者不必擔心升級爆檔
  • SQL 相容性:通過 100% 的 sqllogictest(580 萬條複雜查詢);SQLite 的 892,277 條 TCL 接受度測試通過 99.46%,剩餘 4,809 條差異皆有明確原因
  • 完整版控:上述 Git 式操作皆可用,並能與 DoltHub 同步
  • 生產級效能:每晚自動跑 sysbench 風格基準並發佈到 GitHub

效能數字(相對 SQLite):

  • 記憶體模式:讀慢 10%、寫慢 60%
  • 檔案模式:讀幾乎打平、批次寫慢 10%
  • 小量 autocommit 寫入:慢 3.1 倍(仍維持微秒級,~125µs vs ~400µs)

換句話說:日常 query 幾乎感覺不到差異;如果你會做大量小寫入,記得 batch 起來。

🚨 為什麼這件事重要

DoltLite 的意義遠超過「多了一個 SQLite 變體」。它是一次對 AI agent 工程能力的公開壓力測試,而且測出來的結果出人意料地正面。

過去兩年業界對 AI 寫程式最大的質疑是:context window 撐不住大型 codebase、超過幾千行的修改就會品質雪崩。DoltLite 正好是這種懷疑的反證樣本:

  • 2,000 個 PR、18,000 行新 C 程式碼,全由 agent 在「無限預算 + 專家指導 + 既有測試 oracle」的條件下產出
  • 上游 SQLite 僅被動到 8 行,代表 agent 對「不要亂碰 upstream」有紀律
  • 最終通過 SQLite 99.46% 接受度測試 + 自家 1,935 條 version-control oracle 測試
  • 沒有出現「能跑但不能 production 用」的傳統 AI 程式碼樣態

更值得注意的是,作者 Tim Sehn 並非靠 agent 取代工程師,而是把 agent 當實習生大軍——Oracle 比較、sysbench 跑分、PR 審查仍由人把關。這也回應了 Steve Yegge 在 Gas Town 推廣時的核心論點:「未來的瓶頸不是 code generation,而是 review 與 orchestration。」

對台灣與中文開發圈,DoltLite 帶來兩個直接可用的價值:

  1. Local-first 應用:想做離線優先的 App,但苦於 SQLite 沒有版本機制?DoltLite 直接補上
  2. Agent 工作流可審計:AI 改了你的資料庫後想 rollback?dolt_reset --hard 就能回到上一個 commit

🚨 數據解讀與質疑

這裡有幾個值得保留的數字與懷疑:

  • 2,000 PR / 5 個月:換算下來每天約 13 個 PR。這個量級需要相當成熟的 agent orchestration(Gas Town 的「Ralph loop」與 multi-agent 編排機制是底層),不是單純 chatGPT 寫 code 能達到的量
  • 12 次格式變更才穩定:說明早期資料遷移成本高,現在用 v12 的使用者風險已大幅降低
  • 小寫入慢 3.1 倍:對 IoT 與即時系統是隱藏成本,DoltHub 自己建議盡量 batch
  • 8 行上游改動:這是「乾淨介面 + 嚴格紀律」的結果,換成其他專案未必能複製

仍待觀察的風險:

  • 儲存格式再變動的承諾:目前是「會給 migration path」,但沒有 SLA
  • multi-writer 場景:DoltLite 用 graph lock sidecar 序列化寫入者,多進程併發寫入需要仔細設計(不是 SQLite 那種「隨便多執行緒都行」)
  • gas town 依賴:agent 大軍的協作框架本身仍早期,框架一改 DoltLite 的維護成本就會改變

怎麼試?

對嵌入式資料庫需要 audit 與 rollback 的團隊、想把 SQLite 跟 AI agent 串起來的前端工程師、或單純對「agent 能撐多大的工程」感到好奇的讀者,這是一個值得花一個下午親手跑一遍的專案。