🍺 Homebrew 更新周报 # 20260831 | 客户端这件事,正在被各种方向重做

前几周,我们看到 agent 工具链一点点搭好——有工单、有 sandbox、有记忆、有 shell 补全。

这一周,客户端本身开始被重做。

不是一个新聊天软件,
是一个用 Go 重写的 Telegram 客户端——cgo-free,50 MB 内存,Vim 键位,
把自己定位成"给住在 terminal 里的人"用的工具;
不是一个新阅读 app,
是 Readwise 官方做了一个 CLI——明文写"anything you can do in Readwise/Reader, your agent can now do for you",
顺手给 prompt injection 留了一道门锁;
不是又一个 macOS 显示设置,
是一个叫 crisp 的菜单栏应用,把 Apple 藏起来的 DDC 亮度、HiDPI 缩放、虚拟显示器一次性挖出来。


本周一句话总结

客户端这件事,不再默认"打开一个 app"——它开始被重写成"在 terminal 里"、"给 agent 用"、"在菜单栏里"。


本周新增工具速览

🧪 New Formulae

名称 中文说明
amy Nostr 协议的 CLI 客户端,来自 Amethyst 项目
betterglobekey 重新设计 Globe/Fn 键,让输入源切换更顺手
linecast 把天气、潮汐、日月、地图全部画在终端里的 TUI
pixivbiu Pixiv 作品的搜索、浏览与下载 CLI
plink-ng 全基因组关联分析工具集(PLINK 2.0 系列)
readwise-cli Readwise/Reader 的命令行入口,明确写给 agent 用
tele 键盘优先、无 cgo 的 Go 写 Telegram 终端客户端

🧩 New Casks

名称 中文说明
afterglow 经典 After Dark 屏保模拟器,跑原始 68k 模块
arm-performix Arm 服务器与云环境的性能分析工具包
crisp macOS 菜单栏显示管理器:DDC 亮度、HiDPI、虚拟显示器
davit Apple container 命令行的 GUI 客户端
droppy 把 Mac 刘海变成生产力中心的桌面工具
quarkclouddrive 夸克网盘 macOS 客户端
sjmcl 上海交大社区维护的 Minecraft 启动器
tcp-viewer 抓包与检视工具(Proxyman 旗下)

值得留意的几个方向

这一节不求全,
只挑 4 个 值得停下来看的点。


readwise-cli:当一个 CLI 明文写"your agent can now do for you"

readwise-cli 的 README 第一行不是"command-line for Readwise"——
是 "Anything you can do in Readwise/Reader, your agent can now do for you."

这个位置在产品文案里很特殊。绝大多数 CLI 工具会先解释"我是给谁用的",再补一句"也可以给脚本"。readwise-cli 反过来:它先把 agent 写在第一行,把"人"作为副词带过。

这不是修辞。它的架构是显式为 agent 设计的:

  • MCP-backed,而非手写 API。 CLI 内部连到 Readwise MCP server,自动发现可用工具,把每一个工具暴露成一个 CLI 命令。工具列表本地缓存 24 小时。
    也就是说,这个 CLI 不是"Readwise 的 API 镜像",而是"Readwise MCP 服务的命令行壳"——MCP 加了什么,它就有什么。
  • --json 是默认输出,不是可选项。 整个工具列表就是为管道设计的:readwise ... | jqreadwise ... > backup.json
  • readonly 模式是头号安全特性。 打开 readonly,所有写操作从命令和 TUI 里消失——给"agent 或脚本应该永远不修改我的阅读库"准备的。
    但这个设计的细节值得单独拆开看:关闭 readonly 必须重新登录——CLI 解开它会登出当前 session。
    这是我今年看到的第一处明确把"防 agent prompt injection 关掉 readonly"写进产品设计的工具。一个 CLI 工具专门防备 agent,而不是讨好 agent,这件事在 2026 年是稀罕的。
  • Skills 子系统是分仓的。 预制 agent 工作流(readwise skills install claude)放在独立 repo readwiseio/readwise-skills,核心 CLI 保持瘦。
    这与上几期 skills-manager(给 52 个工具统一管理 prompt 文件)是同一个故事的两面:那边是"用户自己同步 prompt",这边是"产品官方给你 prompt"。

它和上一期 deja-vu(追溯 agent 决策历史)、headroom(给 agent 减 token)放在一起,你会看到一个清晰的轮廓:

一年前,产品面对 agent 是"我可以被你用";现在,有的产品开始面对 agent 是"你可以用我,但这把锁我替你守着"。

readwise-cli 选的是后一种。


tele:50 MB 内存的 Telegram 客户端,Vim 键位,不调 C++

tele 终端界面演示

tele 的描述只有一段话,但里面有三个不常见的数字:cgo-free、Go、单静态二进制、~50 MB RSS

对比一下:Telegram Desktop 在 macOS 上常驻 300-500 MB;Telegram 在 Linux 上是 Electron 包装。tele 是 50 MB。 它做到这件事的方式很硬:

  • 自己说 MTProto。 不用 TDLib(那个 C++ 库)。它通过 gotd/td 自己实现协议,完全 cgo-free——意味着没有 C++ 编译器,没有运行时,单二进制静态链接。
  • 键位是 Vim 的,但不止 Vim。 gg/G 跳首跳尾,j/k 在消息之间单条移动,光标停在那条消息上,所有上下文菜单都基于光标位置触发。
    关键差异是**"per-message cursor"**——你的光标在某条消息上时,滚动不再移动光标(用 ctrl+j/ctrl+k 滚动),这样你可以滚着看完一条长消息,但操作目标不变。
  • 主题跟着终端背景自动切。 8 套内置调色板,light/dark 自动检测。
  • 现代 Telegram 功能覆盖率: Reactions、Chat folders、Album 发送、视频/GIF/圆形视频(кружочки)内嵌预览、语音消息直接 app 内放(自带 Opus 解码,不用外挂播放器)。

它也坦白说做不到:没有语音/视频通话,没有圆形视频录制。 终端原生 + cgo-free 的架构没有麦克风/摄像头捕获栈。Secret chat 在 backlog。Full-text search 也还在 roadmap。

它省掉的是"住 terminal 的人不需要为聊天切出去"。neovim、yazi、k9s、tmux 用户,过去要聊天必须切到浏览器或桌面 app——tele 把这件事做成了"再开一个 tab"。

这与上一期 b4n(k9s 的 Rust 重写)、bluetuith(蓝牙 TUI)是同一条曲线的延伸:GUI 早就有了的工具,被 cgo-free + TUI 形式重做一遍。 但 tele 多走了一步——它把"客户端"这件事从"打开一个 app"重新翻译成"在 terminal 里和 chat 共存"。


crisp:把 macOS 藏起来的显示器控制一次性挖出来

┌──────────────────────────────────────────────────────────────┐
│  Crisp — Display Manager                                     │
├──────────────────────────────────────────────────────────────┤
│  📺 External Monitor (DELL U2723QE)                          │
│     ▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░  DDC Brightness  62%  →           │
│     ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  HiDPI Scaling   2.0x (Retina)    │
│     ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ICC Profile     Display P3       │
│                                                              │
│  💡 Virtual Display                                          │
│     [Enable]  [2560×1440]  [ProMotion 120Hz]                 │
│                                                              │
│  ⌨️  Shortcuts: ⌃⌥⇧↑ Brightness+  ⌃⌥⇧↓ Brightness-         │
│  🌙  Night Shift: ON    ☀️  True Tone: OFF                   │
└──────────────────────────────────────────────────────────────┘

crisp 是一个 MIT 许可的免费 macOS 菜单栏应用。它的产品定位一句话讲完:Apple 隐藏了第三方显示器的控制能力,crisp 一次性把它们挖出来。

具体藏了什么:

  • HiDPI 缩放——外接显示器在 macOS 上不能选 Retina 缩放,文字发虚或很小。crisp 强制开启。
  • DDC 亮度——非 Apple 显示器的亮度键是死的,macOS 系统设置根本不发 DDC 命令。crisp 通过软件发。
  • XDR/HDR 显示器超 100% 亮度——Apple 把这扇门关着,crisp 打开。
  • DDC 音量——显示器自带音箱的话,macOS 没有暴露控制。
  • ICC profile、HDR、Gamma、夜览、True Tone、Dark Mode 切换——菜单栏里一排入口。
  • 虚拟显示器——给外接显示器用户开启 2560×1440、ProMotion 120Hz 这种"Apple 本来不让你用"的模式。
  • 预设保存——"白天"、"夜间"、"看电影"三个按钮。

它和 BetterDisplay、Lunar 是同品类。但 BetterDisplay 是付费(约 100 元),Lunar 是付费。这周进来的 crisp 是 MIT 免费——这件事本身就是一个"这件事本来不该花钱"的判断。

它和上一期 b4n(k9s TUI 补 K8s 多集群)、bluetuith(蓝牙 TUI 补系统设置)是同一篇日记的下一段:macOS 在第三方硬件这块留的口子,正在被一批免费、开源的菜单栏应用一个一个填上。


betterglobekey:macOS 自带的 Globe 键,被一个小工具换了实现

┌────────────────────────────────────────────────────────────┐
│  betterglobekey — Globe Key Modes                           │
├────────────────────────────────────────────────────────────┤
│  Mode:        ● Single Press   ○ Double Press              │
│                                                            │
│  Collections:                                                │
│    Work:   [English] → [Chinese Pinyin] → [English]        │
│    Code:   [English] → [Colemak]      → [English]          │
│                                                            │
│  Modifier:  ⇧ Shift = previous collection                  │
│  HUD:       ✅ Show input source on switch                  │
│                                                            │
│  $ bglobe list        # list all sources                   │
│  $ bglobe current     # show current source                │
│  $ bglobe doctor      # diagnostics                        │
└────────────────────────────────────────────────────────────┘

betterglobekey 是一个 4.0 版的 macOS 小工具。它的目标非常窄——重做 Globe 键(Fn 键)切换输入源的逻辑

macOS 内置的 Globe 键行为作者的评价是:"coded in a very intrusive and impractical way."——按一下循环切换所有输入源,中文、英文、日文混在一起轮。如果你双语工作,经常按两次才到想去的那个。

betterglobekey 提供两件事:

  • Collection 概念。 你可以把输入源分组:"工作"(英文 → 中文拼音 → 英文)、"代码"(英文 → Colemak → 英文)。单按 Globe 在当前 collection 里循环,双按跨 collection。
  • HUD 反馈。 切换瞬间弹一个小标识告诉你现在在哪个输入源。

它要 Accessibility 权限,需要把系统设置的 Globe 键设成"No Action"(不然 macOS 自己也会切)。

这件事几乎不性感——一个键盘按键的工具。但它正好对应最近几期反复出现的那条线:抽象层在降级,工具在变具体。 Globe 键是 macOS 一个抽象,但它抽象得不好;betterglobekey 不重新发明输入切换这件事,只是把那个抽象重新做一遍。

这一周这种"把 macOS 抽象做得更细"的小工具同时进来两个——crisp 管显示器,betterglobekey 管键盘。同一周,同一个方向,只是角落不同。


一点个人感受

readwise-cli 是这一周我会真的装的一个。不是因为我要让 agent 读我的 Readwise——我目前的阅读流不需要这个——而是因为它让我看到"产品方对 agent 的态度"在变化。一年前,产品对 agent 是"我可以被你调用";现在是"你可以用我,但我有 readonly 锁,有 re-login 关卡,有分仓的 skills 子系统"。 这件事比任何一个工具本身更值得记。

tele 我大概率不会装,因为我不重度用 Telegram。但 50 MB 这个数字我会记很久——Telegram Desktop 几百 MB,Slack Electron 应用常驻 1 GB+,tele 把这件事做成了"go 写的单二进制",这件事本身是给所有重客户端留的一道注释。

crisp 我会装,因为我外接显示器被 Apple 的 HiDPI 限制折磨了很久。BetterDisplay 我一直没买,价格不是问题,是觉得"这不该花钱"——crisp 帮我把这件事说出来了。

betterglobekey 我大概率不装,因为我只切一种语言。但我欣赏它存在——它证明了"macOS 内置的某个功能,被一个人花时间重做一遍,可以做成产品级体验"。这件事对所有还在被 macOS 不合理抽象折磨的人是种鼓励。

afterglow 是这周让我最犹豫的——一个跑原始 After Dark 68k 模块的屏保模拟器。Flying Toasters、Fish、Starry Skylines——这些 1990 年代的屏保通过 Musashi 68k CPU 模拟器在现代 Mac 上复活。这种工具在 2026 年还有人选,说明软件文物的保护,已经开始走完工具化的路(单独的 app、单独的 tap、单独的 brew formula)。和上一期 deja-vu 那种"给过去做一个 index"是同一篇故事的不同角色。

droppy 我没展开写,但它把刘海当生产力中心这件事(文件篮、剪贴板、Claude/Codex 进度、实时翻译)——和上一期 ping-island 是同一条曲线。如果非要挑一句话总结这一周,我可能更愿意说:客户端这件事不再默认"打开一个 app"——它开始在 terminal 里、在菜单栏里、在刘海里、在键盘里。


结语

这一周我装了 readwise-cli 的同一天,顺手装了一个叫 tcp-viewer 的抓包 GUI。

tcp-viewer 是 Proxyman 的小兄弟,2026.8.29 进了 cask。它做的事传统上属于 tcpdump 或者 Wireshark——但 Proxyman 把它做成 macOS 公民:证书一键装、应用流量过滤、按 domain 分组。

Proxyman 我用了三年。它做的事本质上是"tcpdump 的 GUI 化"——一个完全可以用 CLI 解决的需求,但 GUI 化之后我多救回了无数次"为啥这个 app 没收到响应"的下午。

tcp-viewer 进 Homebrew 这件事,放在这一周的大背景下看,比它本身重要:

readwise-cli 把 CLI 反向写给 agent;tele 把客户端做回 CLI;crisp 把隐藏控制挖到菜单栏;betterglobekey 把系统抽象换了一个实现。

这一周的 Homebrew 不在谈新功能,在谈客户端的边界该画在哪。

CLI 和 GUI 不再是一道非此即彼的选择题——它们变成了同一道工具的不同角度。readwise-cli 是 CLI 但默认对 agent 友好;tele 是 TUI 但兼容现代 Telegram;crisp 是菜单栏 app 但解决的是 CLI 暴露的命令;betterglobekey 是 GUI 但重新实现了 macOS 内置的逻辑。

工具在变,但变的不是形态,是接口。