上一周,工具开始挑形态——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 是这周新增里最重的一个。它装一套完整工作台——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(
ghostex或gx):在 SSH 进机后可以从别的机器 attach 到同一组 agent session,继续监管。 - iOS/Android 伴侣:手机上能只读地看 live session,也能 push 指令。
它和 calyx 的差别很明显:calyx 是"你管 agent",ghostex 是"agent 管 agent"。calyx 的 orchestrator 是人,ghostex 的 orchestrator 可以是 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
如果 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 最有意思的设计是它假设你已经在用 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 是这一周最安静但最有想法的一个。它不解决 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 从"一个程序"重新定义成"一个同事"。