openrig实战:用tmux和Node.js搭建Claude Code与Codex工作台
发布时间:2026/10/5 11:13:18 锦皓数字建站

1. 从“openrig”这个名字说起它到底想解决什么问题第一次看到“openrig”这个词我脑子里蹦出来的不是某个具体软件而是一种“开放式工作台”的意象。rig 在英文里本意是“装配、搭建”在工程语境里常指一套成套的设备或支架比如测试台、钻井平台。前面加个 open意思就很明确了——这是一套开放的、可自由拼装的工具台。结合热搜词里高频出现的 Claude Code、Codex、Node.js、tmux 这几个关键词我基本能判断出 openrig 的定位它大概率是一个把 AI 编程助手Claude Code、Codex 这类 CLI 工具和终端复用器tmux、运行时环境Node.js整合到一起的工作流脚手架让开发者在一个统一的“台子”上跑多个 AI 编码会话而不是在十几个终端窗口之间来回切。为什么我会有这个判断因为热搜词里有一大批非常具体的报错和配置问题“cc switch local proxy failed while handling codex endpoint /responses”、“codex is ignoring 1 unrecognized configuration setting”、“your organization has disabled claude subscription access for claude code”、“error installing 24.21.0: node.js v24.21.0 is not yet released”。这些问题单独看是零散的但放在一起就勾勒出一个典型场景一个开发者想同时用 Claude Code 和 Codex 两个 CLI 工具通过某种本地代理或切换器cc switch来管理它们结果在 Node.js 版本、代理端点、组织权限、配置字段这几个环节上接连踩坑。openrig 要做的很可能就是把这些零散的配置、切换、会话管理动作收敛成一套可复用的“装配方案”。所以这篇内容我打算这么写不把它当成一个官方文档来念而是当成一个“我拿到 openrig 这个思路之后怎么从零把台子搭起来、怎么把 Claude Code 和 Codex 都接进去、中间会遇到哪些坑”的实战记录。适合的读者是那些已经在用或者准备用 AI 编程 CLI 工具、但被环境配置和多工具切换搞得有点烦的开发者。如果你连 Node.js 是干什么的都还不清楚也没关系我会在必要的地方补基础但整体节奏是偏实操的。2. 搭台子之前Node.js 环境这块必须先理清楚2.1 为什么 AI 编程 CLI 工具都绕不开 Node.jsClaude Code、Codex CLI 这类工具绝大多数是用 JavaScript/TypeScript 写的通过 npm 包的形式分发。这意味着你机器上必须有一个能跑 npm 的 Node.js 环境。热搜词里“node.js是干什么的”、“node.js安装”、“node.js官网下载”、“node.js LTS下载”这些词反复出现说明很多人卡在第一步——不是不会装而是不知道该装哪个版本、从哪装、装完怎么验证。Node.js 本质上是一个让 JavaScript 脱离浏览器运行的运行时。你可以把它理解成“JavaScript 的解释器 一堆内置的工具库”。npm 是随 Node.js 一起装上的包管理器类似 Python 的 pip、Rust 的 cargo。AI 编程 CLI 工具发布到 npm 仓库后你用一条npm install -g就能把它装到全局然后在任何目录下敲命令调用。这里有个关键点版本选择比安装动作本身更重要。热搜里那条 “error installing 24.21.0: node.js v24.21.0 is not yet released or is not available” 就是典型的版本踩坑——有人照着某个教程写了24.21.0这个版本号但这个版本根本不存在或者还没发布安装脚本直接报错。Node.js 的版本号是严格遵循语义化版本的主版本号24代表大版本偶数是 LTS长期支持线奇数是 Current尝鲜线。截至我写这篇内容时稳妥的选择是装最新的 LTS 版本而不是去追一个看起来很大的数字。2.2 三种安装方式的实际取舍我试过至少三种装 Node.js 的方式每种都有明确的适用场景不是随便选一个就行。第一种是官网下载安装包。这是最直白的方式去 Node.js 官网找到 LTS 版本的下载链接选对应操作系统的安装包一路下一步。优点是省心装完自带 npm环境变量也配好了。缺点是版本切换麻烦你想从 20 换到 22得卸载重装。适合“我就用一个固定版本不折腾”的人。第二种是用版本管理工具比如 nvmNode Version Manager或者 fnm。这类工具的核心价值是让你在同一台机器上装多个 Node.js 版本随时切换。为什么需要这个因为不同项目对 Node.js 版本的要求可能不一样Claude Code 可能要求 18 以上某个老项目可能锁死在 16。用 nvm 的话nvm install 20装一个nvm use 20切过去干净利落。热搜里“node.js LTS下载”这个词我猜很多人其实需要的是 nvm 而不是直接下载安装包。第三种是用操作系统的包管理器比如 macOS 的 Homebrew、Ubuntu 的 apt。这种方式装出来的 Node.js 版本往往偏旧而且和系统包管理器的依赖关系纠缠在一起升级时容易出问题。我不太推荐用 apt 直接装 Node.js除非你只是临时用一下。安装方式适合场景版本切换踩坑概率官网安装包固定单版本使用麻烦需卸载重装低nvm/fnm多版本切换、多项目一条命令切换中需配置 shell系统包管理器临时使用、系统集成困难高版本旧2.3 装完之后必须做的三件验证很多人装完 Node.js 就急着去装 Claude Code结果报一堆错。我建议装完先做三个验证花不了一分钟但能省掉后面半小时的排查。第一node -v看版本号。确认输出的是你预期的版本而不是系统里残留的旧版本。如果输出和预期不符大概率是 PATH 环境变量里有多个 node需要检查which node指向哪里。第二npm -v看 npm 是否正常。有时候 Node.js 装好了但 npm 没跟着装上或者 npm 的全局目录权限有问题。第三npm config get prefix看全局安装目录。这个目录决定了npm install -g装的东西放在哪。如果这个目录需要 root 权限才能写入那你每次全局安装都得加 sudo长期来看很别扭。正确的做法是把 npm 的全局目录改到用户目录下比如npm config set prefix ~/.npm-global然后把~/.npm-global/bin加到 PATH 里。提示如果你在 Ubuntu 上遇到EACCES权限错误八成就是全局目录权限问题。不要用sudo npm install -g硬扛那样装出来的包属主是 root后面升级和卸载都会出问题。3. tmux 在 openrig 里的角色不是可选项是基础设施3.1 为什么 AI 编程会话需要 tmux热搜词里 tmux 和 Claude Code、Codex 并列出现这不是偶然。tmux 是一个终端复用器它让你在一个终端窗口里开多个会话session每个会话里可以开多个窗口window每个窗口里可以分多个面板pane。听起来像个“终端里的窗口管理器”但它的核心价值在于会话持久化。你想想这个场景你在跑一个 Claude Code 会话让它帮你重构一个模块这个过程可能要几分钟甚至十几分钟。如果你直接在一个普通终端里跑网络断了、SSH 断了、或者你不小心关了窗口这个会话就没了之前让它做的事可能白做。但如果你是在 tmux 会话里跑的即使终端断开tmux 会话还在后台活着你重新连上去tmux attach就能看到之前的输出继续交互。对于 openrig 这种要同时管理多个 AI 编程会话的场景tmux 更是刚需。你可以开一个 tmux 会话专门跑 Claude Code另一个会话跑 Codex第三个会话跑测试和构建。每个会话独立运行互不干扰你用一个终端就能在它们之间切换。3.2 tmux 的最小可用配置tmux 默认的快捷键是 Ctrlb 作为前缀键然后按其他键执行命令。这个默认配置对很多人来说不顺手因为 Ctrlb 在终端里经常被用到。我建议第一件事就是改前缀键改成 Ctrla这个键在终端里用得少而且和 screen 的习惯一致。配置文件在~/.tmux.conf没有就新建一个。最小配置大概长这样# 改前缀键为 Ctrla set -g prefix C-a unbind C-b bind C-a send-prefix # 开启鼠标支持方便拖拽调整面板大小 set -g mouse on # 设置窗口编号从 1 开始而不是 0 set -g base-index 1 setw -g pane-base-index 1 # 设置历史滚动缓冲区大小 set -g history-limit 10000这几行配置解决的是最影响日常使用体验的几个点前缀键顺手、鼠标能用、窗口编号符合直觉、历史输出能往回翻。history-limit 尤其重要AI 编程工具的输出往往很长默认的 2000 行缓冲区很快就满了翻不回去。3.3 用 tmux 组织多 AI 会话的实操布局我自己的习惯是给 openrig 建一个专门的 tmux 会话名字就叫rig。命令是tmux new -s rig。进去之后我一般开三个窗口窗口 1 叫claude专门跑 Claude Code。窗口 2 叫codex专门跑 Codex。窗口 3 叫shell用来跑 git 命令、测试、构建这些杂活。窗口之间用Ctrla然后按数字键切换。在每个窗口里如果需要同时看多个东西比如一边跑 AI 会话一边看日志就用Ctrla然后按%垂直分屏或者按水平分屏。分出来的面板用Ctrla加方向键切换。这样一套下来你打开一个终端attach 到rig会话就相当于打开了一个完整的 AI 编程工作台。Claude Code 在左边跑重构Codex 在右边跑代码审查下面还有个 shell 随时待命。这就是 openrig 这个思路落地之后的样子。注意tmux 会话是存在服务器端的不是存在你的终端客户端。所以如果你是在远程机器上用 tmux本地终端断了没关系重新 SSH 上去tmux attach -t rig就能恢复。但如果你重启了远程机器tmux 会话就没了这个要心里有数。4. Claude Code 和 Codex 的接入从安装到跑通第一条命令4.1 Claude Code 的安装路径与常见卡点Claude Code 的安装方式是通过 npm 全局安装。命令是npm install -g anthropic-ai/claude-code。装完之后在终端敲claude就能启动。但热搜词里“claude code安装”、“claude code下载安装”、“claude code windows”、“ubuntu配置claude code”这些词说明不同平台上的安装体验差异很大。在 macOS 和 Linux 上只要 Node.js 环境没问题npm 安装基本一把过。Windows 上稍微麻烦一点因为 Claude Code 早期对 Windows 的原生支持不够好很多人是在 WSLWindows Subsystem for Linux里装的。如果你在 Windows 上遇到claude命令找不到或者运行报错优先考虑用 WSL而不是在 PowerShell 里硬折腾。安装完之后第一次运行claude它会引导你做认证。这里有个热搜词很关键“your organization has disabled claude subscription access for claude code”。这个报错的意思是你登录的账号所属的组织关闭了 Claude Code 的订阅访问权限。这不是安装问题是账号权限问题。解决办法要么是让组织管理员打开这个权限要么是换一个个人账号。如果你用的是公司统一管理的账号这个坑很容易踩到而且报错信息不会告诉你具体找谁开权限只能自己去问。还有一个热搜词是“note: claude code might not be available in your country”。这个提示说明服务在某些地区不可用。遇到这个提示说明你当前网络环境不在支持范围内这个不是技术配置能解决的需要确认自己是否在支持的地区使用。4.2 Codex 的安装与配置字段的坑Codex 的安装同样走 npm命令是npm install -g openai/codex或者类似的包名具体以官方为准。热搜词里“codex安装”、“codex安装教程”、“codex安装包”、“codex安装 windows桌面版”说明它的安装方式也有多种形态有 CLI 版也有桌面版。Codex 配置里有一个非常典型的坑热搜词直接点出来了“codex is ignoring 1 unrecognized configuration setting. check for typos or d”。这个警告的意思是你的配置文件里有一个它不认识的配置项它选择忽略并提醒你检查拼写。这个问题本身不致命但很烦人因为每次启动都弹。根因通常是两种情况一是你照着旧版本文档配的新版已经改了字段名二是你手抖打错了字段名。排查方法很简单打开 Codex 的配置文件通常在~/.codex/config或类似路径逐行对照官方最新文档的字段列表把不认识的字段删掉或者改对。另一个热搜词是“codex无法加载组织设置”。这个和 Claude Code 的组织权限问题类似是账号层面的配置没有正确同步到本地。通常需要重新登录或者检查组织层面的设置是否对你的账号生效。4.3 用 cc switch 管理多工具时的代理端点问题热搜词里有一条非常具体的技术报错“cc switch local proxy failed while handling codex endpoint /responses”。cc switch 应该是一个用来在 Claude Code 和 Codex 之间切换的工具它可能通过本地代理的方式把请求转发到不同的后端。这个报错说明它在处理 Codex 的/responses端点时本地代理失败了。这种问题的排查链路我一般这么走先确认 cc switch 本身是否在运行ps aux | grep cc-switch看一下进程在不在。然后确认它监听的本地端口是什么netstat -tlnp或者lsof -i看一下端口有没有被占用。接着手动 curl 一下那个本地代理地址看返回什么。如果本地代理返回 502 或者连接被拒说明代理进程本身有问题如果返回 401 或 403说明是认证信息没传对。热搜词里还有“使用cc switch 接入 deepseek v4, qwen, glm等模型”这说明 cc switch 的定位可能更广不只是切换 Claude Code 和 Codex还能把请求转发到其他模型服务。这种场景下代理配置的正确性就更加关键因为不同模型服务的端点路径、认证头、请求体格式可能都不一样。一个字段对不上整个请求就废了。报错关键词可能原因排查方向local proxy failed代理进程未启动或端口冲突检查进程和端口占用endpoint /responses端点路径配置错误对照目标服务的 API 文档unrecognized configuration setting配置字段拼写错误或版本不匹配对照最新官方字段列表organization has disabled access账号组织权限未开启联系管理员或换账号5. 把本地模型接进来Claude Code 调用 LM Studio 的实操5.1 为什么要在本地跑模型热搜词里有一条“claude code 调用lmstudio的本地模型”这个需求很实际。用云端模型服务一是要联网二是按 token 计费三是数据要传到远端。如果你在做一些敏感项目的代码重构或者只是想省点费用把 Claude Code 接到本地跑的模型上是个合理选择。LM Studio 是一个可以在本地加载和运行开源模型的工具它提供了一个兼容 OpenAI API 格式的本地服务端点。Claude Code 本身是设计来调用云端服务的但通过配置环境变量或者代理层可以把它指向本地的 LM Studio 端点。核心思路是让 Claude Code 以为自己在跟一个标准的 API 服务通信实际上请求被转发到了本地。5.2 配置步骤与参数说明第一步在 LM Studio 里加载一个模型然后启动本地服务。LM Studio 默认的服务端口是 1234端点路径是/v1/chat/completions这是兼容 OpenAI 格式的。第二步设置环境变量让 Claude Code 指向这个本地端点。通常需要设置ANTHROPIC_BASE_URL或者类似的变量把它指向http://localhost:1234/v1。具体变量名取决于 Claude Code 的版本和它支持的配置方式建议查一下当前版本的文档。第三步处理认证。本地服务通常不需要真实的 API key但 Claude Code 可能强制要求一个非空的 key。随便填一个字符串就行比如local。第四步测试连通性。先用 curl 直接打本地端点确认 LM Studio 服务正常响应。命令大概是curl http://localhost:1234/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer local \ -d {model: your-model-name, messages: [{role: user, content: hello}]}如果这个能返回结果说明本地服务没问题再去配 Claude Code。5.3 本地模型的性能预期与取舍这里我要泼一盆冷水本地模型跑 Claude Code 这种需要复杂推理和长上下文的任务体验和云端模型差距很大。原因有三一是本地能跑的模型参数量有限推理能力不如云端大模型二是本地机器的显存和算力有限长上下文处理速度慢三是 Claude Code 的提示词和工具调用格式是针对特定模型调优的换成本地模型后工具调用的准确率会下降。所以我的建议是本地模型适合做轻量的代码补全、简单的问答、格式转换这类任务。如果你要做复杂的重构、跨文件分析还是用云端模型更靠谱。把本地模型当成一个“离线备胎”或者“省钱方案”而不是主力。6. 编辑器侧的配合VS Code 里怎么用这套东西6.1 VS Code 集成 Claude Code 的两种方式热搜词里“vscode配置claude code”、“vscode接入claude code”、“claude code for vs code”说明很多人希望在 VS Code 里直接用 Claude Code而不是切到终端。目前有两种主流方式。第一种是用官方或社区的 VS Code 扩展。这类扩展通常会在侧边栏或面板里提供一个聊天界面底层调用 Claude Code 的能力。优点是界面友好不用记命令。缺点是扩展的更新可能滞后于 CLI 工具本身新功能不一定第一时间支持。第二种是在 VS Code 的内置终端里直接用 CLI。VS Code 的终端本身就是一个完整的终端环境你可以在里面跑 tmux然后在 tmux 里跑 Claude Code。这种方式的好处是你用的就是原汁原味的 CLI 工具功能最全而且和 openrig 的 tmux 工作流无缝衔接。缺点是没有图形界面全靠命令行交互。我个人更倾向第二种因为 CLI 工具的能力边界更清晰出问题也容易排查。图形界面虽然好看但一旦出问题你很难知道它底层到底在干什么。6.2 在 VS Code 终端里跑 tmux 的注意事项VS Code 的内置终端默认可能不支持某些终端特性导致 tmux 的显示有问题。最常见的是颜色显示异常和鼠标支持失效。解决办法是在 VS Code 的设置里把终端类型指定为xterm-256color并确保terminal.integrated.enablePersistentSessions这个选项是开着的这样 VS Code 重启后终端会话还能恢复。另外VS Code 的终端在分屏时每个分屏是独立的终端实例。如果你在其中一个分屏里 attach 了 tmux 会话另一个分屏再 attach 同一个会话两边会同步显示同样的内容。这个特性可以用来在一个分屏里操作另一个分屏里观察输出但要注意不要同时在两边输入否则会冲突。7. 踩坑实录那些热搜词背后的真实排查过程7.1 Node.js 版本号写错导致的安装失败热搜词里那条 “error installing 24.21.0: node.js v24.21.0 is not yet released or is not available” 我专门复现了一下。场景是这样的你在某个脚本或者文档里看到nvm install 24.21.0直接复制粘贴执行结果报错说这个版本不存在。原因是 Node.js 的版本号不是随便编的24 是主版本21 是次版本0 是修订号但 24.21.0 这个组合在官方发布列表里根本不存在。Node.js 24 的 LTS 版本可能是 24.x 的某个具体数字但绝不是 21。正确的做法是先去 Node.js 官网的发布页面看当前 LTS 的确切版本号或者直接用nvm install --lts让 nvm 自己选最新的 LTS。不要手写版本号除非你确认过这个版本存在。这个坑的教训是版本号不要凭记忆写要去官方来源确认。AI 工具和运行时环境的版本迭代很快网上很多教程写的时候是那个版本等你看到的时候已经过时了。7.2 组织权限问题为什么这么难排查“your organization has disabled claude subscription access for claude code” 这个报错的难点在于它把“安装问题”和“权限问题”混在一起了。你看到报错的第一反应可能是“我是不是装错了”然后去重装、换版本、查文档折腾半天才发现是账号权限的事。我的排查建议是遇到任何 AI 编程工具的报错先看报错信息的最后一句。通常最后一句才是真正的根因前面的都是上下文。这个报错的最后一句明确说了是 organization 层面的 subscription access 被禁用了那就直接往账号权限方向查不要在安装上浪费时间。如果你用的是个人账号检查一下账号的订阅状态是否正常。如果是组织账号问一下管理员有没有针对 Claude Code 做访问控制。这个不是技术能绕过去的只能从权限侧解决。7.3 配置字段拼写错误的隐蔽性“codex is ignoring 1 unrecognized configuration setting” 这个警告的隐蔽性在于它不会导致程序崩溃只是忽略那个字段。所以你可能会觉得“能用就行”但那个字段对应的功能实际上没生效。比如你配了一个自定义的模型端点但字段名拼错了Codex 忽略它然后用了默认端点你却发现请求发到了错误的地方。排查这种问题我习惯用“二分法”把配置文件里的字段一个一个注释掉看警告什么时候消失。或者直接对照官方文档的字段列表用 diff 工具比对自己的配置。更高效的办法是看 Codex 的日志通常它会打印出实际加载了哪些配置项对比一下就知道哪个没被识别。8. 把这套工作流固化下来我的 openrig 日常操作清单8.1 每天开工前的三条命令我现在每天开工的流程已经固化了三条命令搞定。第一条tmux attach -t rig如果会话不存在就tmux new -s rig。第二条在 claude 窗口里敲claude启动 Claude Code。第三条在 codex 窗口里敲codex启动 Codex。剩下的就是在窗口之间切换把任务分派下去。这个流程的好处是我不需要每次重新想“今天要用哪个工具、怎么配”。台子已经搭好了工具已经就位了我只需要把任务丢进去。openrig 这个思路的核心价值就在这里——把环境配置的认知负担降到最低让注意力集中在实际的编码任务上。8.2 会话命名和窗口布局的约定我给自己定了一套命名约定避免时间长了忘记哪个窗口是干什么的。tmux 会话统一叫rig。窗口名用工具名claude、codex、shell。如果某个任务需要额外的窗口就用任务名比如refactor、test。窗口编号从 1 开始1 是 claude2 是 codex3 是 shell这个顺序固定不变形成肌肉记忆。面板布局上我一般不在 claude 和 codex 窗口里分屏保持全屏因为 AI 会话的输出往往很长分屏后可视区域太小。需要同时看两个东西的时候用 shell 窗口分屏一边跑命令一边看日志。8.3 什么时候该重启会话tmux 会话不是永久的有些情况下需要主动重启。一是 Node.js 或 CLI 工具升级之后旧会话里跑的还是旧版本需要退出重进。二是会话跑太久内存占用过高终端响应变慢重启一下能恢复流畅。三是配置变更之后比如改了 cc switch 的代理设置需要重启相关进程才能生效。重启的代价很低tmux kill-session -t rig然后重新tmux new -s rig就行。但要注意如果 Claude Code 或 Codex 正在执行一个长任务重启会中断它。所以重启前确认没有正在跑的重要任务。9. 关于 openrig 这个思路的延伸想法写到这里我对 openrig 的理解已经从“一个名字”变成了“一套可落地的工作流”。它不一定是一个具体的软件更像是一种组织方式用 tmux 做会话容器用 Node.js 做运行时基础用 Claude Code 和 Codex 做编码助手用 cc switch 这类工具做多后端切换用 VS Code 做编辑器侧的配合。这套组合拳打下来日常的 AI 辅助编程体验会顺畅很多。热搜词里还有“第三方api使用技巧”、“codex接入deepseek”、“使用cc switch 接入 deepseek v4, qwen, glm等模型”这些说明大家的需求不只是用官方服务还想把各种模型服务都接进来按需切换。这个方向我觉得是对的但要注意每个模型服务的 API 格式、认证方式、计费模式都不一样接的时候要逐个确认不能想当然。最后分享一个我自己的小习惯我会把 openrig 相关的所有配置文件和命令都记在一个rig-notes.md里放在项目根目录。每次改了配置或者发现了新的坑就随手记一笔。时间长了这个文件就成了我自己的“openrig 操作手册”比任何官方文档都贴合我的实际使用场景。这个习惯帮我省了很多重复排查的时间推荐你也试试。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。