<!-- title: Docker创始人，把CI写成了代码 -->

# 本期思路：榜单之外的工程底座

在动笔前，我把本栏目过去近五个月的几千条已拆解仓库档案完整翻了一遍：n8n、Supabase、Vaultwarden、Immich、PocketBase、D2 竞品 Mermaid 的各路画图工具、终端里的 atuin 和 kanata……几乎所有叫得上名字的「变现型开源项目」都已被这个栏目或全站其他栏目拆过。所以第 5 轮换了挖法：不追当周新星榜，专找**长期服务真实工作流、却从没被当成主角拆过**的「工程底座」——它们不蹭 AI 热点，但被全球团队天天用在生产里，商业路径清晰，或本身就是小而美的教科书样本。

数据说明：以下 Star 数均为写作时的**量级描述**，精确数字以各仓库页面实时数据为准；维护状态为长期观察的定性判断。

---

## 1. Dagger：把 CI/CD 从「配 YAML」变回「写代码」

**仓库：[dagger/dagger](https://github.com/dagger/dagger)** ｜ Star：万级 ｜ 维护：活跃

- **一句话定位**：Docker 创始人 Solomon Hykes 的第二次创业——让流水线变成普通代码函数，跑在容器里。
- **解决什么痛点**：GitHub Actions、Jenkins、GitLab CI 的流水线本质是「配置拼图」：没法复用、没法单元测试、本地跑不起来，改一行要 push 一次等十分钟验证。
- **核心拆解**：Dagger 的抽象是 Dagger Function——用 Go、Python 或 TypeScript 写一个普通函数，参数和返回值是容器、目录、 secrets 这几种一等公民类型；引擎把函数调用链编排成 DAG，逐步缓存。关键是**同一份代码**可以在笔记本上 `dagger call` 直接调试，进 CI 只是换个执行环境。有意思的细节：项目 2019 年最早一版是用 Clojure 写的，后来整体迁到 Go；近一年的版本还把 LLM 调用做成了流水线里的普通节点（功能演进较快，以官方文档为准）。
- **上手难度**：⭐⭐⭐（需要一门编程语言 + 容器基础）
- **适用人群与变现**：平台工程师、想自建交付底座的创业团队。官方 Dagger Cloud 卖流水线可观测性——「把配置的坑变成代码的自由，再收平台费」，是 DevTool 创业的标准剧本。

## 2. Nushell：管道里流的不是文本，是表格

**仓库：[nushell/nushell](https://github.com/nushell/nushell)** ｜ Star：数万级 ｜ 维护：活跃

- **一句话定位**：用 Rust 重写整个 Shell 的数据模型——每条命令输出结构化表格，而不是一串字符串。
- **解决什么痛点**：Unix 管道传递的是纯文本，`grep`、`awk`、`sed` 三件套全靠猜格式，一列里带个空格脚本就崩。
- **核心拆解**：在 Nushell 里 `ls | where size > 10mb | sort-by modified` 是直接对**带类型的表格**做过滤排序；`open` 一个 json/yaml/toml/csv 文件自动解析成表；`from`/`to` 系列命令在几十种格式间互转，一行命令顶过去半页 shell 脚本。报错信息精确到列名，而不是 bash 那句著名的 `command not found`。作者 Jonathan Turner 是 Rust 社区老面孔，项目从 2019 年迭代至今，插件机制支持把任意工具接入管道。
- **上手难度**：⭐⭐⭐（思维要从「文本」切到「数据」，需要适应期）
- **适用人群与变现**：天天和数据文件打交道的工程师、运维；企业可以把它作为标准化 Shell 统一内部脚本。对教程作者和咨询者来说，「告别 awk 黑魔法」本身就是可卖的课程主题。

## 3. D2：架构图不用拖拽，用编译

**仓库：[terrastruct/d2](https://github.com/terrastruct/d2)** ｜ Star：万级出头 ｜ 维护：活跃

- **一句话定位**：一门把文本编译成架构图的声明式语言，Go 单二进制。
- **解决什么痛点**：draw.io 里拖三小时，评审时改一个框名全图重新对齐；图根本进不了 code review。
- **核心拆解**：写脚本、出 SVG：容器可以无限嵌套，内置序列图、SQL 表、类图语法；`sketch` 模式一键切换手绘风；`--watch` 起本地服务边改边预览。布局引擎可插拔——默认开源的 dagre，可换 ELK，官方自研的 TALA 是付费闭源。官网还提供在线 playground 直接试语法。
- **上手难度**：⭐⭐（会写缩进就能画）
- **适用人群与变现**：后端架构师、写技术方案和 RFC 的团队。Terrastruct 的打法是 open core 教科书：开源排版引擎获客，私有布局算法和编辑器订阅收钱——想模仿这个模式做「XX 即代码」的独立开发者值得抄作业。

## 4. presenterm：终端就是我的投影仪

**仓库：[mfontanini/presenterm](https://github.com/mfontanini/presenterm)** ｜ Star：数千级 ｜ 维护：活跃

- **一句话定位**：Markdown 直接在终端里渲染成幻灯片，单二进制 Rust 工具。
- **解决什么痛点**：SSH 到服务器上想给同事讲段代码，没有 GUI；写分享稿又在 Keynote 和 Markdown 之间来回搬运。
- **核心拆解**：一个 Markdown 文件就是一套 slide，支持分栏布局、代码高亮、自定义主题；最有意思的是它借 kitty、sixel 等图形协议**在终端里直接显示图片**，配合终端复用器远程演示毫无压力；新版本支持导出 PDF（依赖 typst 渲染，据 README）。作者响应 issue 出了名的快。
- **上手难度**：⭐⭐
- **适用人群**：开源作者（README 里的演示就是 slide）、技术播客主、一切生活在新起式终端里的人。变现弱但声望值拉满——这类工具是开源简历上最亮的一行。

## 5. git-cliff：发版日志不该靠翻记忆

**仓库：[orhun/git-cliff](https://github.com/orhun/git-cliff)** ｜ Star：数千级 ｜ 维护：活跃

- **一句话定位**：从 Git 历史自动生成 CHANGELOG 的 Rust 命令行工具。
- **解决什么痛点**：每次发版手写更新日志，全靠当事人回忆上个月改了什么；团队里每人写的 release note 风格还不一样。
- **核心拆解**：读 commit 历史、按 Conventional Commits 解析（正则可自定义，也认 gitmoji），再用 Tera 模板渲染成风格统一的 CHANGELOG.md。一个 `cliff.toml` 放进仓库，全团队、全 CI 共享同一套规则；官方提供 GitHub Action，打 tag 自动出 release notes。支持 monorepo 的标签过滤和拓扑排序。
- **上手难度**：⭐⭐
- **适用人群与变现**：所有维护正经版本号的项目。它挂在「发布工程」这条真实需求链上，是 changesets、semantic-release 之外的轻量路线——围绕它做企业内部的发版流水线咨询，是真实存在的小生意。

## 6. Zettlr：研究生的写作台，不进任何人的云

**仓库：[Zettlr/Zettlr](https://github.com/Zettlr/Zettlr)** ｜ Star：万级 ｜ 维护：活跃

- **一句话定位**：面向学术写作者的桌面 Markdown 编辑器，文献引用是第一公民。
- **解决什么痛点**：学生和学者不想碰 Word 的域代码，又被 SaaS 笔记的数据出境和订阅费劝退；引用文献是刚需，Notion 们偏偏做不好。
- **核心拆解**：Electron 桌面应用：Markdown 写作，Pandoc/LaTeX 导出成学报格式；直连 Zotero 文献库（配合 Better BibTeX）边写边插引用；「项目」模式把一章一节的 Markdown 组织成整本书；内置字数目标和写作统计。由独立开发者 Hendrik Erz 长期维护，捐赠模式运转多年。
- **上手难度**：⭐⭐
- **适用人群与变现**：研究生、博士、人文社科学者。它证明了「服务被 SaaS 忽略的学术人群」走得通——模板、答辩排版、培训等周边服务都有付费意愿。

## 7. SFTPGo：当客户说「我们只能用 SFTP」

**仓库：[drakkan/sftpgo](https://github.com/drakkan/sftpgo)** ｜ Star：万级 ｜ 维护：活跃

- **一句话定位**：Go 写的一体化受管文件传输（MFT）服务器，面向有合规需求的团队。
- **解决什么痛点**：律所、医院、制造业客户常说「数据交换只能走 SFTP」——而你需要给这条老协议套上账号管理、配额、审计这些现代能力。和 copyparty 那类面向个人的分享站不同，这是给「文件交换要签字画押」的团队用的。
- **核心拆解**：单进程同时提供 SFTP、FTPS、WebDAV、HTTP 全协议；用户级虚拟目录、磁盘配额、带宽限速；存储后端可切 S3/GCS/Azure，本地盘只是其中一种；REST API 加 Web 管理台；事件规则引擎可以做到「上传完成自动转存并回调」。数据源支持 SQLite/Postgres/MySQL。据仓库说明，项目采用开源许可加商业授权双轨。
- **上手难度**：⭐⭐⭐
- **适用人群与变现**：IT 服务商、需要和传统行业交换文件的开发团队。MFT 本身就是企业真金白银的付费品类（对标商业产品按年收订阅），这是本期「现金牛型」的选手。

## 8. pipe-rename：两百行代码的千星样本

**仓库：[marcusbuffett/pipe-rename](https://github.com/marcusbuffett/pipe-rename)** ｜ Star：两千上下（小体量） ｜ 维护：低频但功能稳定

- **一句话定位**：把批量重命名做成一次编辑器操作，小到极致的微工具。
- **解决什么痛点**：批量改文件名，写 bash 循环容易手滑，改错一个就要回滚半天。
- **核心拆解**：`ls | renamer`——把文件列表丢进你自己的 `$EDITOR`，原文件名就地改，保存后它做重名冲突检查再统一应用。没有配置文件、没有子命令，源码小到十分钟能读完，是「一个痛点一个命令」的极限样本，也是「周末项目照样长成千星仓库」的活案例。
- **上手难度**：⭐
- **适用人群**：所有终端用户；更适合想学 Rust CLI 开发的人当第一份精读源码。

---

## 本期横向对比

| 仓库 | 类型 | Star 量级 | 上手难度 | 适用场景 |
|------|------|-----------|----------|----------|
| [Dagger](https://github.com/dagger/dagger) | CI/CD 基建 | 万级 | ⭐⭐⭐ | 自建交付流水线 |
| [Nushell](https://github.com/nushell/nushell) | Shell 语言 | 数万级 | ⭐⭐⭐ | 结构化数据处理 |
| [D2](https://github.com/terrastruct/d2) | 画图 DSL | 万级出头 | ⭐⭐ | 架构图即代码 |
| [presenterm](https://github.com/mfontanini/presenterm) | 终端演示 | 数千级 | ⭐⭐ | 技术分享 |
| [git-cliff](https://github.com/orhun/git-cliff) | 发布工程 | 数千级 | ⭐⭐ | 自动 CHANGELOG |
| [Zettlr](https://github.com/Zettlr/Zettlr) | 学术写作 | 万级 | ⭐⭐ | 论文与专著 |
| [SFTPGo](https://github.com/drakkan/sftpgo) | 文件传输 | 万级 | ⭐⭐⭐ | 企业级 MFT |
| [pipe-rename](https://github.com/marcusbuffett/pipe-rename) | 微工具 | 两千上下 | ⭐ | 批量改名 |

```mermaid
mindmap
  root((冷门工程底座))
    基建与发布
      Dagger 流水线写成代码
      git-cliff 发版日志自动化
    终端效率
      Nushell 表格化管道
      presenterm 终端幻灯
      pipe-rename 编辑器改名
    表达与知识
      D2 文本编译架构图
      Zettlr 学术写作台
    自托管服务
      SFTPGo 企业文件传输
```

## 本期之最

- **最值得立即尝试：Nushell**——一天适应期，从此 `awk` 退役，处理 json/csv 的脚本量直接砍半。
- **最有商业潜力：Dagger**——Docker 创始人背书 + 平台订阅模式，是「工程师流量变基础设施收入」的完整闭环；想抄模式的先研究 D2 的 open core。
- **最被低估：git-cliff**——每个发正经开源项目的人都该挂一个，但它安静得几乎从不上榜；小体量、高粘性，正是被低估的典型画像。

## 参考来源

1. [dagger/dagger](https://github.com/dagger/dagger) ／ [docs.dagger.io](https://docs.dagger.io) — Dagger 官方仓库与文档
2. [nushell/nushell](https://github.com/nushell/nushell) ／ [nushell.sh](https://www.nushell.sh) — Nushell 官方仓库与文档
3. [terrastruct/d2](https://github.com/terrastruct/d2) — D2 语言官方仓库
4. [mfontanini/presenterm](https://github.com/mfontanini/presenterm) — presenterm 官方仓库
5. [orhun/git-cliff](https://github.com/orhun/git-cliff) ／ [Zettlr/Zettlr](https://github.com/Zettlr/Zettlr) — git-cliff 与 Zettlr 官方仓库
6. [drakkan/sftpgo](https://github.com/drakkan/sftpgo) ／ [marcusbuffett/pipe-rename](https://github.com/marcusbuffett/pipe-rename) — SFTPGo 与 pipe-rename 官方仓库

> [!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)
