diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts index 272c76f..9206926 100644 --- a/src/.vuepress/sidebar.ts +++ b/src/.vuepress/sidebar.ts @@ -275,6 +275,18 @@ export default sidebar({ }, ], }, + { + text: 'Codex', + icon: 'fa6-solid:terminal', + collapsible: true, + children: [ + { + text: 'tmux + Codex 终端会话管理实战', + icon: 'mdi:console', + link: 'tmux-codex-workflow.md', + }, + ], + }, { text: 'ChatGPT', icon: 'fa6-solid:comments', diff --git a/src/ai/README.md b/src/ai/README.md index 2015d31..ab8dee0 100644 --- a/src/ai/README.md +++ b/src/ai/README.md @@ -18,6 +18,7 @@ tag: - OpenCode CLI 实战指南 - OpenCode TUI 实战指南 - Claude Code 多分支工作流实战总结(2026) +- tmux + Codex 终端会话管理实战 - ChatGPT 使用记录与实践 - OpenClaw 个人 24 小时在线部署实战 - iFlow 流程编排实践记录 diff --git a/src/ai/tmux-codex-workflow.md b/src/ai/tmux-codex-workflow.md new file mode 100644 index 0000000..acaf3fe --- /dev/null +++ b/src/ai/tmux-codex-workflow.md @@ -0,0 +1,309 @@ +--- +title: tmux + Codex 终端会话管理实战 +icon: mdi:console +date: 2026-05-13 +category: + - AI + - 开发工具 + - Linux +tag: + - tmux + - Codex + - 终端 + - AI编程 + - Linux +--- + +# tmux + Codex 终端会话管理实战 + +Codex 很适合在终端里处理长任务,但如果直接跑在普通 shell 里, +终端关闭、SSH 断开、临时切换任务都会影响体验。tmux 的价值就是把 +终端会话托管起来:任务可以留在后台,回来以后继续接着看。 + + + +--- + +## 一、为什么 Codex 适合搭配 tmux + +使用 Codex 时,经常会遇到这些场景: + +1. 让 Codex 分析一个较大的仓库,需要等一段时间。 +2. 跑构建、测试、日志排查时,需要同时看多个终端。 +3. 通过 SSH 连服务器,网络一断,普通终端里的任务就中断了。 +4. 临时去处理别的事情,回来后希望会话还在原来的状态。 + +tmux 正好解决这些问题。 + +一句话概括:tmux 是终端里的会话管理器。 + +它提供的核心能力包括: + +- 后台会话:命令继续留在服务器或本机终端环境里。 +- 断开恢复:退出终端后,还可以重新 attach 回去。 +- 多窗口:一个会话里管理多组任务。 +- 多分屏:同一个屏幕里同时放 Codex、测试、日志、Git 命令。 + +对 Codex 这类终端 AI 工具来说,tmux 最大的意义不是炫技,而是稳定。 + +--- + +## 二、安装与验证 + +Ubuntu / Debian 系统可以直接安装: + +```bash +sudo apt install tmux +``` + +如果遇到软件源连接失败,尤其是阿里云源、公司内网源或临时网络问题, +可以先更新索引: + +```bash +sudo apt update +sudo apt install tmux +``` + +如果仍然失败,再检查当前源是否可用,必要时切换到更稳定的软件源。 + +安装完成后查看版本: + +```bash +tmux -V +``` + +能看到类似下面的输出,就说明安装成功: + +```text +tmux 3.4 +``` + +--- + +## 三、Codex 推荐启动方式 + +日常最推荐的方式是:一个项目一个 tmux 会话。 + +进入项目目录后创建名为 `codex` 的会话: + +```bash +tmux new -s codex +``` + +进入 tmux 后再启动 Codex: + +```bash +codex +``` + +需要临时离开时,不要直接关闭终端,而是 detach: + +```text +Ctrl+b 松开后按 d +``` + +注意这里不是一直按住 `Ctrl+b+d`,而是先按 `Ctrl+b`,松开,再按 `d`。 + +回来时重新连接: + +```bash +tmux attach -t codex +``` + +查看当前有哪些会话: + +```bash +tmux ls +``` + +任务结束后关闭会话: + +```bash +tmux kill-session -t codex +``` + +这一套命令已经能覆盖大部分 Codex 使用场景。 + +--- + +## 四、常用快捷键 + +tmux 默认前缀键是 `Ctrl+b`。多数操作都遵循同一个节奏: + +```text +先按 Ctrl+b,松开,再按目标键 +``` + +常用快捷键如下: + +| 操作 | 快捷键 | +| --- | --- | +| 新建窗口 | `Ctrl+b c` | +| 左右分屏 | `Ctrl+b %` | +| 上下分屏 | `Ctrl+b "` | +| 切换分屏 | `Ctrl+b 方向键` | +| 轮流切换窗格 | `Ctrl+b o` | +| 关闭当前分屏 | `Ctrl+b x` | +| 离开当前会话 | `Ctrl+b d` | + +其中有两个键容易误解: + +- `%` 实际是 `Shift+5`。 +- `"` 实际是 `Shift+'`。 + +所以左右分屏不是按一个独立的百分号键,而是在 `Ctrl+b` 之后按 +`Shift+5`。 + +--- + +## 五、Codex 里的翻页和滚动问题 + +Codex TUI 会接管终端里的上下键、滚轮和部分显示区域,所以在普通终端里 +习惯的滚动方式,进入 tmux + Codex 后可能会变得不顺手。 + +如果要查看 tmux 的历史输出,可以进入复制模式: + +```text +Ctrl+b [ +``` + +进入后可以使用: + +- `PageUp` / `PageDown` 翻页。 +- 方向键上下移动。 +- `q` 退出复制模式。 + +如果希望 Codex 的输出尽量保留在终端滚动历史里,可以考虑这样启动: + +```bash +codex --no-alt-screen +``` + +`--no-alt-screen` 的作用是避免使用独立的 alternate screen,更适合需要 +保留历史输出、经常回看上下文的终端工作流。 + +我的建议是: + +- 长任务、远程 SSH、需要恢复会话时,用 `tmux + codex`。 +- 需要频繁回看大量历史输出时,优先尝试 `codex --no-alt-screen`。 +- 如果已经在 tmux 里,掌握 `Ctrl+b [` 是最关键的滚动技巧。 + +--- + +## 六、实际踩坑总结 + +### 1. `Ctrl+b d` 没反应 + +大多数时候是按法不对。 + +正确节奏是: + +```text +按 Ctrl+b +松开 +再按 d +``` + +tmux 的很多快捷键都不是三键同时按,而是“前缀键 + 指令键”。 + +### 2. 分屏快捷键按不出来 + +左右分屏: + +```text +Ctrl+b % +``` + +这里的 `%` 是 `Shift+5`。 + +上下分屏: + +```text +Ctrl+b " +``` + +这里的 `"` 是 `Shift+'`。 + +### 3. 后台会话太多 + +先查看: + +```bash +tmux ls +``` + +再按会话名清理: + +```bash +tmux kill-session -t 会话名 +``` + +例如: + +```bash +tmux kill-session -t codex +``` + +### 4. 快捷键只有在 tmux 里才生效 + +`tmux ls` 能看到后台会话,不代表当前终端已经在 tmux 里。 + +判断方式很简单:如果底部有 tmux 状态栏,通常说明你正在 tmux 会话里; +如果没有状态栏,先执行: + +```bash +tmux attach -t codex +``` + +进入会话后再使用 `Ctrl+b` 系列快捷键。 + +--- + +## 七、推荐日常工作流 + +我的日常使用方式可以压缩成三条: + +1. 一个项目一个 tmux 会话。 +2. 左边跑 Codex,右边跑测试、日志、Git 命令。 +3. 长任务全部放进 tmux,避免终端关闭或 SSH 断开导致中断。 + +一个典型启动流程如下: + +```bash +cd /path/to/project +tmux new -s codex +codex --no-alt-screen +``` + +进入后可以左右分屏: + +```text +Ctrl+b % +``` + +左侧保持 Codex 对话,右侧执行: + +```bash +git status +npm run docs:build +tail -f app.log +``` + +这样终端不再只是一个输入命令的地方,而是一个可恢复、可拆分、 +可长期运行的工作台。 + +--- + +## 八、总结 + +tmux 本身并不复杂,真正需要记住的只有几件事: + +- `tmux new -s codex`:创建会话。 +- `Ctrl+b d`:离开但不关闭。 +- `tmux attach -t codex`:回到会话。 +- `Ctrl+b %` / `Ctrl+b "`:左右或上下分屏。 +- `Ctrl+b [`:查看历史输出。 + +如果你经常在终端里使用 Codex,尤其是在远程服务器或长任务场景下, +tmux 基本属于必备工具。它不改变 Codex 的能力,但能明显提升会话稳定性、 +任务恢复能力和多终端协作效率。