
字节笔记本
2026年10月5日 · 约 14 分钟读完
Codex Island:刘海区里管好Codex会话与审批
用 Codex CLI 的人多半都有同一个烦恼:会话跑在终端里,你得不停切窗口去看它进展到哪了、要不要审批、有没有出错。终端标签页开了一堆,SSH 窗口又开了几个,本地一个 Codex、远端服务器上一个 Codex,光在它们之间来回切换就够烦的,更别说还要盯着等审批。
最近开源社区里冒出来一个新项目,把 Codex 会话直接塞进 Mac 的刘海区(Dynamic Island),让你不用切终端,扫一眼菜单栏就知道所有会话的状态。它叫 OpenCodexBar,仓库名是 Codex Island(Jarcis-cy/codex-island-app),是这个新兴品类里目前最完整的一个,Apache 2.0 协议,今天来拆它。

Codex Island 的会话总览:本地和远端 Codex 会话都收拢到刘海区附近,状态、审批、上下文一目了然。
一、它解决什么问题
先说清楚痛点。Codex CLI 是个终端工具:你在一个终端标签页里跟它对话,它在跑任务、改代码、要审批时,你必须切回那个标签页才能看到。
如果你同时跑着:一个本地 Codex 在重构前端,一个 SSH 到远端服务器的 Codex 在跑部署,还有一个在补测试,那你就有三个终端窗口要盯。问题是,这些会话大部分时间都在「等」:等审批、等你确认、等你回来。你切走干别的活,过会儿忘了回来,它就卡在那儿。
Codex Island 要做的,就是把这些散落在各处的 Codex 会话收拢到一个轻量的菜单栏界面,让你:
- 不用切终端,扫一眼就知道哪个会话在等审批
- 在界面里直接点「批准/拒绝」,不用回到终端敲命令
- 本地和远端 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 直连
这一步最巧妙。连远端机器时,它执行的是:
ssh -T -o BatchMode=yes <target> codex app-server --listen stdio://也就是说,它通过 SSH 连过去,直接和远端的 codex app-server 用 stdio 通信。连上之后,你可以在界面里:
- 列出远端的所有 thread
- 新建 thread,或恢复旧 thread
- 发消息、中断正在跑的 turn
- 直接在界面里处理远端的审批
注意那个 -o BatchMode=yes:它要求非交互式 SSH 认证(密钥认证,不能弹密码),所以你得先把 SSH key 配好,远端机器也得装好 Codex CLI 并在 PATH 里。
3. 审批流(Approval Flows)
这是核心价值。Codex 要执行命令、改文件时,默认会问你要不要批准。以前你得切回终端看它要干啥,然后敲 y/n。现在审批请求直接弹到刘海区,你在界面里点一下就行。对同时跑多个 Codex 会话的人来说,省下的时间相当可观。
4. 对话历史与上下文
它不只是显示状态,还能显示最近的对话历史,支持 Markdown 渲染。0.0.5 版本还加了对图片附件的支持,本地和远端会话都能显示图片。聊天头部还会显示当前用的模型和上下文信息,让你一眼知道这个会话在用什么模型、上下文还剩多少,方便在 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 内存占用、秒级启动。常驻工具就该用原生技术而不是套一层 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 架构
把它怎么工作的完整链路画出来:
本地 Codex 会话(终端里跑的)
│
│ 触发事件(开始/审批/完成)
▼
~/.codex/hooks/ 里的受管脚本
│
│ 通过 Unix Domain Socket 转发
▼
Codex Island 应用(刘海区)
│
│ 结合 transcript 信息做状态对账
▼
展示会话状态与审批按钮
远端 Codex 会话(SSH 服务器上)
│
│ ssh -T ... codex app-server --listen stdio://
▼
SSH stdio 传输通道
│
▼
Codex Island(同一个界面里管理)两条链路在同一个界面汇合:本地用 hooks,远端用 SSH stdio,但呈现给用户的是统一的会话列表,这是个很干净的架构分离。
一个安全细节:远端的诊断日志默认关闭,启用后才会把 JSONL 写到 ~/Library/Application Support/Codex Island/Logs/。默认不记录,是对隐私的尊重。
五、运行要求与安装
要求:
- macOS 15.6 或更高(用到了最新的刘海区 API)
- 本地装好 Codex CLI
- 管理远端需要 SSH 访问,且远端也装好 Codex CLI
- 窗口聚焦功能需要授予辅助功能权限
- 想用 tmux 审批流需要装
tmux - 想用窗口管理集成需要装
yabai
安装:直接去 GitHub Release 下载,或本地构建:
# 调试构建
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-notch | Claude Code 会话的灵动岛通知,已上 Homebrew |
| Atoll | 监控多个 AI coding agent 的刘海区伴侣 |
| xIsland | 从灵动岛跑 AI agent,带 approve/reject |
| ping-island | 管理所有 AI coding agent 的灵动岛指挥中心 |
这个品类的兴起本身说明一个趋势:AI coding agent 已经从「偶尔用一下的工具」变成了「常驻工作伙伴」,而常驻伙伴需要一个常驻的界面。终端是开发者的主战场,但当多个 agent 同时在跑、要审批、在等待时,终端的标签页切换就成了瓶颈。刘海和菜单栏这个「永远可见但极轻量」的位置,天然适合做 AI agent 的状态看板。
七、背后的三个趋势
第一,从单会话到多会话编排。 以前一个人用 AI 编程,一次开一个会话;现在 Claude Code 官方团队推荐开 3 到 5 个 worktree 并行,再加上远端服务器上的会话,你同时管理的会话数量级变了。多会话需要编排工具,Codex Island 就是这个编排层。
第二,从主动监控到被动通知。 你不需要主动去终端看会话进展,会话有状态变化时它会主动找你(弹到刘海区)。这和手机消息通知是同一个逻辑:重要的事来找你,而不是你去找它。
第三,从终端原生到系统级集成。 AI agent 不再只是终端里的一个程序,而是深度集成进操作系统的通知系统、窗口系统、审批流程。这是 agent 从「工具」走向「同事」的必经之路。
八、谁该用,怎么上手
适合你,如果:
- 你用 Codex CLI,而且经常同时跑多个会话
- 你要管理远端服务器上的 Codex(SSH 链路对你特别有用)
- 你厌倦了在终端标签页之间来回切
- 你经常错过审批请求,让会话卡住等待
怎么上手:
- 去 github.com/Jarcis-cy/codex-island-app 下载最新 Release
- 确保 macOS 15.6 以上,本地装好 Codex CLI
- 首次启动会自动装 hooks(会修改
~/.codex/hooks.json) - 要管远端就在 Remote Hosts 里添加 SSH 目标
- 之后刘海区就是你的 Codex 指挥中心
隐私提示:它集成了 Mixpanel(匿名分析,只发版本、系统、会话启动事件,不发对话内容)和 Sparkle(自动更新),敏感环境可以先审代码再使用。配合 git worktree 并行开发体验更好:每个 worktree 一个会话,刘海区就是总看板。

项目界面演示:极简视觉,刘海区自然融入,用完即缩。
九、小结
一句话:Codex Island 把散落在终端和 SSH 窗口里的 Codex 会话收拢到 Mac 刘海区,让你不用切窗口就能掌控所有会话的状态和审批。
它不是替代终端,而是给终端加了一层系统级的会话看板。终端依然是你和 Codex 深度交互的地方,但扫一眼状态、快速审批、多会话切换这类轻量操作,交给刘海区更顺手。如果你正在用 Codex CLI,尤其是同时管本地和远端会话,这个工具值得一试。它代表的是 AI 编程工具链正在补上的重要一环:当 agent 变成常驻伙伴,我们就需要常驻的界面来管理它们。
本文依据开源仓库 Jarcis-cy/codex-island-app 的 README 与文档整理,该项目基于上游 farouqaldori/claude-island 演进,Apache 2.0 协议,要求 macOS 15.6 及以上。



