🍺 Homebrew 更新周报 # 20260914 | 上一周工具在挑"谁是自己的用户",这一周它在挑"谁来管它"

上一周,工具开始挑形态——terminal 给 agent 住(zentty),菜单栏给盯着 agent 的人看(clawd-on-desk),浏览器做回 TUI 只为和 agent 并排放(terminal-browser)。
这一周,工具开始挑它的上司。

不是一个新 terminal,
是一个叫 calyx 的 macOS 26 原生 terminal,主标题里第一个动词不是"running",是"supervising"——它装了一只审批 inbox,
把 Claude Code、Codex、OpenCode、Hermes、Grok、pi 的权限请求全部收进一个队列,
你只在一个地方点头;
不是又一个 agent runtime,
是一个叫 ghostex 的桌面应用,把多个 agent 编成一组,让其中一个 agent 当 orchestrator 用 beads Kanban 给别的 agent 派活,
agent 之间可以互相 spawn、互相等、互相发消息;
不是一个新录音 app,
是一个叫 relay 的菜单栏小工具,把"给 Claude Code 解释问题"这件事从"打开编辑器打字"
改成了"按住菜单栏说话,顺手画个箭头,自动把刚 copy 的 stack trace 嵌进去",
再用 MCP 直接喂给 agent。


本周一句话总结

agent 不再只是"被运行"——它开始被一组专门为它而生的工作台挑出来、聚在一起、被人盯着、被人喂。这一周的 Homebrew 在做的事是:把"和 agent 共处"这件事拆成更细的工种。


本周新增工具速览

🧪 New Formulae

名称 中文说明
agent-manager Terminal UI,基于 tmux 管理多个 AI coding agent session(Apache-2.0)
cargo-mutants 给 Rust 代码注入突变,验证测试套件是否真的能抓 bug
fdk-aac Android 的 Fraunhofer FDK AAC 编解码库
fdk-aac-encoder libfdk-aac 的命令行编码前端
kpt Kubernetes 配置编排与部署工具链
steipete/tap/canvas steipete 个人 tap 下的 canvas 工具
tunnelite 安全的本地应用内网穿透工具

🧩 New Casks

名称 中文说明
calyx macOS 26 原生 terminal,专做"运行并监管"多个 coding agent
capsomnia 让 Mac 合盖后保持运行的工具
doubaoime 豆包中文输入法(带语音输入和智能建议)
font-google-sans-flex Google Sans Flex 字体
font-nebula-sans Nebula Sans 字体
font-tiny5-duo Tiny5 Duo 字体
ghostex 多 agent 编排桌面工作台,带 beads Kanban 与跨 agent IPC
langdock 企业 AI 应用平台
network-weather 网络诊断与可视化
nuphyio NuPhy 键盘配置工具
ollama-binary 本地大模型运行工具(ollama 的预编译二进制)
picmal 本地图片、视频、音频、PDF 转换与压缩
relay 菜单栏 LLM 提示词组装器(录音+屏幕标注+剪贴板+MCP 桥)
tungsten-edge 取代 Dock 的"以窗口为单位"的任务栏
workbuddy-ai 通用办公 AI agent(国际版)
workbuddy-cn 通用办公 AI agent(中文版)

值得留意的几个方向

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


calyx:把"supervising"写进主标题的 terminal

┌─────────────────────────────────────────────────────────────────┐
│  Calyx — Terminal for running and supervising coding agents     │
├─────────────────────────────────────────────────────────────────┤
│  AGENTS                                       ⌘P palette  ⌘D split │
│   ▸ claude-1   ✓ done       3m ago        main +12/-4           │
│   ▾ claude-2   ◐ working    ~running      feature/auth        │
│       ↳ subagent-a   ✓ done                                  │
│       ↳ subagent-b   ⚠ blocked · permission needed  ◀ focus  │
│   ▸ codex-1    ⏸ waiting                    chore/test         │
│                                                                  │
│  APPROVAL INBOX                                                  │
│   ┌──────────────────────────────────────────────────────────┐   │
│   │  claude-2 wants to run: `git push origin feature/auth`   │   │
│   │  ▶ Allow once   ◇ Allow always   ✕ Deny   ▾ Options      │   │
│   └──────────────────────────────────────────────────────────┘   │
│   + 2 more pending                                              │
├─────────────────────────────────────────────────────────────────┤
│  ~/projects/api  ·  claude-2                                    │
│  ▸ ⏵ npm run test                                               │
│    running... coverage 87%                                      │
└─────────────────────────────────────────────────────────────────┘

calyx 的描述只有一行,但这一个词的差别值得停一下:

Terminal for running and supervising coding agents.

注意动词的顺序。0909 那期 zentty 写的是 "Terminal for agent-driven development"——它的头号承诺是"agent 在里面住得舒服"。calyx 头号承诺换了一个动词:supervising

它做的事可以拆成四块:

  • Agent Cockpit MCP:把"当前 panes、命令、输出、浏览器 tab、language server、同伴 agent"全部暴露成 MCP 工具,agent 之间可以互相发现、互相 spawn、互相等、互相发消息。
    zentty 是"terminal 知道 agent 在干什么",calyx 是"agent 知道 terminal 里有什么可用的"。
  • Approval Inbox:Claude Code、Codex、OpenCode、Grok、pi 的 PermissionRequest 全部归一到一个浮窗。你可以一次性看"现在有哪些权限在等我",而不是每个 agent 自己弹一次。
    它还支持 dismiss——把请求交还给 CLI 自己的 prompt(如果你在终端里想答)。
  • Command Log:每个 pane 跑过的命令、退出码、输出被结构化记录,通过 MCP 暴露给别的 agent。Secrets 自动 redact。
  • Subagent Rows:支持 subagent 的 CLI(Claude Code / Codex / OpenCode / Grok)会在 sidebar 展开缩进的子行,父 agent 和子 agent 的状态分得开。

它要求 macOS 26+ 和 Apple Silicon——这意味着它假设你已经在 Tahoe 的新玻璃抽象层上。

calyx 和 zentty 的差别不在功能多寡,在默认假设不同:

zentty 假设你是 agent 的"同居人",你俩共享一个 terminal;
calyx 假设你是 agent 的"上司",你坐在 terminal 一边,它在另一边跑,你只负责点头。

如果 0909 的 zentty 是"基础设施面对 agent 转变形态",calyx 就是在那个形态上加了一层"managerial 抽象"——terminal 不再是 agent 的房间,而是 agent 的工位+审批台


ghostex:把多个 agent 编成一支可被指派的团队

ghostex 多 agent 编排视图

ghostex 是这周新增里最重的一个。它装一套完整工作台——Ghostty 内嵌终端、内嵌 Chromium 浏览器(带 DevTools)、内嵌 VS Code 编辑器、beads Kanban 板、Excalidraw 画板——然后把所有这些全部交给 agent。

它的核心抽象是一个叫 beads 的 Kanban:orchestrator agent 在板上派工单,worker agent 接工单执行,worker 之间可以 spawn 子 agent、互发消息、等对方完成。

具体几件事:

  • Ghostty 内嵌做 terminal:不是 wrapper,是真 Ghostty 内嵌,内存更低、session 更稳定。这是 Ghostty 第一次被另一个 macOS app 当子进程内嵌而不是独立 app。
  • 跨 agent IPC:Claude Code 可以在自己的 pane 里 spawn 一个 Codex sub-agent、给它一个 task、等它完成——这不再是"在另一个 tab 手动跑",是 MCP 工具一级的调用。
  • TUI mode(ghostexgx):在 SSH 进机后可以从别的机器 attach 到同一组 agent session,继续监管。
  • iOS/Android 伴侣:手机上能只读地看 live session,也能 push 指令。

它和 calyx 的差别很明显:calyx 是"你管 agent",ghostex 是"agent 管 agent"。calyx 的 orchestrator 是人,ghostex 的 orchestrator 可以是 agent。

ghostex 跨 agent 协作示意

把 calyx 和 ghostex 放在一起看,会出现一个不常见的产品分层:

0909 zentty → "terminal 改造给 agent 住" → 形态层
0914 calyx → "terminal 加审批 inbox 给人管 agent" → 管理层
0914 ghostex → "terminal 给 agent 管 agent" → 编排层

这三层不是替代,是叠加。zentty 在 calyx 之下,calyx 在 ghostex 之下。每一层都不否认上一层,但默认假设的"主角"从 agent → 人 → agent 又转回来。

这件事和 0909 clawd-on-desk 的"agent 状态玩具化"放在一起,有个有意思的差别:那一周我们在看 agent 被拟人化,这一周我们在看 agent 被组织化——前者把人往 agent 那侧推,后者把 agent 往公司那侧推。


agent-manager:Apache-2.0 的 TUI 答案,每个 session 一只私有 tmux server

agent-manager sessions 列表

如果 calyx 是"GUI 派",ghostex 是"工作台派",agent-manager 是"CLI 派"——一个 Apache-2.0 的 Go 写的 TUI,基于 tmux 跑多个 agent session。

它的核心抽象有两个细节值得记:

  • 每个 agent 在一只私有 tmux server 上跑,server 名字叫 agentmgr。session 命名空间 am_*。这意味着你日常用的 tmux(tmux -L default)和 agent 用的 tmux 完全隔离,agent session 崩了不会带走你的个人 session
  • Diff review 是头号特性:Ctrl+R 打开 syntax-highlighted 全文件 diff,c 给某行加 comment,C 把整轮 review 发回 agent pane。

它支持的 agent 包括 Claude Code、OpenCode、Codex、Grok Build、Gemini CLI、Pi、Command Code、Hermes Agent——和 zentty / calyx 是同一批,但没有 GUI

它和 calyx 的对照:

维度 calyx agent-manager
形态 macOS 原生 GUI TUI + tmux
macOS 要求 26+ (Tahoe) 全平台
主要卖点 Approval Inbox Diff review + 私有 tmux server
License 未明示 Apache-2.0
跨平台 macOS only macOS / Linux / Windows (WSL2)
agent-manager diff review 视图

agent-manager 最有意思的设计是它假设你已经在用 tmux——它不是替代 tmux,是 tmux 的"agent 工作流视图"。这和 tele(0831 那期把 Telegram 做回 TUI)、agent-manager(把 tmux 升级成 agent 编排)是同一条曲线的延伸:TUI 不是 GUI 的低端替代,是 tmux/neovim/k9s 用户的"默认复用形态"

如果你已经在用 iTerm2 + tmux,calyx 不一定适合你(它假设你愿意换 terminal);agent-manager 更可能是你这周会装的那一个。


relay:菜单栏麦克风+屏幕标注+剪贴板,一句话喂给 agent

relay 主面板

relay 是这一周最安静但最有想法的一个。它不解决 agent 的运行,也不解决 agent 的监管——它解决"你怎么给 agent 解释问题"这件事。

具体做法:

  • 按住菜单栏说话:四种 STT 引擎可选(macOS native / Apple SpeechAnalyzer / WhisperKit / Parakeet),实时转写。
  • 说的时候顺手画屏幕标注:圆圈="focus here",X="remove this",箭头="points to this",高亮="this matters"——LLM 看得懂这些手势。
  • 剪贴板自动捕获:你刚才 copy 的 stack trace、URL、JSON、terminal 输出,会被自动内嵌在你说的那句话的对应位置——不是你先说完再粘贴,是边说边缝进转写流。
  • Claude Code MCP bridge:直接通过 relay_get_context / relay_add_context 把整套上下文喂给 Claude Code,不用复制粘贴。

它的"Scratch That"特性值得一提:你说到一半说错("make it 20…… no wait, 8"),那个错的词会被现场划掉、扫走,只剩对的 8 进最终 prompt。这种"对人类说话时自我修正"的行为,在 prompt 里被原生处理。

它和 0909 的 zentty、clawd-on-desk 放在一起看,有一条很清楚的连续线:

zentty = terminal 改造给 agent 住
clawd-on-desk = 桌面给盯着 agent 的人看
relay = 菜单栏给"要给 agent 说话的人"装备自己

0909 那一期是"看着 agent 在干什么";relay 是"给 agent 喂东西"。前者是 observability,后者是 input。

把 calyx / ghostex / agent-manager / relay 四个工具并排放,你看到的是 agent 工作流的完整工具栈:

工作流环节 工具
怎么让 agent 跑 zentty (0909) / calyx (0914)
怎么让 agent 互相配合 ghostex (0914)
怎么让人管 agent calyx Approval Inbox / agent-manager
怎么让人给 agent 喂东西 relay (0914)

这一周的 Homebrew 不在装新功能,在装 agent 工作流的四个角落。


一点个人感受

calyx 我大概率会装——前提是 macOS 26 不出大问题。我目前还在 macOS 15,但只要 Tahoe 稳定了我会立刻试。Approval Inbox 是这周我看到的最像"日常产品"的设计——它解决的痛点(agent 多了权限请求也多了,你不知道现在谁在等你)是真实的、每天发生的、且没有任何现有工具替我管过。

ghostex 我大概率短期不装,因为它太重——一个 app 内嵌 Ghostty、Chromium、VS Code、Excalidraw,这本身是一件用空间换能力的事,我目前的桌面节奏不太需要这个密度。但我会关注它,因为 beads Kanban 派活给 agent 这件事,一旦被更多人试出来,可能会变成 agent 团队的标准抽象。

agent-manager 是这周我会装的那一个。它Apache-2.0、跨平台、不要求新系统、不要求新 terminal,且 diff review 是头号特性——刚好对应我目前最频繁的 agent 工作流。私有 tmux server 这个细节让我尤其喜欢:它假设你的 tmux 和 agent 的 tmux 本来就不该混在一起。

relay 是这周我犹豫最久的。它解决的是真实问题(我每天要给 Claude Code 解释 bug 至少 5 次,每次都要打几十个字 + 截图 + 粘贴 stack trace),但它的录音 + 标注 + 剪贴板这一整套,在我办公室环境里会显得很怪——我身边有人,我会对着菜单栏说话这件事我自己也觉得有点尴尬。所以大概率我装,但只在私人时间用。

tungsten-edge 是这周表格里我没展开写但想单独提一句的——它做"window-oriented taskbar that replaces the Dock"。Dock 是 macOS 一个抽象,但它抽象得不好(混合了 app 和 document);tungsten-edge 把这层抽象重做了一遍,只显示"窗口"而不显示"应用"。这件事和 0909 的 omniwm(把 tiling WM 重做但不要求关 SIP)是同一篇日记的下一段:macOS 抽象层降级这件事,已经从菜单栏小工具走向了任务栏这个更显眼的位置

capsomnia 让我犹豫——合盖不睡是个工具,但和 agent 工作流的关联不大。它适合有外接显示器的开发场景,纯 laptop 用户大概率用不上。

如果非要挑一句话总结这一周,我可能更愿意说:上几周工具在挑"形态"(CLI/TUI/GUI/menu bar),上一周工具在挑"用户"(agent 还是人),这一周工具在挑"管理层级"(我管 agent / agent 管 agent / 我给 agent 喂东西)。


结语

这一周我装 agent-manager 的同一个上午,顺手看了一眼 brew update 警告里 whisper.cpp 的迁移信息——Homebrew 7.0 把 whisper-cpp 重命名成了 whisper.cpp。这件事和这周的大方向无关,但它让我想了一下:

calyx 把 terminal 做成了 agent 的工位;ghostex 把 agent 编成了团队;agent-manager 给 tmux 加了 agent 视图;relay 给麦克风加了 prompt 上下文——它们四个加起来,刚好是一家公司新员工入职第一天需要的东西:工位、队友、上司、和用来汇报的工具。

这一周的 Homebrew 不在装新功能,在装agent 时代的"公司结构"

zentty 给 agent 一张桌子。
calyx 给 agent 一个工位+审批台。
ghostex 给 agent 一个团队。
agent-manager 给 tmux 一副眼镜。
relay 给"要跟 agent 解释事情的人"一个麦克风。

半年后我们回头看 2026 年秋天的 Homebrew,可能最值得记的不是某个工具的功能,而是这一波工具在悄悄地把 agent 从"一个程序"重新定义成"一个同事"