ByteNoteByteNote
把 Codex 塞进 Mac 刘海里:Codex Island 让会话长在菜单栏
字

字节笔记本

2026年10月24日 · 约 16 分钟读完

把 Codex 塞进 Mac 刘海里:Codex Island 让会话长在菜单栏

API中转
¥120

用 Codex CLI 的人多半都有同一个烦恼:会话跑在终端里,你得不停切窗口去看它进展到哪了、要不要审批、有没有出错。

终端标签页开了一堆,SSH 窗口又开了几个,本地一个 Codex、远端服务器上一个 Codex,光在它们之间来回切换就够烦的,更别说还要盯着等审批。

最近有个新东西火了,把 Codex 会话塞进 Mac 的刘海/灵动岛(Dynamic Island)区域,让你不用切终端,扫一眼菜单栏就知道所有会话的状态。

推文里叫它 OpenCodexBar,仓库叫 Codex Island(Jarcis-cy/codex-island-app),是这个新兴品类里最完整的一个。今天就来拆它。

配图

Codex Island 会话总览界面

Codex Island 的会话总览,本地和远端 Codex 会话都收拢到刘海区附近,状态、审批、上下文一目了然。


一、它解决什么问题

先说清楚痛点。Codex CLI 是个终端工具,它的会话长这样:你在一个 terminal tab 里跟它对话,它在跑任务、改代码、要审批时,你必须切回那个 tab 才能看到。

如果你同时跑着:

  • 一个本地 Codex 在重构前端
  • 一个 SSH 到远端服务器的 Codex 在跑部署
  • 还有一个在补测试

那你就有三个终端窗口要盯。问题是,这些会话大部分时间在"等"(等审批、等你确认、等你回来)。你切走干别的活,过会儿忘了回来,它就卡在那儿。

Codex Island 要做的,就是把这些散落在各处的 Codex 会话收拢到一个轻量的菜单栏界面,让你:

  • 不用切终端,扫一眼就知道哪个会话在等审批
  • 在 UI 里直接点"批准/拒绝",不用回到终端敲命令
  • 本地和远端 SSH 会话统一在一个界面管理
  • 看到每个会话最近的对话历史和上下文

一句话:把 Codex 从"终端里的标签页"升级成"系统级的常驻伴侣"。


配图

二、核心功能:五大能力

Codex Island 的功能都围绕"少切窗口"展开:

1. 本地会话追踪,通过 hooks 监听

它不靠轮询,而是用 Codex 的官方 hooks 机制。首次启动时,它会往 ~/.codex/hooks/ 装一个受管的 hook 脚本,并更新 ~/.codex/hooks.json。Codex 每次有事件(开始任务、要审批、完成等),hook 就通过 Unix Domain Socket 把事件实时推给 Codex Island。

这意味着,会话状态是实时同步的,不是每秒去扫一遍。 你在终端里的 Codex 一有动作,刘海区立刻反映出来。

2. 远端 SSH 会话,stdio 直连

这一步最巧妙。连远端机器时,它执行的是:

bash
ssh -T -o BatchMode=yes <target> codex app-server --listen stdio://

也就是说,它通过 SSH 连过去,直接和远端的 codex app-server 用 stdio 通信。连上之后,你可以在 UI 里:

  • 列出远端的所有 thread
  • 新建 thread(/new)
  • 恢复旧 thread(/resume)
  • 发消息、中断正在跑的 turn
  • 直接在 UI 里处理远端的审批

注意那个 -o BatchMode=yes,它要求非交互式 SSH 认证(密钥认证,不能弹密码)。所以你得先把 SSH key 配好。远端机器也得装好 Codex CLI 并在 PATH 里。

3. 审批流(Approval Flows)

这是核心价值。Codex 要执行命令、改文件时,默认会问你要不要批准。以前你得切回终端看它要干啥、然后敲 y/n。现在,审批请求直接弹到刘海区,你在 UI 里点一下就行。

对同时跑多个 Codex 会话的人来说,这个省下的时间相当可观。

4. 对话历史与上下文

它不只是显示状态,还能显示最近的对话历史,支持 Markdown 渲染。0.0.5 版本还加了对图片附件的支持,本地和远端会话都能显示图片。

聊天头部还会显示当前用的模型和上下文信息,让你一眼知道这个会话在用什么模型、上下文还剩多少(呼应上一篇 Claude Code 文章里讲的"context rot"问题)。

5. 多会话管理

可以同时跟踪多个本地会话和远端 thread,在它们之间快速切换。SSH 目标可以保存,还能设默认工作目录、自动连接,也支持从 ~/.ssh/config 里直接选 host alias。


三、技术架构:Swift + Rust 的双引擎

Codex Island 的技术选型值得说道:

层技术作用
macOS 应用原生 Swift刘海视图、菜单栏、聊天界面、审批 UI
共享引擎Rust(engine/ workspace)transcript 解析、状态聚合、跨平台 IPC/FFI
本地通信Unix Domain Socket + hooks实时接收 Codex 事件
远端通信SSH stdio → codex app-server直连远端 Codex
更新机制Sparkle应用内自动更新
分析Mixpanel(匿名)版本/会话统计

几个值得注意的设计决策:

为什么是原生 Swift 而不是 Electron? 因为这是个刘海区常驻应用,必须做到极致轻量,24小时挂在菜单栏,不能吃几百 MB 内存。原生 Swift 应用能做到几 MB 内存占用,秒级启动。这跟前面 senda 那篇文章讲的"Wails 替代 Electron"是同一个哲学,常驻工具就该用原生,不该用 Web 技术。

为什么有 Rust engine? README 里说得很实在,当前还是"hooks-first inside the macOS app process"(macOS 进程内的 hooks 流程为主),但 engine/ 这个 Rust workspace 是为未来准备的:transcript 解析、状态聚合、host daemon、跨平台 IPC/FFI。

最后那句"跨平台"是重点,这意味着未来可能不止 macOS,还可能有 Windows/Linux 版本,Rust 引擎做共享层,各平台套各自的 UI 壳。


四、工作原理:hooks-first 架构

把它怎么工作的完整链路画出来:

text
本地 Codex 会话(终端里跑的)
        │
        │  触发事件(开始/审批/完成)
        ▼
~/.codex/hooks/ 里的受管脚本
        │
        │  通过 Unix Domain Socket 转发
        ▼
   Codex Island 应用(刘海区)
        │
        │  结合 transcript 信息做状态对账
        ▼
   展示会话状态 + 审批按钮


远端 Codex 会话(SSH 服务器上)
        │
        │  ssh -T ... codex app-server --listen stdio://
        ▼
   SSH stdio 传输通道
        │
        ▼
   Codex Island(同一个 UI 里管理)

两条链路在同一个 UI 汇合,本地用 hooks,远端用 SSH stdio,但呈现给用户的是统一的会话列表。 这是个很干净的架构分离。

一个安全细节:远端的诊断日志默认关闭,启用后才会把 JSONL 写到 ~/Library/Application Support/Codex Island/Logs/。默认不记录,是对隐私的尊重。


五、运行要求与安装

要求:

  • macOS 15.6 或更高(用到了最新的刘海/Dynamic Island API)
  • 本地装好 Codex CLI
  • 管理远端的话需要 SSH 访问 + 远端也装好 Codex CLI
  • 想要窗口聚焦功能需要授予辅助功能权限
  • 想用 tmux 审批流需要装 tmux
  • 想用窗口管理集成需要装 yabai

安装: 直接去 GitHub Release 下载,或本地构建:

bash
# 调试构建
xcodebuild -project apps/macos/CodexIsland.xcodeproj \
  -scheme CodexIsland -configuration Debug build

# 发布构建
./scripts/build.sh
# 输出到 build/export/Codex Island.app

没刘海的 Mac 也能用,它会优雅回退到菜单栏形态。


六、一个值得关注的品类

Codex Island 不是孤例。我在调研时发现,"把 AI coding agent 塞进 Dynamic Island"已经成了一个小品类,有好几个项目在做:

项目定位
Codex Island(本篇主角)面向 Codex CLI,hooks + SSH,最完整
claude-island(上游原型)面向 Claude Code,Codex Island 就是基于它演进的
Vibe Island / vibe-notchClaude Code CLI 会话的 Dynamic Island 通知,已上 Homebrew
Atoll监控多个 AI coding agent 的刘海区伴侣
xIsland从灵动岛跑 AI agent,带 approve/reject
ping-island管理所有 AI coding agent 的灵动岛指挥中心(开源)

这个品类的兴起本身说明一个趋势:AI coding agent 已经从"偶尔用一下的工具"变成了"常驻工作伙伴",而常驻伙伴需要一个常驻的界面。

终端是开发者的主战场,但当多个 agent 同时在跑、要审批、在等待时,终端的 tab 切换就成了瓶颈。刘海/菜单栏这个"永远可见但极轻量"的位置,天然适合做 AI agent 的状态看板。


七、它背后的更广趋势

Codex Island 这种工具的出现,折射出 AI 编程工作流正在演化的几个方向:

第一,从"单会话"到"多会话编排"。 以前一个人用 AI 编程,一次开一个会话。现在 Boris Cherny 团队推荐开 3-5 个 worktree 并行,再加上远端服务器上的会话,你同时在管理的会话数量级变了。多会话需要编排工具,Codex Island 就是这个编排层。

第二,从"主动监控"到"被动通知"。 你不需要主动去终端看会话进展,会话有状态变化时它会主动找你(弹到刘海区)。这跟手机消息通知是同一个逻辑,重要的事来找你,而不是你去找它。

第三,从"终端原生"到"系统级集成"。 AI agent 不再只是终端里的一个程序,而是深度集成进操作系统的通知系统、窗口系统、审批流程。这是 agent 从"工具"走向"同事"的必经之路。


八、谁该用,怎么上手

适合你,如果:

  • 你用 Codex CLI,而且经常同时跑多个会话
  • 你要管理远端服务器上的 Codex(SSH 那条链路对你特别有用)
  • 你厌倦了在终端 tab 之间来回切
  • 你经常错过审批请求,让会话卡住等待

怎么上手:

  1. 去 github.com/Jarcis-cy/codex-island-app 下最新 Release
  2. 确保 macOS 15.6+,本地装好 Codex CLI
  3. 首次启动会自动装 hooks(会修改 ~/.codex/hooks.json)
  4. 要管远端就在 Remote Hosts 里加 SSH 目标
  5. 之后刘海区就是你的 Codex 指挥中心

隐私提示: 它集成了 Mixpanel(匿名分析,只发版本/系统/会话启动事件,不发对话内容)和 Sparkle(自动更新)。敏感环境可以审代码后用。


九、小结

一句话:Codex Island 把散落在终端和 SSH 窗口里的 Codex 会话,收拢到 Mac 刘海区,让你不用切窗口就能掌控所有会话的状态和审批。

它不是替代终端,而是给终端加了一层"系统级的会话看板"。终端依然是你和 Codex 深度交互的地方,但"扫一眼状态""快速审批""多会话切换"这种轻量操作,交给刘海区更顺手。

如果你正在用 Codex CLI,尤其是同时管本地和远端会话,这个工具值得一试。它代表的是 AI 编程工具链正在补上的重要一环,当 agent 变成常驻伙伴,我们需要常驻的界面来管理它们。

OpenCodexBar demo 演示

推文里的 demo,极简视觉,刘海区融入,用完即缩,后台默契。


本文基于 @Youngxxxxu 转推的 OpenCodexBar/Codex Island 介绍(推文引用 @thsottiaux 的 demo)整理。技术上以 Jarcis-cy/codex-island-app 仓库实际内容为准,该项目基于上游 farouqaldori/claude-island 演进。协议 Apache 2.0,macOS 15.6+。

推荐配合阅读:上一篇《Claude Code 最佳实践》里的 worktree 并行开发,Codex Island 正是管理多个并行 worktree 会话的理想看板。


本文是第二大脑 vault 的 raw 阅读笔记(2026-06 编译),观点与数字以写作时点为准。全系列背景见《把 18 篇文章喂给 Claude,编译出一座第二大脑》。

相关文章

分享: