1. 从 openrig 说起:一个把 Claude Code 和 Codex 装进 tmux 的编排器
第一次看到openrig这个名字,我下意识把它拆成了 “open” 和 “rig” 两半。rig 在英文里是“装配、搭台子”的意思,在工程语境里常指把一堆零散部件组装成一套能跑的系统。放到 AI 编程助手这个场景里,openrig 干的事情就很清楚了:它把 Claude Code、Codex 这类命令行 AI 编程工具,和 Node.js 运行时、tmux 终端复用器这几样东西,编排成一套可以稳定运行、随时切换、后台常驻的工作环境。
如果你最近在折腾 Claude Code 或者 Codex,大概率踩过这些坑:Node.js 版本不对导致安装直接报错,error installing 24.21.0: node.js v24.21.0 is not yet released这种提示看着就头大;Codex 登录不上、codex is ignoring 1 unrecognized configuration setting这种警告反复出现;Claude Code 在 VS Code 里配置好了,终端里却调不起来;想同时跑 Claude Code 和 Codex,两个进程抢终端、抢会话,切来切去手忙脚乱。openrig 要解决的,就是这一整套“环境装配 + 多工具编排 + 会话持久化”的问题。
这篇文章适合三类人看:第一类是刚接触 Claude Code、Codex,连 Node.js 都还没装明白的新手;第二类是已经能跑起来,但被多工具切换、会话丢失、代理配置搞烦的中级用户;第三类是想把 AI 编程助手真正接入日常工作流,让它像 tmux 一样常驻后台、随叫随到的重度用户。我会从 openrig 的整体设计思路讲起,把 Node.js 环境、tmux 会话管理、Claude Code 与 Codex 的安装配置、模型接入、常见报错排查这几块全部拆开,给你一套可以直接抄作业的方案。
需要先说明一点:openrig 本身是一个偏“编排层”的项目,它不替代 Claude Code 或 Codex,而是站在它们上面,负责把运行环境、终端会话、工具切换这几件事管起来。理解了这一层,后面所有的配置和操作就都顺了。
2. 整体设计与思路拆解:为什么要用 tmux 来管 AI 编程助手
2.1 核心痛点:AI 编程助手是“长会话”工具,不是一次性命令
很多人第一次用 Claude Code 或 Codex,是在终端里敲一条命令,等它跑完,看结果,然后关掉。这种用法在简单任务上没问题,但一旦进入真实开发场景,问题就来了。AI 编程助手的工作模式是“多轮对话 + 上下文累积”,你让它读一个文件、改一段代码、再跑一次测试,中间可能来回十几轮。如果每次都要重新启动、重新加载上下文,效率低得离谱。
更麻烦的是,Claude Code 和 Codex 这类工具在运行时会占用终端的前台。你一旦关掉终端窗口,或者 SSH 断线,会话就没了,之前积累的上下文全部丢失。这就是为什么 tmux 会成为 openrig 的核心组件——tmux 能让会话在后台常驻,你随时 attach 回去,上下文还在,历史还在,就像什么都没发生过。
我自己的习惯是:开一个 tmux 会话专门跑 Claude Code,再开一个跑 Codex,两个会话互不干扰。需要哪个就 attach 到哪个,不需要的时候 detach 掉,它们在后台继续跑。这种工作方式一旦用顺了,就再也回不去了。
2.2 为什么是 Node.js:Claude Code 和 Codex 的共同运行时底座
Claude Code 和 Codex 的 CLI 版本,本质上都是 Node.js 应用。这意味着你的机器上必须有一个能用的 Node.js 环境,而且版本不能太旧,也不能太新到还没发布。热词里那个error installing 24.21.0: node.js v24.21.0 is not yet released or is not available就是典型的版本踩坑——你照着某个教程去装一个还不存在的版本,npm 直接给你报错。
openrig 在环境层面的思路很明确:锁定一个 LTS(长期支持)版本的 Node.js,比如 20.x 或 22.x,用 nvm 或系统包管理器装好,然后在这个基础上装 Claude Code 和 Codex。为什么不追最新版?因为 AI 编程工具的依赖链比较长,最新版 Node.js 有时候会有兼容性问题,LTS 版本经过大量项目验证,稳定性高得多。
这里有个细节值得展开:Node.js 的安装方式在不同系统上差别很大。Ubuntu 上你可以用 NodeSource 的源装 20+,也可以用 nvm 装;Windows 上官方安装包最省事,但如果你要在 WSL 里跑,又得按 Linux 的方式装。openrig 的价值就在于,它把这些差异收敛成一套统一的配置流程,你不需要在每个系统上重新摸索。
2.3 tmux 的角色:不只是终端复用,更是“会话编排层”
很多人对 tmux 的理解停留在“分屏工具”这个层面,其实 tmux 真正的价值在于会话管理。一个 tmux 会话可以包含多个窗口,每个窗口可以包含多个面板,而整个会话可以 detach 到后台,随时 attach 回来。对于 AI 编程助手这种需要长时间运行、需要保持上下文的工具来说,tmux 几乎是天然的最佳搭档。
openrig 把 tmux 作为编排层,具体做法是:为每个 AI 工具分配独立的 tmux 会话或窗口,通过脚本化的方式启动、切换、关闭。比如你可以定义一个openrig claude命令,它自动检查 tmux 会话是否存在,不存在就新建一个并启动 Claude Code,存在就直接 attach 过去。这种“幂等”的操作方式,让你不用关心底层状态,只管用就行。
再进一步,tmux 还解决了多工具并行的问题。Claude Code 和 Codex 可以同时跑在不同的 tmux 窗口里,你用一个快捷键就能在它们之间切换。热词里提到的cc switch local proxy failed while handling codex endpoint /responses这类问题,很多时候就是因为多个工具共用同一个终端环境,配置互相干扰。用 tmux 隔离之后,每个工具跑在自己的会话里,环境变量、工作目录、代理配置都可以独立设置,冲突自然就少了。
2.4 方案选型对比:为什么不用 screen、不用后台进程、不用 IDE 插件
有人可能会问:终端复用器又不是只有 tmux,screen 也能干这事,为什么 openrig 选 tmux?我的实际体验是,tmux 在配置灵活性、脚本化能力、社区活跃度上都明显优于 screen。tmux 的配置文件可以写得很细,快捷键可以自定义,而且有大量现成的插件和脚本可以参考。screen 虽然更老牌,但在现代开发环境里,tmux 已经是事实标准。
那为什么不用nohup或者&把进程丢到后台?因为 AI 编程助手需要交互,你随时可能要输入新的指令、查看输出、调整参数。纯后台进程没有交互能力,等于废了一半。IDE 插件(比如 Claude Code for VS Code)确实方便,但它绑定在 IDE 里,终端里的工作流就覆盖不到。openrig 的定位是“终端优先”,tmux 正好匹配这个定位。
下面这张表是我自己整理的工具选型对比,可以帮你快速判断哪种方式适合你:
| 方案 | 会话持久化 | 多工具并行 | 交互能力 | 脚本化 | 适用场景 |
|---|---|---|---|---|---|
| 直接终端运行 | 否 | 差 | 强 | 弱 | 临时试用 |
| nohup/后台进程 | 是 | 一般 | 无 | 中 | 纯批处理任务 |
| IDE 插件 | 依赖 IDE | 一般 | 强 | 弱 | IDE 内开发 |
| tmux + openrig | 是 | 强 | 强 | 强 | 日常主力工作流 |
这张表不是绝对的,但能说明 openrig 选择 tmux 作为核心编排层的合理性。接下来我会把具体的安装、配置、实操过程一步步拆开讲。
3. 核心细节解析与实操要点:Node.js、tmux、Claude Code、Codex 四件套
3.1 Node.js 安装:版本选择与系统差异处理
Node.js 是整个技术栈的地基,地基没打好,后面全是坑。我先说版本选择:截至我写这篇文章的时候,Node.js 20.x 和 22.x 都是 LTS 版本,Claude Code 和 Codex 在这两个版本上都能正常跑。热词里出现的node.js v24.21.0 is not yet released说明有人试图装一个还不存在的版本,这种错误通常来自教程过时或者复制粘贴时没核对版本号。
在 Ubuntu 上装 Node.js 20+,我推荐两种方式。第一种是用 NodeSource 的源:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs装完之后用node -v和npm -v验证。第二种是用 nvm(Node Version Manager),这种方式的好处是可以在多个 Node.js 版本之间切换,适合需要同时维护多个项目的开发者:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20 nvm use 20Windows 上就简单多了,直接去 Node.js 官网下载 LTS 版本的安装包,一路下一步就行。如果你在 Windows 上用 WSL,那就按 Ubuntu 的方式装。这里有个坑要注意:WSL 里的 Node.js 和 Windows 本体的 Node.js 是两套独立环境,你在 WSL 里装的 Claude Code 不会出现在 Windows 终端里,反之亦然。搞清楚自己到底在哪个环境里工作,能省掉很多“为什么命令找不到”的困惑。
提示:装完 Node.js 之后,建议把 npm 的源配置一下。如果你在国内,默认源有时候会慢,换成国内镜像能明显提升安装速度。但具体用哪个源,根据你所在网络环境选择,这里不展开。
3.2 tmux 安装与基础配置:让会话管理变得顺手
tmux 的安装本身很简单,Ubuntu 上sudo apt-get install tmux,macOS 上brew install tmux,Windows 上如果你用 WSL 就按 Ubuntu 的方式装。装完之后,默认配置能用,但不够顺手。我建议至少改两个地方:前缀键和窗口编号。
默认的前缀键是Ctrl+b,这个组合在终端里不算特别顺手。很多人会改成Ctrl+a,因为 screen 用户习惯这个。改法是在~/.tmux.conf里加一行:
set-option -g prefix C-a bind-key C-a send-prefix窗口编号从 1 开始而不是 0,也是常见改法:
set -g base-index 1 setw -g pane-base-index 1这些配置看起来是小事,但每天用几十次的东西,顺手和不顺手差别很大。openrig 的脚本会依赖 tmux 的会话命名,所以建议给会话起有意义的名字,比如claude、codex,而不是默认的数字编号。
3.3 Claude Code 安装与配置:从零到能跑
Claude Code 的安装方式取决于你用的是哪个版本。CLI 版本通常通过 npm 安装:
npm install -g @anthropic-ai/claude-code装完之后,第一次运行claude会引导你登录。如果你用的是官方订阅,按提示走就行。热词里那个your organization has disabled claude subscription access for claude code说明有些组织账号默认关闭了 Claude Code 的访问权限,这种情况需要管理员在后台开启,个人用户一般不会遇到。
登录完成之后,Claude Code 就可以在终端里用了。但如果你想像 openrig 那样把它跑在 tmux 里,还需要注意几点:第一,Claude Code 的工作目录很重要,它默认读取当前目录下的文件作为上下文,所以启动前先cd到你的项目目录;第二,Claude Code 会读取一些环境变量,比如 API 相关的配置,如果你用第三方 API,这些变量要在启动前设好;第三,Claude Code 的输出比较长,tmux 窗口建议开大一点,或者用Ctrl+b [进入滚动模式查看历史输出。
VS Code 里配置 Claude Code 是另一条路。装好 Claude Code for VS Code 插件之后,你可以在 VS Code 的终端里直接调用 Claude Code,也可以在命令面板里找相关命令。但要注意,VS Code 终端和系统终端的环境变量可能不一致,如果你在系统终端里配好了 API key,VS Code 里却报错,大概率是环境变量没继承过去。
3.4 Codex 安装与配置:登录、模型接入与常见报错
Codex 的安装同样走 npm:
npm install -g @openai/codex装完之后运行codex会引导登录。热词里codex登录不上、codex无法加载组织设置这类问题,通常和网络环境、账号权限有关。如果你用的是第三方 API 接入 Codex,比如接入 DeepSeek 或其他模型,配置方式会不一样,需要在配置文件里指定 endpoint 和 model。
Codex 的配置文件一般在~/.codex/config或者项目目录下的.codex文件里。热词里codex is ignoring 1 unrecognized configuration setting. check for typos or d这个警告,说明配置文件里有一个键名写错了或者不被当前版本支持。Codex 的配置项在不同版本之间会有变化,遇到这种警告,最稳妥的做法是去官方文档核对当前版本的配置项列表,把不认识的键删掉或者改对。
还有一个热词是{"detail":"the 'gpt-5.6-sol' model is not supported when using codex with a,这明显是模型名称写错了或者用了不支持的模型。Codex 支持的模型列表是动态变化的,你配置的模型名必须和官方支持的名称完全一致,大小写、连字符都不能错。遇到这种报错,先检查模型名,再检查 API endpoint 是否匹配。
3.5 多工具切换与代理配置:cc switch 与 local proxy 的坑
热词里cc switch local proxy failed while handling codex endpoint /responses这个报错,涉及的是多工具切换时的代理配置问题。cc switch 这类工具的作用是在 Claude Code 和 Codex 之间切换,或者在不同的 API 提供商之间切换。它的工作原理通常是修改环境变量或者配置文件,让不同的工具指向不同的 endpoint。
问题出在:当你同时跑 Claude Code 和 Codex,并且它们共用同一个代理端口或者配置文件时,切换操作可能会互相干扰。比如 cc switch 把代理指向了 Codex 的 endpoint,但 Claude Code 还在用旧的配置,就会报local proxy failed。解决办法是给每个工具独立的配置文件和独立的环境变量,不要共用。tmux 在这里又派上用场了:每个 tmux 会话可以有自己的环境变量,Claude Code 和 Codex 跑在不同的会话里,配置互不影响。
下面这张表整理了几个常见报错和对应的排查方向:
| 报错信息 | 可能原因 | 排查方向 |
|---|---|---|
| node.js v24.21.0 is not yet released | 版本号写错或教程过时 | 核对 Node.js 官方 LTS 版本 |
| codex is ignoring 1 unrecognized configuration setting | 配置文件键名错误 | 核对官方配置项列表 |
| the 'gpt-5.6-sol' model is not supported | 模型名错误或不支持 | 核对支持的模型列表 |
| cc switch local proxy failed | 多工具共用代理配置 | 隔离各工具的配置和环境变量 |
| your organization has disabled claude subscription access | 组织权限限制 | 联系管理员开启权限 |
4. 实操过程与核心环节实现:从裸机到 openrig 工作流
4.1 环境准备清单与安装顺序
在开始之前,先确认你手里有什么。一台能跑 Linux 或 macOS 的机器,或者 Windows + WSL,这是基础。然后按下面的顺序装:
- Node.js 20 LTS:用 nvm 或 NodeSource 装,装完验证
node -v输出 v20.x。 - npm 源配置:根据网络环境决定是否换源,换完用
npm config get registry确认。 - tmux:用系统包管理器装,装完改一下
~/.tmux.conf。 - Claude Code:
npm install -g @anthropic-ai/claude-code,然后claude登录。 - Codex:
npm install -g @openai/codex,然后codex登录。 - openrig 脚本:把启动、切换、关闭的脚本放到
~/bin或者/usr/local/bin,加执行权限。
这个顺序不能乱,因为 Claude Code 和 Codex 都依赖 Node.js,tmux 又要在它们之前装好,否则脚本没法测试。我见过有人先装 Claude Code 再装 Node.js,结果 npm 命令都找不到,白白浪费时间。
4.2 tmux 会话编排脚本:一个命令搞定启动和切换
openrig 的核心是一组 shell 脚本,我把自己用的版本简化一下给你看。先定义一个通用的会话管理函数:
#!/bin/bash # openrig.sh SESSION_NAME=$1 COMMAND=$2 # 检查会话是否存在 tmux has-session -t "$SESSION_NAME" 2>/dev/null if [ $? != 0 ]; then # 不存在则新建,并在其中运行命令 tmux new-session -d -s "$SESSION_NAME" -c "$PWD" tmux send-keys -t "$SESSION_NAME" "$COMMAND" C-m fi # attach 到会话 tmux attach -t "$SESSION_NAME"这个脚本的逻辑是:先检查指定名字的 tmux 会话是否存在,不存在就新建一个,把命令发进去,然后 attach。存在的话直接 attach。这样你每次运行openrig claude,如果 Claude Code 已经在跑,就直接切过去;如果没跑,就启动一个新的。
再进一步,你可以定义两个别名:
alias rig-claude='openrig.sh claude "claude"' alias rig-codex='openrig.sh codex "codex"'放到~/.bashrc或~/.zshrc里,以后敲rig-claude和rig-codex就能在 Claude Code 和 Codex 之间切换。这种体验比每次手动tmux new、tmux attach要顺滑得多。
4.3 Claude Code 在 tmux 中的实际运行记录
我拿一个真实项目举例。假设项目目录是~/projects/myapp,我先cd进去,然后运行rig-claude。脚本会新建一个叫claude的 tmux 会话,工作目录是~/projects/myapp,然后在里面启动 Claude Code。
Claude Code 启动后,我输入第一条指令:“读一下 src 目录下的所有文件,告诉我这个项目的结构。”Claude Code 会开始扫描文件,输出分析结果。这个过程可能持续几十秒,期间我可以按Ctrl+b ddetach 出去,去干别的事。等它跑完,我再tmux attach -t claude回来看结果。
如果我要同时用 Codex,就开另一个终端,运行rig-codex。Codex 跑在独立的codex会话里,和 Claude Code 互不干扰。我可以在两个会话之间来回切换,让 Claude Code 分析代码结构,让 Codex 写单元测试,两边并行推进。
这里有个实操细节:Claude Code 和 Codex 都会在项目目录下生成一些缓存文件或配置文件,如果你不希望它们污染项目目录,可以在启动前设置环境变量,把配置目录指向别处。具体变量名每个工具不一样,去官方文档查一下就行。
4.4 Codex 接入第三方模型的配置过程
Codex 默认接入的是 OpenAI 的模型,但很多人想接入 DeepSeek、Qwen、GLM 这些模型。热词里codex接入deepseek、使用cc switch 接入 deepseek v4, qwen, glm等模型说的就是这件事。
配置过程大致是这样的:在 Codex 的配置文件里,把 endpoint 指向第三方 API 的地址,把 model 改成对应的模型名,把 API key 设成第三方平台的 key。具体配置项名称每个版本可能不同,但核心就是这三样:endpoint、model、key。
我实测下来,接入第三方模型时最容易出问题的地方是 endpoint 的路径。有些平台的 API 路径和 OpenAI 不完全一致,比如/v1/chat/completions和/responses的区别。热词里cc switch local proxy failed while handling codex endpoint /responses这个报错,很可能就是 endpoint 路径写错了,或者代理层没有正确转发/responses这个路径。解决办法是先用 curl 直接测试第三方 API 的 endpoint,确认能通,再配到 Codex 里。
4.5 完整工作流演示:从启动到任务完成
我把完整流程串一遍。早上到工位,打开终端,运行rig-claude,attach 到 Claude Code 会话,让它读一下昨天的代码改动,总结一下进度。然后 detach,运行rig-codex,让 Codex 根据今天的任务写几个测试用例。两个会话在后台并行跑,我可以在它们之间切换,也可以去开会,回来再 attach 看结果。
这种工作流的关键在于“会话持久化”和“多工具并行”。没有 tmux,你关掉终端就全没了;没有 openrig 的脚本,你每次都要手动管理会话,麻烦且容易出错。一旦这套流程跑顺了,AI 编程助手才真正变成日常工具,而不是偶尔玩玩的玩具。
5. 常见问题与排查技巧实录:踩过的坑和绕过的弯
5.1 Node.js 版本相关的报错与解决
Node.js 版本问题是最常见的。除了前面说的node.js v24.21.0 is not yet released,还有几种典型情况。一种是npm ERR! engine Unsupported engine,说明你装的某个包要求更高版本的 Node.js,而你的版本太低。解决办法是用 nvm 切到更高的 LTS 版本。另一种是Error: Cannot find module,明明装了包却找不到,通常是全局安装路径和当前 Node.js 版本不匹配,用npm root -g看一下全局路径,确认包装对了地方。
还有一个隐蔽的坑:如果你同时装了系统 Node.js 和 nvm 管理的 Node.js,which node可能指向系统版本,而你以为自己在用 nvm 版本。这种混乱会导致包装了但用不了。我的建议是,要么全用系统包管理器,要么全用 nvm,不要混着来。
5.2 tmux 会话丢失与恢复
tmux 会话一般不会丢,除非机器重启或者 tmux 进程被 kill。如果机器重启了,之前的会话确实没了,但你可以用 tmux 的插件(比如 tmux-resurrect)来保存和恢复会话。这个插件会定期保存会话状态,重启后一键恢复。对于跑着 AI 编程助手的会话来说,这个功能很实用,因为重新启动 Claude Code 并重新加载上下文是要花时间的。
另一个常见问题是 attach 的时候提示no sessions,但你明明记得有会话在跑。这种情况通常是 tmux server 挂了,或者你在不同的用户下运行 tmux。检查一下tmux ls的输出,确认当前用户有没有活跃会话。
5.3 Claude Code 与 Codex 的登录与权限问题
Claude Code 的登录问题,热词里your organization has disabled claude subscription access for claude code是比较特殊的一种,属于组织层面的权限限制。个人账号一般不会遇到。如果你用的是个人订阅,登录时按提示走 OAuth 流程就行。如果登录后提示权限不足,检查一下订阅是否有效、是否在正确的区域。
Codex 的登录问题,codex登录不上通常和网络环境有关。如果你在受限网络里,登录请求可能超时。这种情况下,检查一下你的网络配置,确认能正常访问 API endpoint。另外,Codex 的登录凭证会缓存在本地,如果缓存损坏,删掉缓存重新登录通常能解决。
5.4 模型接入与 endpoint 配置的排查思路
模型接入的问题,核心就三个变量:endpoint、model、key。排查的时候,先用 curl 直接测 endpoint:
curl -X POST https://your-api-endpoint/v1/chat/completions \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"your-model","messages":[{"role":"user","content":"test"}]}'如果 curl 能通,说明 endpoint 和 key 没问题,问题在 Codex 的配置上。如果 curl 不通,先解决 API 层面的问题。这种“分层排查”的思路,能帮你快速定位问题出在哪一层,而不是盲目改配置。
5.5 常见问题速查表
| 问题现象 | 可能原因 | 解决方向 |
|---|---|---|
| npm 安装报 engine 错误 | Node.js 版本过低 | 用 nvm 切到 LTS 版本 |
| tmux attach 提示 no sessions | tmux server 挂了或用户不对 | 检查 tmux ls 和当前用户 |
| Claude Code 登录后权限不足 | 订阅或组织权限限制 | 检查订阅状态或联系管理员 |
| Codex 登录超时 | 网络环境受限 | 检查网络配置和 API 可达性 |
| 模型不支持报错 | 模型名错误 | 核对官方支持的模型列表 |
| 代理切换失败 | 多工具共用配置 | 隔离各工具的环境变量和配置文件 |
5.6 我踩过的几个坑和对应的经验
第一个坑是 Node.js 版本混用。我一开始用系统自带的 Node.js,后来装了 nvm,结果 npm 全局包一会儿能用到一会儿用不到。后来统一用 nvm,把系统 Node.js 卸了,问题消失。
第二个坑是 tmux 会话命名冲突。我一开始用默认的数字编号,后来脚本多了,分不清哪个会话是哪个。改成有意义的命名之后,管理起来清晰多了。
第三个坑是 Codex 配置文件里的模型名。我照着某个教程写了一个模型名,结果 Codex 报不支持。后来去官方文档核对,发现模型名多了一个连字符。这种细节错误很隐蔽,但排查起来不难,关键是养成核对官方文档的习惯。
第四个坑是 Claude Code 在 VS Code 里的环境变量问题。我在系统终端里配好了 API key,VS Code 终端里却报错。后来发现 VS Code 启动时没有继承 shell 的环境变量,需要在 VS Code 的设置里手动配,或者从终端启动 VS Code。
6. 进阶玩法:把 openrig 扩展成个人 AI 工作台
6.1 多项目多会话的目录结构设计
当你同时维护多个项目时,每个项目可能需要独立的 Claude Code 会话。我的做法是按项目名命名 tmux 会话,比如claude-myapp、claude-otherproj。脚本里把项目路径作为参数传进去,启动时自动cd到对应目录。这样你可以在不同项目的 AI 会话之间快速切换,而不会混淆上下文。
目录结构上,我建议把 openrig 的脚本放在~/bin/openrig/下,配置文件放在~/.config/openrig/下,和项目代码分开。这样升级脚本或者换机器的时候,只需要拷贝这两个目录就行。
6.2 结合 VS Code 的混合工作流
虽然 openrig 是终端优先的,但 VS Code 仍然是很多人的主力编辑器。混合工作流的做法是:在 VS Code 里写代码,在 tmux 里跑 Claude Code 和 Codex。VS Code 的终端可以直接 attach 到 tmux 会话,这样你既能在编辑器里看代码,又能在终端里和 AI 助手交互。
具体操作:在 VS Code 里打开终端,运行tmux attach -t claude,Claude Code 的界面就出现在 VS Code 的终端面板里。你可以一边看代码,一边让 Claude Code 分析或修改。这种体验比纯终端或者纯 IDE 都要灵活。
6.3 自动化与快捷键绑定
如果你用的是 i3、sway 这类平铺窗口管理器,可以把 openrig 的启动脚本绑定到快捷键上。比如Super+c打开 Claude Code 会话,Super+x打开 Codex 会话。这样一键就能唤起 AI 助手,效率提升明显。
即使不用窗口管理器,也可以在 shell 里定义别名和函数,把常用操作封装起来。比如一个rig-status命令,列出当前所有 openrig 相关的 tmux 会话和它们的状态。这些小的自动化积累起来,会让整个工作流越来越顺。
6.4 后续可以扩展的方向
openrig 目前主要解决的是环境装配和会话编排,后面还可以往几个方向扩展。一是日志和审计,把 Claude Code 和 Codex 的交互记录保存下来,方便回溯和复盘。二是多模型路由,根据任务类型自动选择 Claude 还是 Codex,或者自动切换不同的第三方模型。三是团队协作,把 openrig 的配置标准化,让团队成员用同一套环境,减少“在我机器上能跑”的问题。
这些扩展不一定都要做,但思路是:openrig 作为一个编排层,它的边界可以很灵活。核心是把环境、会话、工具这三件事管好,剩下的按需扩展就行。
我个人在实际操作中的体会是,AI 编程助手的效率瓶颈往往不在模型本身,而在工作流的顺畅程度。环境装不对、会话老丢、工具切来切去,这些琐事消耗的精力比写代码还多。openrig 这类编排工具的价值,就是把这些琐事收敛掉,让你专注于真正重要的事情——用 AI 把代码写好。最后再分享一个小技巧:tmux 的Ctrl+b z可以把当前面板全屏,Claude Code 输出长内容的时候特别有用,看完再按一次恢复布局。这个快捷键我每天要用几十次,强烈建议记住。