<!-- title: 重写经典：8个硬核开源造轮子 -->

# 重写经典：8个硬核开源造轮子

**概述**：本期换了个挖掘思路——不再追热点赛道，而是盯住一类“硬核重写”项目：有一批开发者不满于 Git 的工作流、SQLite 的同步架构、Postgres 的笨重部署，干脆从内核层把经典软件重造一遍。这类项目代码密度高、设计文档一流，是学习系统设计的活教材，也有不少能直接接上 local-first、边缘计算等商业叙事。本期共 8 个仓库：版本控制 3 个（jj、GitButler、Sapling）、数据库 4 个（Limbo、PGlite、sqlite-vec、Harlequin）、数据管道 1 个（trdsql），其中 Harlequin 和 trdsql 是典型的数千星级小而美。文中 Star 数为成稿时量级估算，以仓库主页实时数据为准。

---

## 1. jj-vcs/jj | 约 1.5 万+ Star | 活跃更新

**一句话定位**：一个与 Git 仓库完全兼容、但把“提交”这个概念彻底重新设计的版本控制系统，解决的是“Git 太难用但大家都忍着”这个老问题。

作者 Martin von Zweigbergk 是版本控制领域的老兵（曾深度参与 Mercurial 开发）。jj 最激进的设计是：**没有暂存区**。你做的每次修改自动形成一个提交，工作副本本身就是一次 commit——想“部分提交”？用 `jj split` 交互式拆分即可，不存在 `git add -p` 那套心智负担。每个提交有一个独立的 change-id，amend、rebase 之后它都不变，历史漂移不再是噩梦。冲突被设计成一等公民：产生冲突的提交可以正常提交和推送，之后再用 `jj resolve` 处理，不会卡住整条流水线。对个人用户的杀手锏是 `jj undo`——几乎所有操作都能撤销。它可以直接 colocate 在现有 Git 仓库上，Git 命令和 jj 命令操作同一个仓库互不干扰，迁移成本几乎为零。

**上手难度**：⭐⭐⭐⭐（概念重构需要时间，但官方教程写得极好）

**适用人群**：被 Git 的 index、rebase、reflog 折磨过的所有开发者；做类 Git 产品想要底层内核的团队。二次开发方向：基于 jj 做可视化客户端、AI 自动提交整理器。

## 2. gitbutlerapp/gitbutler | 约 1.5 万 Star | 活跃更新

**一句话定位**：GitHub 联合创始人 Scott Chacon 出品的新一代 Git 桌面客户端，用“虚拟分支”解决多任务并行开发时分支切来切去的痛苦。

传统 Git 一次只能检出一个分支，改到一半来个线上 bug 就得 stash 折腾半天。GitButler 的虚拟分支（Virtual Branches）允许你在**同一个工作目录里同时维护多个分支**，hunk 级别地决定每处修改归哪个分支，随时分别推送 PR。这实际上是客户端层的“把 Git 操作模型重写一遍”。技术栈是 Rust + Tauri，前端 TypeScript，桌面端资源占用远低于 Electron 系。内置 AI 生成 commit message、分支健康检查等辅助功能。它是本期唯一已经商业化运营的项目（免费+付费团队版），其定价页面和功能矩阵本身就是一份“Git 工具如何变现”的参考答案。对于想研究 Tauri 大型应用架构的人，这个仓库的代码组织也值得通读。

**上手难度**：⭐⭐（图形界面，装上即用）

**适用人群**：经常同时开多条工作线的全栈/应用开发者；想做开发者工具商业化的人（研究其免费/付费分界线的绝佳样本）。

## 3. facebook/sapling | 约 6 千 Star | 活跃更新

**一句话定位**：Meta 开源、支撑 Instagram 级别巨型 monorepo 的可扩展版本控制系统，是 jj 的“工业界表亲”。

如果说 jj 是社区对小团队的回答，Sapling 就是超大组织的答案：Facebook 把内部用了多年的 Mercurial 定制版（Sapling SCM）开源，其客户端 `sl` 命令兼容操作 Git 仓库，服务端则专为百万级文件、千万级提交的 monorepo 设计——部分克隆、按需拉取、智能日志（Smartlog，只显示和你相关的历史）。它和 jj 的关系很有趣：jj 的作者与 Sapling 团队长期互相借鉴，两者在“冲突一等公民”“无暂存区”等理念上高度趋同，是观察“Git 之后版本控制该怎么演化”的一对活标本。缺点是文档偏工程化、社区生态远小于 jj，更适合作为 monorepo 方案的调研对象而非日常替换。

**上手难度**：⭐⭐⭐⭐⭐（面向大型组织架构，个人收益有限）

**适用人群**：正在规划 monorepo 的平台工程团队；研究大规模代码管理的技术管理者。

## 4. tursodatabase/limbo | 数千至万级 Star | 增长迅猛

**一句话定位**：Turso 团队用 Rust 从零重写的 SQLite 兼容引擎，目标是“SQLite 的接口，云原生的心脏”。

SQLite 是世界上部署最广的数据库，但它诞生于 2000 年，同步 IO、单写入者、纯 C。Turso（EdgeDB 之外嵌入式数据库商业化的明星公司）决定正面重写：Limbo 用 Rust 实现，原生 async，底层可选 io_uring，还编译到 WASM 直接跑在浏览器里。最有含金量的是其工程方法论：为了敢宣称“兼容 SQLite”，团队引入确定性仿真测试（DST）大规模 fuzz 自身行为与 SQLite 的一致性，并把过程写成了一系列高质量技术博客——即使你不打算用它，这套“如何安全重写一个 25 年历史的数据库”的思路也非常值得学习。项目迭代极快，API 稳定性请以官方文档为准。

**上手难度**：⭐⭐⭐⭐（开发期项目，适合尝鲜与跟进）

**适用人群**：Rust 系统编程学习者、边缘数据库/嵌入式存储方向工程师。商业逻辑已被 Turso 自身验证：开源内核 + 云服务收费。

## 5. electric-sql/pglite | 约 1 万+ Star | 活跃更新

**一句话定位**：把整个 PostgreSQL 编译成约 3MB 的 WASM，塞进浏览器、Node 和边缘运行时的“口袋 Postgres”。

Limbo 是重写，PGlite 则是“搬运”：ElectricSQL 团队把 Postgres C 代码编译为 WASM，让你在前端代码里 `new PGlite()` 就拥有一颗真 Postgres——不是 SQLite 也不是玩具，支持完整的 SQL 方言、扩展（包括 pgvector 向量检索），数据可持久化到 IndexedDB 或本地文件。它直接催生了一类新应用：纯前端部署、无需任何服务端数据库的 AI 对话产品（向量检索在本地完成）、离线优先的表单与笔记应用。配合 ElectricSQL 主产品的同步引擎，可以做成 local-first 架构里“本地真 Postgres + 后台异步同步”的方案。对独立开发者来说，这几乎是无服务器成本上线数据驱动应用的捷径。

**上手难度**：⭐⭐⭐（前端工程集成需要点功底，API 本身很简洁）

**适用人群**：前端全栈、AI 应用开发者、local-first 产品探索者。变现方向：离线优先 SaaS、隐私敏感的本地数据处理工具。

## 6. asg017/sqlite-vec | 约 5 千 Star | 活跃更新

**一句话定位**：零依赖纯 C 的 SQLite 向量检索扩展，让“任何能跑 SQLite 的地方”都能做 RAG——从树莓派到浏览器。

作者 Alex Garcia 是 SQLite 扩展社区的标志性人物。sqlite-vec 是其 sqlite-vss 的继任者，吸取了前任依赖 Faiss、难以编译的教训：这次的答案是**纯 C、零依赖、单文件**，`sqlite3` CLI 一行 `.load` 即可加载，Python、Node、Rust、乃至浏览器里的 sql.js 都能用。提供 `vec0` 虚拟表和 `vec_distance_L2`、`vec_distance_cosine` 等函数，支持 float32、int8 与二进制量化，搜索是暴力精确检索——它坦率地不做 ANN 索引，目标场景就是百万级以下的本地向量库。这恰好覆盖了绝大多数个人 RAG、设备端 AI 的真实规模。如果你的产品要“离线也能查知识库”，这个几百 KB 的扩展可能是最省事的答案。

**上手难度**：⭐⭐（会写 SQL 就会用）

**适用人群**：本地 RAG 工具开发者、设备端 AI 工程师。二次开发方向：包一层 ANN 索引或做成各语言 ORM 插件均有生态空位。

## 7. tconbeer/harlequin | 约 4 千 Star | 活跃更新

**一句话定位**：一条 `pip install harlequin` 就能装好的终端 SQL IDE，DuckDB/SQLite 用户的数据工作台。

这是本期最典型的小而美：作者 Ted Conbeer 基于 Textual 框架做的 TUI 应用，打开就是三栏布局——库表树、编辑器、结果网格，支持多查询分 Tab 缓存结果、查询历史、导出 CSV/Parquet。默认内置 DuckDB 和 SQLite 适配器，社区还提供 MySQL、Postgres 等适配器插件，架构上把“连接器”做成可插拔生态。对于经常在终端里对着 DuckDB 分析数据文件的人来说，它填补了“psql 太素、DBeaver 太重”之间的空白，启动不到一秒。仓库代码规模不大、结构清晰，是学习 Textual 构建 TUI 应用的优秀参考实现，也证明了 Textual 生态完全可以承载生产力工具级别的作品。

**上手难度**：⭐（会用 vim 基本操作即可）

**适用人群**：数据分析师、终端原教旨主义者、Textual/TUI 开发学习者。

## 8. noborus/trdsql | 约 4 千 Star | 持续维护

**一句话定位**：日本开发者 noborus 写的小工具——用 SQL 直接查询 CSV/JSON/LTSV 文件，一行命令完成数据切片。

```bash
trdsql -ih "SELECT name, price FROM test.csv WHERE price > 100"
```

装好就能对任意 CSV 写 SQL，自动推断列类型，支持 JSON、LTSV、TBLN 输入，结果可导出为 CSV/JSON/Markdown/At 类表格。更进阶的玩法是它建立在 Go 的 `database/sql` 之上：除了内置 SQLite 引擎，还能挂载 PostgreSQL/MySQL 连接，于是你可以“从 CSV 读、写进 Postgres”，或跨两个数据库做 join——轻量 ETL 就这么有了。没有 Web 界面、没有配置文件，一个二进制文件走天下，正是 Unix 哲学的现代延续。相比 q、csvkit 等同类老工具，trdsql 的优势在引擎可替换和输出格式的丰富度。

**上手难度**：⭐（会 SELECT 就能用）

**适用人群**：运维、后端、所有“拿到个 CSV 想赶紧查一下”的人。二次开发方向：嵌进 Go 服务做文件数据导入预处理层。

---

## 本期横向对比

| 仓库 | 领域 | Star 量级 | 上手难度 | 最佳场景 |
|------|------|-----------|----------|----------|
| jj-vcs/jj | 版本控制 | ~1.5万+ | ⭐⭐⭐⭐ | 日常 Git 替代 |
| gitbutlerapp/gitbutler | 版本控制 | ~1.5万 | ⭐⭐ | 多分支并行开发 |
| facebook/sapling | 版本控制 | ~6千 | ⭐⭐⭐⭐⭐ | 超大 monorepo |
| tursodatabase/limbo | 数据库内核 | 数千~万级 | ⭐⭐⭐⭐ | 边缘/嵌入式存储 |
| electric-sql/pglite | 数据库 | ~1万+ | ⭐⭐⭐ | 纯前端数据库应用 |
| asg017/sqlite-vec | 数据库扩展 | ~5千 | ⭐⭐ | 本地 RAG |
| tconbeer/harlequin | 数据工具 | ~4千 | ⭐ | 终端 SQL 分析 |
| noborus/trdsql | 数据管道 | ~4千 | ⭐ | CSV/JSON 即席查询 |

## 本期项目图谱

```mermaid
mindmap
  root((重写经典))
    版本控制
      jj 无暂存区 可撤销
      GitButler 虚拟分支
      Sapling 巨型monorepo
    数据库内核
      Limbo Rust重写SQLite
      PGlite 浏览器里的Postgres
      sqlite-vec 本地向量检索
    即席数据工具
      Harlequin 终端SQL IDE
      trdsql 用SQL查CSV
```

## 本期之最

- **最值得立即尝试：tconbeer/harlequin** —— 一条 pip 命令，终端里获得完整的 SQL IDE，零迁移成本，今天就能用上。
- **最有商业潜力：electric-sql/pglite** —— “浏览器里的真 Postgres”打开了一整类无服务器、离线优先产品的想象空间，且背后已有成熟的商业化团队在推进。
- **最被低估：noborus/trdsql** —— 没有炫酷叙事，但每个和数据文件打交道的人第一周就会离不开它；它也是“小工具如何靠口碑活十年”的范本。

这一期项目的共同气质是：不追风口，而是盯着那些“所有人都觉得该有人重写、却一直没人敢动手”的底层设施。对想深入系统编程的人来说，这批仓库的 issue 区、设计文档和 RFC 往往比代码本身更宝贵。

## 参考来源

1. [jj-vcs/jj — GitHub 仓库](https://github.com/jj-vcs/jj) — jujutsu 官方仓库及 [官方文档](https://jj-vcs.github.io/jj/)，含设计理念与 Git 兼容说明
2. [gitbutlerapp/gitbutler — GitHub 仓库](https://github.com/gitbutlerapp/gitbutler) — GitButler 客户端源码，官网 gitbutler.com 有虚拟分支白皮书
3. [facebook/sapling — GitHub 仓库](https://github.com/facebook/sapling) — Sapling SCM 官方仓库与架构文档
4. [tursodatabase/limbo — GitHub 仓库](https://github.com/tursodatabase/limbo) — Turso 的 SQLite 重写项目，技术博客系列见 Turso 官网
5. [electric-sql/pglite — GitHub 仓库](https://github.com/electric-sql/pglite) — WASM 版 Postgres，官网 pglite.dev
6. [asg017/sqlite-vec — GitHub 仓库](https://github.com/asg017/sqlite-vec) — SQLite 向量扩展，作者博客有设计长文
7. [tconbeer/harlequin — GitHub 仓库](https://github.com/tconbeer/harlequin) — 终端 SQL IDE，文档见 harlequin.sh
8. [noborus/trdsql — GitHub 仓库](https://github.com/noborus/trdsql) — SQL 查询 CSV/JSON 命令行工具，README 含丰富示例

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
