ByteNoteByteNote
Codex Island:刘海区里管好Codex会话与审批
字

字节笔记本

2026年10月5日 · 约 14 分钟读完

Codex Island:刘海区里管好Codex会话与审批

API中转
¥120

用 Codex CLI 的人多半都有同一个烦恼:会话跑在终端里,你得不停切窗口去看它进展到哪了、要不要审批、有没有出错。终端标签页开了一堆,SSH 窗口又开了几个,本地一个 Codex、远端服务器上一个 Codex,光在它们之间来回切换就够烦的,更别说还要盯着等审批。

最近开源社区里冒出来一个新项目,把 Codex 会话直接塞进 Mac 的刘海区(Dynamic Island),让你不用切终端,扫一眼菜单栏就知道所有会话的状态。它叫 OpenCodexBar,仓库名是 Codex Island(Jarcis-cy/codex-island-app),是这个新兴品类里目前最完整的一个,Apache 2.0 协议,今天来拆它。

Codex Island 会话总览界面

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 直连

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

bash
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 架构

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

text
本地 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 下载,或本地构建:

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 会话的灵动岛通知,已上 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 链路对你特别有用)
  • 你厌倦了在终端标签页之间来回切
  • 你经常错过审批请求,让会话卡住等待

怎么上手:

  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(自动更新),敏感环境可以先审代码再使用。配合 git worktree 并行开发体验更好:每个 worktree 一个会话,刘海区就是总看板。

OpenCodexBar 界面演示

项目界面演示:极简视觉,刘海区自然融入,用完即缩。

九、小结

一句话: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 及以上。

相关文章

分享: