这一周,commit 标题里出现最多的词是 mirror。
新公式只来了两位——tpack 和 slint-cpp。
Cask 一边有 openhuman、dockspace、atoll 这种"刘海 + 桌面"的新面孔,
也有 geolibre、libifd-cyberjack 这样的"小而专"。
但在引擎盖下,Homebrew 在做一件安静的事:
它在把十年前留着的镜像源一个一个关掉。
工具越来越轻,基础设施越来越紧。
本周一句话总结
新工具少,但都在认真解释"我为什么存在"。
本周新增工具速览
🧪 New Formulae
| 名称 | 中文说明 |
|---|---|
| tpack | tmux 的插件管理器,tpm 的现代替代,带 TUI |
| slint-cpp | Slint UI 工具包的 C++ 头文件和库 |
🧩 New Casks
| 名称 | 中文说明 |
|---|---|
| libifd-cyberjack | REINER SCT cyberJack 智能卡读卡器的 macOS 驱动 |
| openhuman | 带本地记忆和集成的个人 AI 助手(macOS / Linux) |
| dockspace | 给 Dock 添加小组件(widget) |
| geolibre | 开源 GIS 桌面平台 |
| atoll | 在 MacBook 刘海上跑 Dynamic Island 风格的工具 |
| font-hibur-mono | 来自埃塞俄比亚的等宽字体 Hibur Mono |
| font-geomini | Geomini 字体 |
| font-iosevka 全系 | Iosevka 主家族及其 ss01–ss18、aile、etoile、slab、curly 等变体统一升到 34.7.0 |
值得留意的几个方向
tpack:tpm 的现代替身,登录 tmux 时不再"黑屏等"
tpm(tmux-plugin-manager)是 tmux 圈的隐形基础设施——每个用 tmux 的人大概都 set -g @plugin '…' 过几次。
但它的痛点大家都熟悉:
- 装插件要
prefix + I,记不住快捷键 - 启动时静默
git clone,网络不好就是几秒黑屏 - 想知道"我现在到底装了什么"得翻
~/.tmux/plugins/
tpack 的解法是把它做成一个 Go 写的二进制,带 TUI 界面。
完全兼容 tpm 的配置和插件——你 ~/.tmux.conf 里那行 set -g @plugin '…' 不用动,
但启动时多了进度条、多了可见列表、多了更新提示。
配方里有句自嘲的注脚:Full Documentation - Mostly AI-generated。
工具好用就行,文档是不是 AI 写的,已经不是重点。
它接入了 brew,意味着"你装 tmux,插件管理器就有了"这件事,
离"开箱即用"近了一步。
slint-cpp:C++ 写 UI 终于不用和 Qt 谈十年恋爱
slint-cpp 1.17.0 进了 core,这意味着 Rust 写的 Slint 工具包,
现在原生支持 C++ 头文件和库。
不需要走 Qt 的 moc,不需要等 CMake 找包,
#include <slint.h> 直接就能用。
Slint 的设计思路一直是"为嵌入式、为工具、为跨平台 UI 写 DSL"——
.slint 文件声明 UI,C++/Rust 写逻辑,分工清楚。
1.17.0 这次的 feature:
- Skia + OpenGL 后端在 macOS / Linux 上稳定
- C++ 共享库 + 头文件可以直接 link
- 构建优化(LTO、Codegen units)进了公式默认值
Qt 的问题是"为我的简单工具引入一个 200MB 的框架",
Slint 的方向是"我的应用主二进制 + 几个 MB 的运行时"。
在 Apple Silicon 上尤其明显——brew install slint-cpp 之后,
一个 hello world 的窗口程序可以瘦到 5MB 以内。
slint-cpp 和 tpack 是这周的两个新公式,
都做的是"把以前很重的依赖,降成随手一装就能用的东西"。
atoll / dockspace:刘海成了新桌面,dock 成了新画布
┌──────────────────────────────────────────────────────────────┐
│ │
│ ░░░░░░░░░░░░░░░ NOTCH ░░░░░░░░░░░░░░░░░ │
│ ░ ⏱ 10:32 | 🎵 Now Playing | ⏰ 14:00 ░ │
│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ │
│ Your normal macOS desktop │
│ │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ │📅 │ │🎵 │ │💬 │ │⏰ │ │🌤 │ ← Dockspace widgets │
│ └────┘ └────┘ └────┘ └────┘ └────┘ │
│ Dock not replaced — augmented │
└──────────────────────────────────────────────────────────────┘
两个工具,一周内同时进 cask,都在做同一件事:
把 macOS 默认"留白"的位置,改成可编程的表面。
atoll——把 MacBook 那个被吐槽很多年的刘海,变成 iPhone 风格的 Dynamic Island。
时钟、正在播放、日程提醒,可以放进去。本地原生应用,不是 Bartender 那种"藏起来"的逻辑。
dockspace——往 Dock 里塞 widget。官方截图展示了日历、播放器、时钟、计算器等小组件,
Dock 从"应用启动器"变成"信息面板"。
两个工具都依赖 macOS :sonoma 及以上,都借助 SwiftUI / AppKit 那种新框架的能力。
普通用户大概率用不上——但它们在试探一件事:
"操作系统留下的视觉空白,是不是可以变成有 API 的产品?"
Jellyfish、Useless Apps 一类的小工具曾经填过这个生态位,
现在这个赛道被正经工程化了。
openhuman:又一个"个人 AI 助手"进场,这次强调"local memory"
┌────────────────────────────────────────────┐
│ OpenHuman │
├────────────────────────────────────────────┤
│ • Local memory (no cloud sync required) │
│ • Integrations: Calendar / Mail / Files │
│ • Mac + Linux (AppImage / DMG) │
│ • 0.58.0 — first stable line │
└────────────────────────────────────────────┘
openhuman 0.58.0 在本周进 cask。
描述是 "Personal AI assistant with local memory and integrations"——
和上周的 maestri、vibeproxy 一样,属于"私人 AI 工作台"赛道。
但 openhuman 的差异化点是"local memory"——把上下文和偏好存在本地,
不让它去云端做训练。
这和上上周的 speech(本地语音工具包),
和上上周的 mimo-code(带跨会话记忆的编码 Agent)是同一条线:
Agent 越来越私人化、越来越本地化。
openhuman 走的是"日常助理"那条路,不是"编码 Agent"。
0.58 是第一个稳定线版本,
意味着它已经过了"个人项目"的早期阶段,
正式进 brew 那个"每周可装"的位置了。
趋势观察:Mirror 清理是这周的暗线
这次没拉几个 commit message,
但本周 homebrew-core 的 commit 里,
出现频率最高的动词不是 "bump",
是 "remove mirror"。
涉及的工具包括:
- apache-drill、sbt、erlang@27、popt、yasm、fortune、caca、libstatgrab、ffms2、libcaca、libpng、tcl-tk@8、unixodbc、nghttp2、snort、aerc、icarus-verilog、cxxtest、scrub、[email protected]、[email protected]、reop (deprecated)
- 大量 mysql 时代之前的工具:proftpd、daq、oath-toolkit、s-lang、mpich、xrootd、libpq (用 readline)、vamp-plugin-sdk (改 url)
这是 2026 年中一个很具体的趋势:
十年前 brew 的镜像系统是为了"避开 GitHub 限速 / 跨区域断网",
现在 GitHub Actions + ghcr + Apple Silicon 的存在让这个逻辑过时了。
镜像在变成"一个过期了的间接层"。
reop 干脆被标记 deprecated,理由是"use alternative urls"——
以前 brew 会替你维护"fallback",
现在 brew 直接告诉你"去找上游"。
这是 brew 在收紧"我替你处理了什么"这件事。
Homebrew 6.0 引入 tap trust 是上半年的标志事件,
这一周的 mirror 清理是同一逻辑的延续:
不再替你假设你信任哪个源,不再替你做 fallback 决策。
一点个人感受
新公式只有两位,反而让我对 brew 的"入口价值"重新有了感受——
每周成百上千的 PR,真正"值得为它写一段描述"的,不到十个。
这十个里又有大半是"替换某个旧工具"而不是"从无到有"。
从无到有的新工具,越来越少了;把旧工具拆掉重做的,越来越多了。
tpack 是"tpm 的现代版",
slint-cpp 是"Qt 的轻量替代",
atoll 是"刘海本来是浪费,我们来用上",
dockspace 是"dock 本来是启动器,我们来做画布"。
每个新工具都在说同一句话:"我比它好,因为我更懂 2026 年的电脑。"
openhuman 那一类本地 AI 助手的出现频率在加快。
上上周 mimo-code、上周 maestri、本周 openhuman——
私人 AI 助手的"基础设施期"正在收尾,
接下来应该会看到合并潮:能撑过 1.0 的、会被留下来。
撑不过的,会变成 github.com 上那些 archive 的仓库。
我这一周最希望装的大概是 tpack——
因为我每天 prefix + I 的速度,说明我真需要它。
结语
这周 brew 的 commit 列表像一条安静的河。
新工具是河面上的小船,镜像清理是河底的泥沙在重新分布。
工具在变轻,信任在收紧,本地化在变重。
一周只有两个新公式,也是一种信号——
也许该让旧东西先回家,新东西不用那么着急。