
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”、“error installing 24.21.0: node.js v24.21.0 is not yet released”、“codex is ignoring 1 unrecognized configuration setting”、“your organization has disabled claude subscription access for claude code”。这些词不是随便冒出来的它们反映了一个真实存在的痛点场景开发者想同时用 Claude Code 和 Codex想接入本地模型比如 LMStudio或第三方 APIDeepSeek、Qwen、GLM结果在 Node.js 版本、代理转发、配置字段、组织权限这几个环节上反复翻车。openrig 要做的就是把这些零散的、容易出错的环节收拢成一个可复现的装配流程。所以这篇内容适合谁看三类人。第一类是想入门 Claude Code 或 Codex但被 Node.js 安装、环境变量、登录鉴权卡住的新手第二类是想把多个 AI 编码工具整合到一套终端工作流里的中级开发者第三类是对 tmux 会话管理、本地代理转发、多模型切换有需求想自己搭一套“AI 编码工作台”的折腾型玩家。我会尽量把每一步的“为什么”讲清楚而不是只丢命令。2. 装配前的环境底座Node.js 版本选择与 tmux 的角色2.1 Node.js 版本为什么是第一个坑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”。这个报错的意思是某个安装脚本或版本管理器试图去拉一个还不存在的 Node.js 版本号。这种情况通常出现在两种场景一是你用的 nvm、fnm 之类的版本管理器缓存了错误的版本清单二是某个工具的 package.json 里把 engines 字段写成了一个未来版本。我的经验是不要盲目追最新版。Claude Code 和 Codex 这类工具对 Node.js 的兼容性通常稳定在 LTS长期支持线上。目前比较稳妥的选择是 Node.js 20.x 的 LTS 版本或者 22.x 的 LTS。热搜词里出现“ubuntu安装node.js 20”和“node.js lts下载”说明很多人已经意识到要选 LTS。具体操作上我推荐用 nvm 来管理版本而不是直接用系统包管理器装因为系统包管理器装的 Node.js 往往版本偏旧而且升级时会牵扯一堆依赖。在 Ubuntu 上用 nvm 装 Node.js 20 的流程大致是这样curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20 nvm use 20 nvm alias default 20 node -v最后一行应该输出 v20.x.x。如果你看到的是 v24 或者别的版本说明 alias 没生效检查一下~/.bashrc里 nvm 的初始化脚本有没有被正确加载。这里有个细节很多人装完 nvm 后直接开新终端发现 nvm 命令找不到原因是 nvm 的初始化代码写进了.bashrc但你的终端用的是 zsh 或者别的 shell。这时候要么把初始化代码挪到.zshrc要么手动 source 一下。2.2 tmux 不只是“分屏工具”热搜词里 tmux 和 Node.js 并列出现这不是巧合。tmux 在这套工作流里的角色远不止“把终端切成几块”这么简单。它的核心价值是会话持久化。你想想这个场景你在跑一个 Claude Code 的长任务比如让它重构一个模块这时候网络断了或者你不小心关了终端窗口如果没有 tmux这个会话就没了任务中断上下文丢失。有了 tmux会话跑在后台你重新连上来tmux attach就能接着看。更深一层tmux 让“多 AI 会话并行”成为可能。你可以开一个 window 跑 Claude Code另一个 window 跑 Codex第三个 window 跑本地模型的服务端然后用 tmux 的 pane 切分来同时观察多个会话的输出。这对于需要对比两个模型回答、或者一个模型写代码另一个模型做 review 的场景效率提升非常明显。安装 tmux 本身很简单sudo apt update sudo apt install tmux -y但配置上有个建议把默认的 prefix 键从Ctrlb改成Ctrla因为Ctrlb在很多终端里和翻页快捷键冲突。在~/.tmux.conf里加一行set -g prefix C-a就行。另外建议开启鼠标模式set -g mouse on这样你可以直接用鼠标点选 pane、调整分割线对新手友好很多。2.3 环境变量与 PATH 的隐蔽陷阱装完 Node.js 和 tmux还有一个容易被忽略的环节PATH 和全局 npm 包的路径。用 nvm 装的 Node.js全局包默认装在~/.nvm/versions/node/v20.x.x/bin下面。如果你之前用系统 Node.js 装过一些 CLI 工具现在切到 nvm 的 Node.js那些工具可能就找不到了因为 PATH 变了。这时候要么重新用 nvm 的 npm 装一遍要么把旧路径也加进 PATH但后者容易造成版本混乱我不推荐。还有一个坑是 npm 的全局前缀。有时候你npm install -g一个包装完了敲命令却提示 command not found原因是 npm 的全局 bin 目录不在 PATH 里。用npm config get prefix看一下前缀路径然后确认这个路径下的 bin 目录在 PATH 中。这个检查动作在装 Claude Code 或 Codex 之前做一遍能省掉后面很多“明明装成功了却跑不起来”的困惑。3. Claude Code 与 Codex 的安装路径差异与鉴权逻辑3.1 两个工具的安装方式并不一样Claude Code 和 Codex 虽然都是 AI 编码 CLI但它们的安装和分发方式有区别。Claude Code 早期主要通过 npm 全局安装命令类似npm install -g anthropic-ai/claude-code装完之后敲claude就能进交互界面。Codex 的安装则更依赖具体的发行渠道热搜词里出现了“codex安装包”、“codex安装 windows桌面版”、“codex cli”说明它既有 CLI 形态也可能有桌面版或独立的安装包。这里我要提醒一个常见误区不要混用安装方式。如果你用 npm 装了 Claude Code就不要再手动去下载一个二进制包覆盖它否则版本管理会乱。反过来如果 Codex 官方推荐的是独立安装脚本那就按官方脚本来不要自作聪明用 npm 装一个同名的包。热搜词里“codex安装 csdn”这种搜索往往是因为官方文档不够直观大家跑去看第三方教程结果教程里的命令和当前版本对不上装出一堆问题。安装完成后第一件事是验证版本和可执行路径which claude claude --version which codex codex --version如果which找不到命令回到上一节检查 PATH。如果版本号和你预期的不一致检查是不是有多个安装源冲突。3.2 登录鉴权组织权限与订阅访问的边界热搜词里有一条很扎眼“your organization has disabled claude subscription access for claude code”。这个报错说明Claude Code 的鉴权是跟账号的组织策略绑定的。如果你用的是企业账号管理员可能在组织层面关闭了 Claude Code 的订阅访问权限这时候你在本地怎么折腾都没用得去找管理员开通。个人账号一般不会遇到这个问题但如果你用的是公司邮箱注册的账号就要留意。Codex 那边也有类似的鉴权问题热搜词里“codex登录不上”、“codex无法加载组织设置”都是这个范畴。我的建议是在安装之前先确认三件事你的账号类型个人还是组织、你的订阅状态是否包含对应工具的访问权、你的网络环境是否能正常访问鉴权服务。这三件事任何一件出问题都会表现为“登录不上”但根因完全不同排查方向也不一样。登录流程本身通常是交互式的敲claude或codex后会引导你打开浏览器完成 OAuth或者让你粘贴一个 API Key。如果是 API Key 方式注意 Key 的存储位置一般会写在~/.config下的某个配置文件里不要把这个文件提交到 Git 仓库。3.3 本地模型接入LMStudio 与第三方 API 的配置思路热搜词里“claude code 调用lmstudio的本地模型”和“codex接入deepseek”代表了另一类需求不满足于官方模型想接本地或第三方模型。这个需求的动机很实际——成本控制、数据隐私、或者单纯想用某个特定模型的能力。接入本地模型的核心思路是“协议适配”。Claude Code 和 Codex 在底层都是通过 HTTP 请求和模型服务通信的只要你的本地服务能提供一个兼容的接口比如 OpenAI 兼容格式理论上就能接。LMStudio 本身就提供了 OpenAI 兼容的本地服务端启动后在http://localhost:1234/v1就能访问。你要做的是在 Claude Code 或 Codex 的配置里把 base URL 指向这个地址把 API Key 填成任意非空字符串本地服务通常不校验 Key。但这里有个坑不同工具对接口格式的要求不完全一样。有的要求/v1/chat/completions有的要求/v1/responses。热搜词里“cc switch local proxy failed while handling codex endpoint /responses”就是一个典型——代理在转发 Codex 的/responses端点时失败了。这说明 Codex 用的可能不是标准的 chat completions 格式而是一个叫 responses 的端点。如果你用的是一个通用的代理转发工具它可能不认识这个端点就报错了。解决办法是确认你的代理工具是否支持该端点或者换一个明确支持 Codex 的转发方案。4. 多模型切换与代理转发的实操细节4.1 为什么要用代理转发直接在每个工具里硬编码模型地址短期能用长期很痛苦。你想想今天想用 DeepSeek明天想用 Qwen后天想切回官方模型如果每个工具都要改一遍配置很容易改漏或者改错。代理转发的作用是在本地起一个统一入口所有工具都指向这个入口由代理根据规则决定把请求转发到哪个后端模型。热搜词里“使用cc switch 接入 deepseek v4, qwen, glm等模型”说的就是这个思路。代理转发的另一个好处是便于排查。所有请求都经过同一个入口你可以在代理层打日志看到底是请求发出去了没响应还是响应回来了但格式不对。这在排查“模型不响应”、“返回乱码”、“鉴权失败”这类问题时非常有用。4.2 配置字段的常见错误热搜词里“codex is ignoring 1 unrecognized configuration setting. check for typos or d”是一个高频报错。这个报错的意思是你的配置文件里有一个字段名拼错了或者用了一个当前版本不认识的字段。Codex 在启动时会校验配置遇到不认识的字段就警告但通常不会直接崩溃而是忽略它。问题在于如果被忽略的恰好是关键字段比如模型名、base URL你就会发现配置“没生效”但又不报错非常难查。我的排查习惯是改完配置后先用工具的“打印当前配置”命令如果有的话确认配置被正确加载了再启动。如果没有这个命令就把配置文件里的字段名和官方文档逐字对照特别注意驼峰命名和下划线的区别以及单复数。比如model和modelsapiKey和api_key这些细节在不同工具里要求不一样。4.3 模型名称与端点匹配的坑热搜词里有一条很具体的报错“{detail:the gpt-5.6-sol model is not supported when using codex with a...}”。这个报错说明你请求的模型名gpt-5.6-sol在当前使用的 Codex 配置下不被支持。可能的原因有几个一是这个模型名根本不存在是拼写错误二是这个模型名对应的是另一个服务商的模型但你把它发给了不支持它的端点三是你的账号权限不包含这个模型。排查这类问题的顺序是先确认模型名拼写再确认这个模型属于哪个服务商然后确认你的 base URL 指向的是不是这个服务商最后确认你的账号有没有这个模型的访问权。这四步任何一步不对都会报“model not supported”。很多人一看到这个报错就去改模型名但其实根因可能在 base URL 指错了地方。5. 从零跑通一套 openrig 式工作流的完整步骤5.1 第一步固定 Node.js 版本并验证先把 Node.js 版本锁死。用 nvm 装 20 LTS设成默认然后验证nvm install 20 nvm alias default 20 node -v npm -v确认 node 是 v20.xnpm 是配套版本。如果 npm 版本太旧可以npm install -g npmlatest升一下但不要升到和 Node.js 不兼容的版本。这一步做完后面所有 CLI 工具都跑在这个 Node.js 上不会出现版本漂移。5.2 第二步装 tmux 并建立会话习惯装完 tmux 后建议建立一个固定的会话命名习惯。比如用tmux new -s aiwork创建一个叫 aiwork 的会话在里面开多个 windowwindow 0 跑 Claude Codewindow 1 跑 Codexwindow 2 跑本地模型服务window 3 用来查日志。这样你每次tmux attach -t aiwork就能回到完整的工作现场。tmux 的 pane 分割也很有用。比如在 window 0 里左边 pane 跑 Claude Code右边 pane 用tail -f看它的日志文件。这样模型在思考的时候你能实时看到底层请求的情况排查问题快很多。5.3 第三步安装并登录 Claude Code用 npm 全局安装 Claude Code然后验证命令可用npm install -g anthropic-ai/claude-code claude --version如果版本号正常输出敲claude进交互界面按提示完成登录。如果遇到组织权限报错先确认账号类型。登录成功后先跑一个最简单的任务比如让它读一个文件并总结确认基本链路通了再去配置本地模型或第三方 API。5.4 第四步安装并配置 CodexCodex 的安装按官方渠道来。装完后先跑codex --version确认。然后检查配置文件把模型名、base URL、API Key 这几个关键字段填对。如果要用第三方模型确认端点格式匹配。配置改完后用一个简单请求测试观察是否有“unrecognized configuration setting”之类的警告有的话逐字修正字段名。5.5 第五步搭建本地代理并接入多模型如果你需要多模型切换在本地起一个代理服务。代理的配置里列出多个后端每个后端对应一个模型和它的端点。然后让 Claude Code 和 Codex 都指向这个代理的本地地址。测试时先确认代理本身能正常转发可以用 curl 直接打代理的端点再确认工具能通过代理拿到响应。这样分层排查出问题时能快速定位是代理层还是工具层的问题。6. 那些热搜词背后的真实故障与排查链路6.1 “cc switch local proxy failed”的完整排查这个报错的关键词是“local proxy failed”和“codex endpoint /responses”。排查链路应该是这样的第一步确认代理服务本身在运行端口在监听用curl直接打代理的健康检查端点。第二步确认代理是否认识/responses这个端点如果不认识看代理的文档或源码确认它支持的端点列表。第三步如果代理支持但转发失败看代理的日志确认是请求格式问题还是后端连接问题。第四步确认后端模型服务是否在运行以及它是否支持 responses 格式。这四步走完基本能定位到具体是哪一层的问题。6.2 “node.js v24.21.0 is not yet released”的根因这个报错的根因通常是版本管理器缓存了错误的版本清单或者某个脚本硬编码了一个不存在的版本号。解决办法是更新版本管理器的清单比如 nvm 的nvm ls-remote拉取最新列表然后显式安装一个确定存在的 LTS 版本。如果某个工具的安装脚本硬编码了版本号去看它的源码或 issue 区通常有人已经报了同样的问题会有 workaround。6.3 “organization has disabled claude subscription access”的应对这个不是技术问题是权限问题。你能做的技术操作很有限核心是确认账号归属和管理员策略。如果是个人账号检查订阅是否过期如果是组织账号联系管理员确认 Claude Code 的访问权限是否被关闭。在等待期间可以考虑用 API Key 方式绕过订阅鉴权但这取决于工具是否支持 API Key 模式。6.4 “codex无法加载组织设置”的检查顺序先确认网络能正常访问鉴权服务再确认账号登录状态是否有效然后确认组织设置里是否有影响 Codex 的策略。如果这些都正常检查本地配置文件是否有损坏或字段冲突可以尝试备份后重置配置文件重新登录一次。7. 我在这套工作流里踩过的坑和总结出的习惯第一个习惯任何工具装完后先跑--version和--help确认命令可用、版本符合预期。这个动作花不了十秒但能提前发现 PATH 和版本冲突问题。第二个习惯配置文件改动前先备份。AI 编码工具的配置文件字段多改错一个字段可能导致工具静默忽略配置排查起来很费时间。备份一份出问题能快速回滚。第三个习惯分层测试。不要一次性把 Claude Code、Codex、代理、本地模型全配好再测那样出问题不知道是哪一层。先测 Node.js再测单个工具再测代理最后测多模型切换。每层通了再往上叠。第四个习惯日志优先。tmux 的 pane 分屏配合tail -f看日志比事后去翻日志文件高效得多。模型请求的底层日志能告诉你很多交互界面看不到的信息比如请求发到了哪个端点、返回了什么状态码。第五个习惯版本锁定。Node.js 版本、工具版本、代理版本都记下来。出问题时版本信息是排查的第一手资料。特别是当你在多台机器上部署时版本不一致是很多“在我机器上能跑”问题的根源。这套 openrig 式的工作流核心不是某个具体工具而是“把环境底座打牢、把鉴权理清、把转发分层、把日志打开”这套方法论。工具会更新报错会变化但这套排查和装配的思路是通用的。你把 Node.js 和 tmux 这两个底座搞稳后面的 Claude Code、Codex、本地模型接入都只是在这个底座上拧螺丝的事。