首页 / 资讯中心 / 文章详情

openrig 工作台搭建:Claude Code 与 Codex 多模型切换及 tmux 持久化实战

openrig 工作台搭建:Claude Code 与 Codex 多模型切换及 tmux 持久化实战 ★ FEATURED ARTICLE
1. 从“openrig”这个名字说起它到底想解决什么问题第一次看到“openrig”这个词我脑子里蹦出来的不是某个具体软件而是一种“开放式工作台”的意象。rig 在英文里本意是“装配、搭建”在工程语境里常指一套成套的设备或支架比如测试台、矿机架、摄影机稳定器。前面加个 open意思就很明确了一套开放的、可自由拼装的工具台。结合热搜词里高频出现的 Claude Code、Codex、Node.js、tmux 这些关键词我基本能判断出openrig 面向的是这样一群人——他们日常要在终端里跟多个 AI 编程助手打交道希望把这些工具串成一个顺手的工作流而不是每换一个模型就重装一遍环境。这个判断不是凭空来的。热搜词里有一大堆非常具体的报错和安装问题“cc switch local proxy failed while handling codex endpoint /responses”、“error installing 24.21.0: node.js v24.21.0 is not yet released”、“your organization has disabled claude subscription access for claude code”、“codex is ignoring 1 unrecognized configuration setting”。这些词条拼在一起勾勒出的画面非常清晰一个开发者手上有 Claude Code又想接 Codex中间还想用 cc switch 之类的工具做本地代理切换结果在 Node.js 版本、代理转发、组织权限、配置字段这几道坎上反复卡壳。所以 openrig 的核心价值我理解成一句话把“多个 AI 编程 CLI 工具 本地模型 终端复用”这套组合拳收敛成一套可复现、可迁移、可调试的装配方案。它不是一个全新的 AI 模型也不是一个 IDE 插件而更像是一份“工作台搭建手册”加上配套的脚本和配置约定。适合谁来参考三类人最对口一是刚接触 Claude Code 或 Codex、还在被安装和登录折磨的新手二是已经跑通单个工具、想进一步做多模型切换和多会话管理的中级用户三是需要在 Ubuntu 服务器或远程环境里长期挂着这些工具、追求稳定性的重度用户。我写这篇东西的出发点就是把这套“装配”过程里那些文档不会写、但实际一定会踩的坑按我自己的排查顺序摊开讲。下面不会给你一个万能脚本让你复制粘贴就完事因为环境差异太大那样做反而害人。我会把每一步“为什么这么做”讲清楚你照着思路走遇到报错也能自己定位。2. 环境底座Node.js 版本选择与 Ubuntu 上的安装取舍2.1 为什么 Node.js 版本是第一个绕不过去的坎Claude Code 和 Codex 这类 CLI 工具绝大多数是 Node.js 写的通过 npm 全局安装。热搜里那条 “error installing 24.21.0: node.js v24.21.0 is not yet released or is not available” 就是典型的版本踩坑——有人照着某个教程写了nvm install 24.21.0结果这个版本根本不存在nvm 直接报错。这类问题的根源在于Node.js 的版本号是主版本.次版本.补丁版本24.21.0 意味着主版本 24、次版本 21而 Node.js 24 这条线当时可能还没走到 21 这个次版本或者该版本已被标记为不再维护。我的经验是装这类 AI CLI 工具不要追最新也不要追某个教程里写死的具体小版本而是认准 LTS长期支持线。LTS 版本经过更长时间的验证npm 生态兼容性最好出问题的概率最低。热搜里出现 “node.js lts下载”、“node.js官网下载” 也印证了大家最终都会回到 LTS 这条路上。具体到版本选择我一般这样判断场景推荐版本线理由生产/长期挂机当前 LTS如 20.x、22.x稳定、安全更新有保障尝鲜新特性Current 线可能遇到依赖不兼容不建议主力环境教程指定版本先确认该版本是否存在用nvm ls-remote查证别盲抄2.2 Ubuntu 上装 Node.js 的三种路子我为什么偏向 nvm在 Ubuntu 上装 Node.js常见有三条路apt 直接装、NodeSource 源装、nvm 版本管理器装。热搜里 “ubuntu安装node.js 20” 说明很多人卡在系统自带的 apt 版本太老这个问题上——Ubuntu 仓库里的 Node.js 往往落后好几个大版本装完发现 Claude Code 要求的最低版本都不满足。apt 装法的好处是省事坏处是版本锁死、升级麻烦而且全局包权限容易出问题动不动就要 sudo。NodeSource 源能拿到较新的版本但同样是系统级安装多版本共存困难。我实测下来最舒服的是 nvm理由有三点第一它把 Node.js 装在用户目录下不需要 sudo全局 npm 包也不会污染系统第二切换版本一条命令搞定今天用 20、明天试 22 互不影响第三卸载干净删掉~/.nvm目录就完事不会在系统里留一堆残留。nvm 的安装本身很简单但有个细节很多人忽略安装脚本执行完它会往你的 shell 配置文件.bashrc或.zshrc里追加一段初始化代码你必须重新打开终端或者 source 一下配置文件nvm 命令才生效。我见过不止一个人装完 nvm 直接敲nvm install然后报 command not found回头骂安装脚本有问题其实就是没重载配置。装好 nvm 之后装 Node.js 的流程是# 查看可安装的 LTS 版本 nvm ls-remote --lts # 安装指定 LTS 线的最新版以 20 为例 nvm install 20 # 设为默认新开终端自动使用 nvm alias default 20 # 验证 node -v npm -v注意nvm ls-remote会拉取远程版本列表网络不好时可能很慢甚至超时。如果卡住可以多试几次或者先确认网络能正常访问 npm 相关域名。2.3 npm 全局安装的权限与镜像问题Node.js 装好之后下一步通常是npm install -g装 Claude Code 或 Codex。这里有两个高频坑。第一个是权限如果你用的是 apt 装的 Node.js全局安装目录归 root 所有普通用户装包会报 EACCES 错误。用 nvm 就天然避开了这个问题因为全局目录在用户 home 下。第二个是网络npm 默认源在国内访问可能很慢导致安装超时或半途失败。热搜里 “node.js下载”、“node.js官网下载” 这类词背后往往就是下载慢的焦虑。我的做法是配置一个可靠的镜像源但要注意——镜像源不是越多越好也不是随便找一个就行。有些第三方镜像同步不及时会出现某个包版本缺失的情况。配置命令# 查看当前源 npm config get registry # 设置为常用镜像 npm config set registry https://registry.npmmirror.com # 需要时切回官方 npm config set registry https://registry.npmjs.org装完 Claude Code 或 Codex 之后建议立刻验证一下命令是否可用别等到配置都做完了才发现装了个半成品。验证方式就是敲一下命令名加--version或--help能正常输出就说明二进制链接没问题。3. Claude Code 与 Codex 的安装、登录与组织权限那些事3.1 两个工具的定位差异决定了你的使用姿势在动手装之前先想清楚 Claude Code 和 Codex 各自的定位这直接影响你怎么分配它们。Claude Code 更偏向“在终端里直接操作你的项目”——它能读文件、改代码、执行终端命令是一个能动手的助手。热搜里 “claude code如何直接执行终端命令” 就是大家在探索它的执行能力边界。Codex 则更偏向代码生成与补全的对话式交互CLI 形态下更强调问答和代码片段产出。这个差异意味着如果你要做的是“让 AI 帮我把这个目录下的配置改一遍”Claude Code 更顺手如果你要的是“给我写一段实现某功能的代码”Codex 的对话体验可能更直接。openrig 这套工作台的价值恰恰在于让你能根据任务类型在两者之间快速切换而不是被某一个工具绑死。3.2 安装过程中的版本与依赖陷阱安装 Claude Code 和 Codex命令本身不复杂通常是npm install -g anthropic-ai/claude-code和对应的 Codex 包。但热搜里 “claude code安装”、“codex安装”、“codex安装教程”、“codex安装包” 这么多词条说明安装环节的坑相当密集。我总结下来安装阶段最容易出问题的是三类第一类是 Node.js 版本不满足要求。有些工具会声明engines字段要求 Node.js 大于某个版本。如果你的 Node.js 太老npm 会直接拒绝安装或者装上了运行时报语法错误。解决办法就是前面说的用 nvm 切到 LTS。第二类是全局包路径冲突。如果你之前用 apt 装过 Node.js又用 nvm 装了一个可能出现which node指向的和你以为的不是同一个。这时候npm install -g装到了 A 环境但你运行命令时用的是 B 环境的 PATH结果就是“明明装了却找不到命令”。排查方法很简单which node which npm which claude which codex四个命令的输出路径应该在同一套 Node.js 环境下。如果which claude为空说明全局 bin 目录不在 PATH 里需要检查 nvm 的初始化是否生效。第三类是安装过程中的网络中断导致包损坏。表现是安装命令返回成功但运行时报模块找不到。这种时候别犹豫先卸载再重装npm uninstall -g 包名 npm cache clean --force npm install -g 包名3.3 登录、订阅与组织权限报错的真实原因热搜里有一条非常扎眼的报错“your organization has disabled claude subscription access for claude code”。这个报错的意思是你所在的组织通常是企业账号体系关闭了 Claude 订阅对 Claude Code 的访问权限。这不是你本地环境的问题也不是安装的问题而是账号层面的策略限制。遇到这类报错先别急着折腾本地环境按这个顺序排查确认你登录的账号是不是个人账号还是被组织管理的企业账号。如果是企业账号联系管理员确认是否开放了对应工具的访问权限。如果管理员确认开放了但你仍然报错尝试退出重新登录让 token 刷新。Codex 那边也有类似的情况热搜里 “codex无法加载组织设置”、“codex登录不上” 都是账号与网络层面的问题。登录不上的常见原因包括本地时间不准导致 token 校验失败、网络无法访问认证服务、浏览器回调地址被拦截。其中本地时间这个坑最隐蔽——系统时间偏差超过几分钟很多基于时间戳的认证就会失败。Ubuntu 上可以用timedatectl检查时间同步状态。提示遇到登录类问题先排除账号权限和系统时间这两个非环境因素再去查网络和配置能省下大量瞎折腾的时间。3.4 配置字段拼写错误一个被低估的高频坑热搜里 “codex is ignoring 1 unrecognized configuration setting. check for typos or d...” 这条我一看就笑了因为我自己也踩过。这个提示的意思是Codex 在你的配置文件里发现了一个它不认识的配置项怀疑你拼错了。它不会直接报错退出而是“忽略”这一项继续运行所以很多人根本没注意到直到发现某个配置怎么都不生效。这类问题的排查思路是打开配置文件通常在~/.codex/或项目根目录下逐行核对字段名。常见拼错包括把model写成modle、把apiKey写成apikey大小写敏感、把嵌套层级搞错。我的建议是配置项不要凭记忆写直接对照官方文档或--help输出里的示例。改完之后重启工具让配置重新加载。4. 多模型切换的核心cc switch 与本地代理转发机制4.1 为什么需要“切换”这件事热搜里 “使用cc switch 接入 deepseek v4, qwen, glm等模型”、“cc switch local proxy failed while handling codex endpoint /responses” 这两条把 openrig 这类工作台最核心的需求点出来了一个人不可能只用一个模型。Claude 在某些任务上强DeepSeek 在另一些任务上性价比高Qwen、GLM 各有擅长。如果每换一个模型就要改一遍环境变量、重启一遍工具那效率低得没法用。cc switch 这类工具解决的正是这个问题它在本地起一个代理服务把不同工具的请求转发到不同的后端模型。你的 Claude Code 或 Codex 始终连本地这个代理代理再根据配置决定把请求发给谁。这样切换模型只需要改代理的配置不用动上层工具。4.2 本地代理转发的原理用“前台转接”来理解代理转发这个概念用生活场景类比最好懂。想象你是一个公司的前台所有访客请求都先到你这里。你手里有一张表写着“找张三的访客转给 A 部门找李四的转给 B 部门”。访客不需要知道 A、B 部门在哪只需要知道前台在哪。cc switch 就是那个前台Claude Code 和 Codex 是访客各个模型服务是 A、B 部门。热搜里那条报错 “cc switch local proxy failed while handling codex endpoint /responses”翻译过来就是前台在处理一个要发给 Codex 的/responses请求时失败了。可能的原因有几类代理服务没起来、目标地址配错了、请求格式和目标端点不匹配、网络到不了目标服务。排查时按这个顺序来确认代理进程在运行端口在监听ss -tlnp | grep 端口。确认配置文件里 Codex 对应的后端地址写对了包括协议、域名、路径。用 curl 直接打一下那个后端地址看是否通。看代理的日志通常会打印转发失败的具体原因。4.3 接入第三方模型时的端点与鉴权细节热搜里 “codex接入deepseek”、“使用cc switch 接入 deepseek v4, qwen, glm等模型” 说明大家很关心怎么把 Codex 接到非默认的模型上。这里的关键在于不同模型的 API 端点路径和鉴权方式不一样。有的用/v1/chat/completions有的用/responses有的要求Authorization: Bearer有的用自定义 header。配置的时候最容易错的是端点路径。很多人只改了域名忘了路径也要跟着改结果请求打到了错误的位置返回 404 或者格式错误。另一个高频错误是模型名称热搜里 “the gpt-5.6-sol model is not supported when using codex with a...” 就是典型的模型名不被支持——你填的模型名后端不认识或者该模型不支持 Codex 这种调用方式。我的做法是每接入一个新模型先用 curl 单独验证一遍curl -X POST https://后端地址/路径 \ -H Authorization: Bearer 你的key \ -H Content-Type: application/json \ -d {model:模型名,messages:[{role:user,content:hi}]}curl 通了再往 cc switch 里配。这样能把“模型服务本身的问题”和“代理配置的问题”分开排查效率高很多。4.4 代理失败时的分层排查法代理转发失败最忌讳的就是一上来就改配置。我习惯用分层排查从最外层往里一层层剥。层级检查内容工具/命令进程层代理是否在跑ps aux | grep switch端口层端口是否监听ss -tlnp配置层后端地址、模型名、key直接看配置文件网络层能否到达后端curl -v协议层请求格式是否匹配看代理日志 后端返回这个顺序的好处是每一步都能明确排除一类问题。比如进程层就挂了那后面全都不用看进程在、端口在但 curl 不通那就是网络或后端的问题。热搜里那条/responses报错我大概率会先看协议层——因为/responses是特定端点格式要求比较严格很可能是请求体结构和后端期望的不一致。5. tmux让 AI 编程会话在远程环境里活下来5.1 为什么 AI CLI 工具和 tmux 是天然搭档热搜里出现 tmux我一点都不意外。Claude Code 和 Codex 这类工具一次对话可能持续很久中间还要执行命令、读文件、等模型返回。如果你是在本地终端直接跑关掉窗口会话就断了。如果你是在远程服务器上跑SSH 一断正在进行的任务全没了。tmux 解决的正是这个问题它让你在一个“会话”里跑程序会话和终端窗口解耦窗口关了、SSH 断了会话还在后台活着下次连上去tmux attach就能接着看。对于 openrig 这种多工具工作台tmux 的价值更大。你可以开多个窗口一个窗口跑 Claude Code一个跑 Codex一个跑代理服务一个用来看日志。切换窗口一个快捷键的事不用开一堆终端标签页。5.2 会话、窗口、面板三个概念别搞混tmux 的概念层级是会话session包含窗口window窗口包含面板pane。很多人初学时分不清我用一个类比会话是一栋楼窗口是楼里的房间面板是房间里用隔断分出来的区域。你可以只进一栋楼attach 一个会话在房间里走动切换窗口在房间内再分区域切分面板。常用操作我列一下这些是每天都会用到的# 新建一个命名会话 tmux new -s openrig # 查看所有会话 tmux ls # 重新连接 tmux attach -t openrig # 在会话内按 Ctrlb 然后按 d 脱离会话继续后台运行窗口和面板的操作记住前缀键是CtrlbCtrlb c新建窗口Ctrlb n/Ctrlb p下一个/上一个窗口Ctrlb %垂直切分面板Ctrlb 水平切分面板Ctrlb 方向键在面板间切换5.3 在 tmux 里跑 AI 工具的实操配置在 tmux 里跑 Claude Code 或 Codex有几个细节值得注意。第一是滚动缓冲默认 tmux 的历史行数有限AI 输出很长时前面的内容会被顶掉。建议在~/.tmux.conf里加大历史缓冲set -g history-limit 50000第二是鼠标支持开了之后可以用鼠标滚轮翻历史、点击切换面板对不习惯快捷键的人很友好set -g mouse on第三是窗口命名跑多个工具时给窗口起个名字一眼就知道哪个是哪个。可以在~/.tmux.conf里配置自动重命名或者手动Ctrlb ,改名。注意tmux 里跑需要交互输入的工具时确保你的终端类型设置正确。如果出现方向键乱码、颜色异常检查TERM环境变量一般设为screen-256color或tmux-256color。5.4 远程环境下的持久化与日志留存在远程服务器上用 tmux 跑 AI 工具我强烈建议把关键输出重定向到日志文件。原因很简单tmux 会话虽然能持久但服务器重启、tmux 进程被杀会话还是会丢。日志文件是最后的保险。做法有两种。一种是启动工具时直接重定向claude 21 | tee -a ~/logs/claude-$(date %F).log另一种是在 tmux 里用pipe-pane把整个面板的输出管道到文件# 在 tmux 会话内执行 Ctrlb :pipe-pane -o cat ~/logs/pane.log这样即使你不在看输出也在持续记录。排查问题时翻日志比回忆“当时屏幕上显示了啥”靠谱得多。6. 编辑器与终端联动VS Code 里的 Claude Code 配置6.1 为什么要在编辑器里集成终端 AI 工具热搜里 “vscode配置claude code”、“vscode接入claude code”、“claude code for vs code”、“claude code windows” 这一串说明大量用户的主战场是 VS Code希望不用离开编辑器就能用上 Claude Code。这个需求很合理写代码的时候上下文都在编辑器里切到外部终端再切回来思路容易断。VS Code 集成这类工具本质上是利用它的集成终端。你可以在 VS Code 里打开终端面板直接跑 Claude Code它就在当前项目目录下工作读写文件都针对你正在编辑的项目。更进一步有些工具提供了 VS Code 扩展能在编辑器内提供更原生的交互。6.2 集成终端的环境变量继承问题在 VS Code 里跑 Claude Code最常见的坑是环境变量不继承。你在.bashrc里配的 PATH、API key、代理设置VS Code 的集成终端可能读不到。原因是 VS Code 启动时可能没有加载你的 shell 配置文件尤其是从图形界面启动的情况。排查方法在 VS Code 的集成终端里敲echo $PATH和你外部终端对比。如果不一样说明环境没继承。解决办法有几种一是在 VS Code 设置里指定terminal.integrated.env.linux手动补上需要的变量二是确保 VS Code 从已经加载好环境的终端启动三是把关键配置写进不依赖交互式 shell 的文件里。6.3 Windows 与 Ubuntu 双环境下的差异处理热搜里同时有 “claude code windows” 和 “ubuntu配置claude code”说明跨平台用户不少。Windows 和 Ubuntu 在这类工具上的主要差异在于路径分隔符、shell 类型、以及某些依赖的可用性。Windows 上如果用的是 WSL那基本等同于 Ubuntu 环境问题不大如果用的是原生 Windows则要注意 Node.js 的安装方式建议用官方安装包或 nvm-windows和终端选择建议用 Windows Terminal。一个跨平台通用的建议是把项目相关的配置尽量放在项目目录内而不是全局。比如 Codex 的配置文件如果支持项目级配置就放在项目根目录这样换机器、换系统配置跟着项目走减少环境差异带来的问题。7. 踩坑实录那些报错信息背后的真实原因7.1 “model is not supported” 类报错的排查链路热搜里 “the gpt-5.6-sol model is not supported when using codex with a...” 这条我拿它当典型案例拆一下。报错说某个模型在使用 Codex 时不被支持。可能的原因有三层第一模型名拼错了后端根本没有这个模型第二模型存在但不支持 Codex 使用的这种调用协议比如 Codex 用的是某种特定端点而该模型只支持另一种第三模型存在也支持但你的账号没有访问该模型的权限。排查顺序应该是先用 curl 确认模型名是否正确、账号是否有权限再确认该模型支持的端点路径最后确认 Codex 的配置里端点路径和模型名是否匹配。这三步走完基本能定位到具体是哪一层的问题。7.2 代理切换失败的分步复现与定位回到 “cc switch local proxy failed while handling codex endpoint /responses” 这条。我会这样复现和定位第一步确认代理服务状态。ps看进程ss看端口。如果进程不在先解决启动问题。第二步看代理日志。日志里通常会写明“收到请求 - 准备转发到 X - 转发失败原因 Y”。这个 Y 是关键。第三步手动模拟请求。用 curl 按代理配置里的后端地址直接打看返回什么。如果 curl 也失败问题在后端或网络如果 curl 成功但代理失败问题在代理的请求构造逻辑。第四步检查请求体格式。/responses这类端点对请求体结构有要求代理在转发时如果做了字段转换转换逻辑可能有 bug。对比代理发出的请求和后端期望的格式差异点就是问题所在。7.3 安装类报错的通用应对策略安装类报错我总结了一个通用套路先看报错关键词再查版本最后查网络。报错里如果有 “not yet released”、“not available”是版本问题如果有 “EACCES”、“permission”是权限问题如果有 “ETIMEDOUT”、“ECONNREFUSED”是网络问题如果有 “unrecognized”、“typo”是配置问题。按这个分类去对应解决比盲目搜索快得多。热搜里 “error installing 24.21.0” 就是版本问题的典型。解决办法不是去想办法装这个不存在的版本而是换成存在的 LTS 版本。很多人卡在这里是因为教程写死了版本号而教程发布时那个版本存在等你看到时可能已经变了。永远以nvm ls-remote的实际输出为准不要信任何写死的版本号。8. 把 openrig 当成一套可迁移的工作台来维护8.1 配置文件的版本化管理既然 openrig 是一套工作台那它的配置就应该像代码一样管理起来。我的做法是建一个私有仓库把以下内容纳入版本控制tmux 配置、shell 里跟这些工具相关的环境变量片段、cc switch 的配置模板敏感 key 用占位符、以及一份安装步骤的 README。这样换机器时clone 下来按 README 走一遍半小时能恢复整套环境。敏感信息绝对不要直接提交。API key、token 这类东西用环境变量引用配置文件里只写变量名。本地用一个不提交的.env文件存实际值。8.2 多环境同步时最容易丢的东西多环境同步最容易丢的不是配置文件本身而是那些没写进配置的隐性状态。比如某个工具首次运行时生成的设备标识、缓存的登录 token、npm 全局包的实际版本。这些东西不在你的配置文件里但缺了就会出问题。我的应对是维护一份“环境清单”记录每个工具的实际版本npm ls -g --depth0的输出、关键配置文件的路径、以及首次配置时需要手动做的操作。这份清单不追求自动化就是给自己看的备忘录换环境时照着核对一遍。8.3 长期挂机时的资源与稳定性观察如果你像我一样在服务器上长期挂着这些 AI 工具和代理服务有几个观察点值得定期看内存占用Node.js 进程跑久了可能内存上涨、日志文件大小别把磁盘写满、以及代理服务的连接数。我一般会写个简单的检查脚本定期跑一下输出关键指标。发现异常趋势时提前处理比等服务挂了再救火强。这套东西说到底没有什么高深技术拼的就是对细节的耐心和对报错的敏感度。openrig 这个名字起得好open 是开放rig 是装配合起来就是“开放地装配你自己的工具台”。工具会更新报错会变化但“分层排查、版本对齐、配置版本化”这几条思路换什么工具都适用。
阅读完成 · 觉得有帮助?
咨询建站