本项目以轻量、稳定、易部署为目标。核心场景是:通过手机或远程 SSH 长时间使用 Codex,不再被断线、原始 UUID、
codex resume --all难辨认等问题打断。
一行安装:
curl -fsSL https://raw.githubusercontent.com/WangHaowen99/codex-deck/develop/install.sh | bash安装后直接运行:
cdx新建并进入一个 Codex 工作台:
cdx new 写论文之后随时恢复:
cdx enter 写论文- 下载:codex-deck-vscode-0.1.13.vsix
- 更新:tooltip 指标改为中文,并在提示中说明右键可查看固定详情页;侧边栏右键新增“查看调用失败原因”“查看工具调用详情”“查看压缩详情”,可检查失败原因、shell 命令、web 搜索、patch 修改、工具分布,以及每次压缩后的摘要和保留历史。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.13.vsix- 下载:codex-deck-vscode-0.1.12.vsix
- 更新:
cdx list --json和 VS Code 侧边栏新增压缩次数、工具调用次数、缓存命中率和失败次数;tooltip 展示 shell / web / patch / subagent 分布、编辑文件数、命令成功率、命令耗时、最近一轮耗时和首 token 延迟。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.12.vsix- 下载:codex-deck-vscode-0.1.11.vsix
- 更新:VS Code 插件会在远端
cdx还未返回指标字段时,从 Codex transcript 兜底解析总 token、对话轮数和上下文占比;侧边栏指标文案也改为更短格式,减少窄侧边栏裁剪。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.11.vsix- 下载:codex-deck-vscode-0.1.10.vsix
- 更新:
cdx list --json新增总 token 数、对话轮数和当前上下文占比;VS Code 侧边栏和 tooltip 同步显示这些会话指标。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.10.vsix- 下载:codex-deck-vscode-0.1.9.vsix
- 更新:VS Code 侧边栏中,Codex 运行中的会话改为橙色圆点,不再使用加载动画;会话列表按创建时间稳定排序,不再因为最近访问而跳到最上方。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.9.vsix- 下载:codex-deck-vscode-0.1.8.vsix
- 更新:
cdx新增 shell snapshot 兜底绑定;Codex 新版本未执行SessionStarthook 时,新建会话仍会自动拿到真实 Codex session id,从而恢复 VS Code 侧边栏红点/绿点显示。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.8.vsix- 下载:codex-deck-vscode-0.1.7.vsix
- 更新:重新打包最新 VS Code 扩展;配合当前 cdx 运行时的
[features].hooks和activity_state输出,恢复新建会话绑定后的红点/绿点/运行动画显示。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.7.vsix- 下载:codex-deck-vscode-0.1.6.vsix
- 更新:修复运行中的 Codex 会话在 VS Code 侧边栏左侧没有动画的问题;运行时长改为在插件侧本地递增刷新。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.6.vsix- 下载:codex-deck-vscode-0.1.5.vsix
- 更新:重新打包 VS Code 扩展版本;仓库同步 Codex 新版
[features].hooks配置兼容修复。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.5.vsix- 下载:codex-deck-vscode-0.1.4.vsix
- 更新:侧边栏显示 Codex 运行中加载动画与已运行时长;完成后按未读/已读显示红点/绿点,不再显示 live、bound、viewed 文本。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.4.vsix- 下载:codex-deck-vscode-0.1.3.vsix
- 更新:VS Code 打开或复用会话终端时会调用
cdx mark-viewed,确保未读红点及时清除。 - 安装:
code --install-extension releases/codex-deck-vscode-0.1.3.vsix- 下载:codex-deck-vscode-0.1.2.vsix
- 更新:点击同一个 cdx 会话时复用已有 VS Code 终端,不再重复新建终端连接。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.2.vsix- 下载:codex-deck-vscode-0.1.1.vsix
- 更新:cdx 会话列表和 VS Code / Remote SSH 侧边栏支持未查看 Codex 结果提醒。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.1.vsix- 下载:codex-deck-vscode-0.1.0.vsix
- 用途:在 VS Code / Remote SSH 侧边栏里查看、新建、进入、重命名和删除 Codex Deck 会话。
- 安装:
code --install-extension releases/codex-deck-vscode-0.1.0.vsixcdx 的主流程是菜单和编号选择,不依赖复杂快捷键,也不要求你在窄屏里辨认一长串 Codex UUID。断线后重新 SSH 回来,再执行 cdx enter <name> 即可回到对应工作台。
每个 Codex 会话都运行在独立 tmux session 里:
- SSH 断开,Codex 仍在远端运行
- 任务执行中断线,可以重新 attach
- 当前 tmux 存在时优先回到现场
- tmux 不存在时自动
codex resume <session_id>
你只需要记住:
写论文
股票研究
项目重构
长期助理
不用再从 codex resume --all 里猜哪一个是当前要找的会话。
cdx delete 只删除 Codex Deck 自己的映射,并关闭对应 tmux;不会物理删除 Codex 原始历史。即使误删 cdx 映射,仍然可以通过手动导入或绑定找回原始 Codex 会话。
Codex Deck 使用 Codex SessionStart hook 获取真实 Codex session id,并写入自己的注册表。它还提供:
- 绑定已有 Codex 会话
- 导入 Codex 原始会话
- 解除绑定
- 转移绑定
doctor状态检查
主体是一个 Python 单文件脚本,只依赖:
- Python 3
- tmux
- Codex CLI
安装脚本只是把 cdx 放到本地 bin 目录,然后执行初始化。
Codex Deck 把三层状态统一起来:
cdx_name -> cdx 内部 id -> tmux session -> Codex session id
实际行为:
cdx enter 写论文
├─ 如果 cdx_内部id 的 tmux 还活着:直接 attach/switch
└─ 如果 tmux 不存在:新建 tmux,并运行 codex resume <session_id>
新建会话时:
输入 cdx_name
选择常用目录
可选输入相对文件夹名
创建 cdx 注册表记录
启动 tmux + Codex
Codex hook 回写真实 session id
| 功能 | 说明 |
|---|---|
| 会话列表 | 只展示 cdx 管理的会话,按最近使用时间排序 |
| 新建会话 | 输入全局唯一用途名,选择常用目录,可选创建子目录 |
| 进入会话 | 优先 attach 到 live tmux,否则自动 resume Codex |
| 未读提醒 | transcript 晚于上次进入时间时,在 cdx 列表和 VS Code 插件里显示未查看结果 |
| 运行状态 | VS Code 侧边栏显示 Codex 运行中动画和已运行时长 |
| 鼠标滚动 | cdx 会刷新 tmux 鼠标模式并接管滚轮,避免滚轮事件被 Codex 当成上下键 |
| UUID 查询 | 直接显示某个 cdx 会话绑定的 Codex session id |
| 删除会话 | kill 对应 tmux,删除 cdx 映射,不删除 Codex 原始历史 |
| 重命名 | 支持中文和空格,live 会话也可重命名 |
| 常用目录 | 管理新建会话时可选的 root 目录 |
| 手动映射 | 绑定、导入、解除、转移 Codex 原始会话 |
| 状态检查 | 检查配置、hook、注册表、tmux、cwd、重复映射 |
Codex Deck 使用 XDG 风格路径:
~/.config/cdx/config.json
~/.local/share/cdx/sessions.json
~/.local/state/cdx/cdx.log
~/.local/state/cdx/lock
Codex 集成写入:
~/.codex/config.toml # 启用 features.hooks
~/.codex/hooks.json # 安装 SessionStart hook
安全策略:
- 注册表写入使用
flock加锁 - 写文件使用临时文件和原子替换
- 删除 cdx 会话不删除 Codex 原始历史
- hook 只有检测到
CDX_SESSION_ID时才工作 - 工具日志不记录 Codex 对话内容
- 修改
~/.codex/config.toml前会创建时间戳备份
curl -fsSL https://raw.githubusercontent.com/WangHaowen99/codex-deck/develop/install.sh | bash默认安装到:
~/.local/bin/cdx
如果 ~/.local/bin 不在 PATH 中,加入 shell 配置:
export PATH="$HOME/.local/bin:$PATH"python3 --version
tmux -V
codex --versiongit clone https://github.com/WangHaowen99/codex-deck.git
cd codex-deck
git checkout develop
chmod +x cdx install.sh
./install.shINSTALL_DIR=/usr/local/bin ./install.shCDX_SKIP_INIT=1 ./install.sh之后手动初始化:
cdx initcdx # 打开菜单
cdx list # 列出 cdx 会话
cdx new [cdx_name] # 新建会话;同名则进入
cdx enter [cdx_name] # 进入会话
cdx mark-viewed [cdx_name] # 标记未读结果为已查看
cdx uuid [cdx_name] # 查看绑定的 Codex session id
cdx uuid --all # 列出所有 cdx 会话的绑定 UUID
cdx delete [cdx_name] # 删除 cdx 映射并 kill tmux
cdx rename [OLD NEW] # 重命名
cdx roots # 管理常用目录
cdx map # 手动映射/导入 Codex 原始会话
cdx doctor # 只报告状态问题
cdx init # 初始化并安装 hook
cdx install-hook # 安装/刷新 Codex hookcdx doctor检查内容包括:
- 配置文件是否存在、JSON 是否有效
- 注册表是否存在、JSON 是否有效
hooksfeature 是否启用SessionStarthook 是否安装- root 名和路径是否重复
- Codex session id 是否重复绑定
- tmux session 是否 live
last_cwd是否还存在
doctor 只报告,不自动修复。
删除命令:
rm -f ~/.local/bin/cdx删除 Codex Deck 数据:
rm -rf ~/.config/cdx ~/.local/share/cdx ~/.local/state/cdx如需手动清理 Codex hook,请编辑:
~/.codex/hooks.json
~/.codex/config.toml
Codex Deck 不会删除 Codex 原始 conversation 历史。