首页 › weekly › 文件管理退回终端,快到飞起

本期挖掘报告:七个把基本功做到极致的精品仓库

概述

这一期不走热点榜单路线,而是从四类日常痛点逆向找仓库:文件操作太慢、画图靠拖拽、排版等半天、密钥散落一地,外加两件被低估的小东西——一个带单位的计算器语言,和一个单人维护的 RSS 单文件。共性很明确:不追模型、不蹭概念,把开发者和知识工作者每天都要碰的基本功做快、做轻、做成自己的数据。七件里有三件 Rust 写的,共同气质是「装完即用,回不去了」。文中 Star 数均为约数,可能随时间变化,请以仓库页面实时数据为准。


1. typst:编译只要一瞬间的排版引擎

仓库:typst/typst | Star 约 4 万+ | 持续活跃更新

一句话定位:用现代语言设计重做一遍 LaTeX,排版这个三十年的痛点第一次有了「秒级反馈」的解法。

LaTeX 的痛只有写过论文的人懂:编译慢、报错像天书、装个宏包要折腾半天环境。typst 是 Rust 写的排版引擎,把这三件事全解决了——标记语法接近 Markdown,数学公式不用背几百个宏命令,$x^2$ 这种写法直接上手;最关键的是增量编译,配合编辑器保存即预览,改动到看到效果基本无感延迟,这是 LaTeX 结构性做不到的。

实现上有两个亮点:一是它本质是一门内置的纯函数式脚本语言,变量、循环、自定义函数、内容块操作一应俱全,模板可以写成「程序」而不是「宏的堆叠」;二是内置包管理器,@preview 命名空间下的社区模板和工具一条 import 就能用,生态已经初具规模。

cargo install typst-cli
typst compile main.typ   # 输出 PDF

上手难度:⭐⭐

适用人群:写论文、作业、书籍、简历、幻灯片的所有人。商业层面,官方 typst.app 已经验证了协作编辑订阅制的付费意愿,围绕它做中文模板商店、论文排版服务、出版社定制模板,都是顺手的二次开发方向。

2. d2:架构图不拖拽,写出来

仓库:terrastruct/d2 | Star 约 2 万 | 持续活跃更新

一句话定位:把「画架构图」变成「写架构图」,文本进、SVG 出,图终于可以进 Git 了。

拖拽式画图工具的死穴是维护:图改一版,人和代码就对不上了。d2 是一门声明式图表语言,用文本描述节点和连线,布局交给引擎自动算,你只负责表达「谁连谁」。内置多种布局引擎(DAGRE、ELK,以及官方自研的 TALA),同一份描述可以切不同布局风格;容器嵌套表达系统分层,序列图、分类图标(K8s、云厂商图标库内置)都有对应语法。

工程细节做得相当完整:CLI 一条命令渲染 SVG/PNG,--watch 模式下改文本实时刷新浏览器,还有 LSP 支持,主流编辑器里写就有补全和高亮。图即文本,意味着 code review 时 diffs 一目了然,这是所有拖拽工具给不了的。

# 官方安装脚本(macOS 也可 brew install d2)
curl -fsSL https://d2lang.com/install.sh | sh -s --
echo 'x -> y: hello' > in.d2 && d2 in.d2 out.svg

上手难度:⭐⭐

适用人群:写设计文档、技术方案的工程师和架构师。母公司 Terrastruct 走托管编辑器订阅路线,国内可参考的方向是把它嵌进文档系统、CI 里做架构图自动校验与渲染。

3. yazi:全异步的终端文件管理器

仓库:sxyazi/yazi | Star 约 3 万 | 持续活跃更新

一句话定位:文件管理这件事搬回终端,用全异步架构做到了「零等待体感」。

Yazi 是 Rust 写的终端文件管理器,最直接的对手是老牌的 ranger。它最硬的卖点是架构:基于 Tokio 的全异步 IO,IO 调度、文件预览、任务队列全部并发化——浏览大目录、翻图片、看视频缩略图时,传统文件管理器会卡的那一下,它没有。预览能力是怪兽级的:图片直接在终端内渲染(主流终端协议都支持)、视频抽帧、PDF、压缩包内容列表,都是开箱即用。

交互是 Vim 键位肌肉记忆,选中、批量重命名、跨标签页搬运一气呵成;插件系统用 Lua 写,主题、图标、自定义预览器都有成熟社区配置。配合 shell 集成(退出时把目录带回到当前 shell),它可以完全接管你的文件操作。

brew install yazi          # 或
cargo install --locked yazi-fm yazi-cli

上手难度:⭐⭐⭐(要背几天键位,之后鼠标基本吃灰)

适用人群:重终端用户、服务器运维、追求键盘流的开发者。个人项目,走 GitHub Sponsors 模式;更大的想象空间是作为终端效率套件的底座,被各类 dotfiles 和开发环境一键安装脚本收编。

4. Grist:电子表格的壳,关系数据库的心

仓库:gristlabs/grist-core | Star 数千级 | 持续活跃更新

一句话定位:Excel 的使用体验、Airtable 的产品形态、PostgreSQL 的数据主权,三样一次给齐。

团队协作里最尴尬的数据工具断层:Excel 好上手但管不住结构化数据,Airtable 好用但订阅费和数据都在别人服务器上。Grist 是两者的开源合体:界面是熟悉的表格,但每一列都可以是一段 Python 表达式(公式列),可以引用其他表做真正的关系查询;下面是实打实的 SQLite/Postgres 存储,数据完全在你手里。

核心功能拆开看:细粒度访问规则(按行、按列控制谁能看谁能改)、多视图(表格、卡片、表单、仪表盘混搭)、增量快照历史、支持从 Airtable 直接导入搬家。自托管就是一条 docker run,8484 端口起来就能用,也提供桌面版单机模式。

docker run -p 8484:8484 gristlabs/grist

上手难度:⭐⭐

适用人群:小团队运营、非营利组织、想把 Excel 进阶成数据库又不想学 SQL 的人。Grist Labs 采用开源核心 + 托管服务的双轨模式,政府与教育机构客户是公开的成功样本——「帮企业把 Excel 迁到自托管 Grist」本身就是一门现成的咨询生意。

5. Numbat:会检查物理量纲的计算器语言

仓库:sharkdp/numbat | Star 千级小仓 | 持续活跃更新

一句话定位:一个把「单位」当成一等公民的计算器,量纲错了直接编译报错,从此告别换算事故。

这是本期最小、也最容易被错过的一个仓库,作者是 fd(fat command-line find 的作者)用 Rust 写的高质量小工具系列又一员。Numbat 是一门领域专用语言:每个数字都带物理单位,30 km/h -> m/s 直接出结果;你写 1 m + 1 s 它不会给答案,而是报类型错误——因为它在编译期做量纲分析,航天史上那些单位混用的事故,在 REPL 里就拦下来了。

内置数千个物理常数(CODATA 数据)、完整 SI 单位体系,还有非物理单位:货币、像素、信息量都能定义。除了 REPL,也可以写成脚本跑批量换算;预置的示例库覆盖金融复利、图像分辨率、咖啡冲泡比例这类生活化场景,文档写得像教程一样友好。

cargo install numbat    # 或 brew install numbat
numbat                  # 进入交互式 REPL

上手难度:⭐

适用人群:工程师、物理/化学学生、任何被单位换算坑过的人。单独变现空间有限,但它是「垂直 DSL + 工程级质量」的教科书样本,适合作为技术品牌内容研究,也适合嵌进教学工具链做二次开发。

6. Infisical:把 .env 从聊天记录里救出来

仓库:Infisical/infisical | Star 约 2 万 | 持续活跃更新

一句话定位:开源的密钥与环境变量管理平台,补上「HashiCorp Vault 太重、.env 文件太野」之间的空档。

几乎所有团队的密钥管理现状:生产数据库密码躺在微信/Slack 记录里,.env.example 和真实 .env 永远对不上。Infisical 把这件事产品化:环境变量按项目-环境(dev/staging/prod)统一管理,CLI 一条 infisical run -- npm start 就把密钥注入进程,不落盘;Terraform、Pulumi、GitHub Actions、K8s 全有官方集成,同步即生效。

进阶能力是它和纯文件方案拉开差距的地方:动态密钥(按需生成限时数据库账号、SSH 证书)、KMS、密钥轮换、审计日志、细粒度 RBAC,配合自托管模式,合规团队也能用。UI 做得相当漂亮,这一点对推广 adoption 意外地重要。

上手难度:⭐⭐⭐(自托管需要 Postgres 和一点耐心,云版免部署)

适用人群:所有还在群里传密码的团队。商业路径已被验证:YC 系公司,开源核心 + 云订阅,企业版卖 SSO 和合规——「帮中小企业从 .env 迁移到密钥平台」是现成的服务型生意。

7. yarr:一个文件跑起来的 RSS 阅读器

仓库:nkanaev/yarr | Star 两千上下(约数) | 单人长期维护

一句话定位:Google Reader 时代精神的最小化继承者——单个 Go 二进制 + 内嵌 SQLite,解压即用的私人 RSS 服务器。

RSS 阅读器这个品类两头畸形:托管服务(Feedly、Inoreader)年年涨价还限流,全功能自托管方案(FreshRSS、Miniflux)又要养数据库、配反代。yarr 选择了第三条路:一个开发者、一门语言、一个二进制。Go 编译时把 SQLite 和整个前端都嵌进去,下载 release 解压,./yarr 就跑起来了,默认 7070 端口,没有任何依赖。

功能上克制但够用:文件夹分组、未读 starred 管理、抓取频率自动调度、移动端自适应界面(手机浏览器直接当 App 用),还兼容 Fever API,意味着 Reeder 这类客户端可以直接连它。源码结构极干净,是学习「如何用 Go 写一个完整单文件 Web 应用」的优秀范本。

./yarr -db yarr.db   # 打开 http://localhost:7070

上手难度:⭐

适用人群:信息源自留地的重度阅读者、树莓派/小盒子玩家。变现空间在白标:内网资讯聚合、企业情报简报的底层引擎,改造成本极低。


本期横向对比

仓库 类型 语言 Star(约) 上手难度 适用场景
typst 排版引擎 Rust 4 万+ ⭐⭐ 论文/书籍/幻灯
d2 图表即代码 Go 2 万 ⭐⭐ 架构图/技术文档
yazi 终端文件管理 Rust 3 万 ⭐⭐⭐ 服务器/终端工作流
grist-core 表格数据库 Python/TS 数千 ⭐⭐ 团队协作数据
numbat 单位计算器语言 Rust 千级 ⭐ 工程/教学换算
Infisical 密钥管理平台 TypeScript 2 万 ⭐⭐⭐ 团队安全基线
yarr RSS 自托管 Go 两千上下 ⭐ 个人信息聚合

结构速览

flowchart TD
    A["本期七个开源仓库"] --> B["文档与图表"]
    A --> C["终端效率"]
    A --> D["数据与安全"]
    A --> E["个人信息流"]
    B --> F["typst 排版引擎"]
    B --> G["d2 图表即代码"]
    C --> H["yazi 文件管理器"]
    D --> I["Grist 表格数据库"]
    D --> J["Infisical 密钥管理"]
    E --> K["numbat 单位计算器"]
    E --> L["yarr RSS 阅读器"]

本期之最

结语

这一期的共同气质,是把「基本功」当产品做:文件、图、文档、表格、单位、密钥、订阅,全是几十年没被认真重做过一遍的旧活。它们的启示也一致——热点会轮换,但这些每天都要用一次的东西,做快一点、轻一点、不锁门,就足够攒起一个长青的仓库。Star 数为约数,动手前请以仓库页面为准。

参考来源

  1. typst/typst - GitHub — Rust 排版引擎官方仓库,语法与包管理器文档见 typst.app
  2. terrastruct/d2 - GitHub — d2 图表语言官方仓库与 语言文档
  3. sxyazi/yazi - GitHub — 异步终端文件管理器官方仓库
  4. gristlabs/grist-core - GitHub — Grist 开源核心,官网 getgrist.com
  5. Infisical/infisical - GitHub — 开源密钥管理平台,官网 infisical.com
  6. sharkdp/numbat - GitHub — 单位感知计算器语言,在线试玩 numbat.dev
  7. nkanaev/yarr - GitHub — 单文件自托管 RSS 阅读器官方仓库

[!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学通信知识星球海报-扫码加入