1. 从零认识 openrig:它到底解决什么问题
第一次看到 openrig 这个名字,很多人会以为是某个硬件支架或者开源机械臂项目。实际上,在 AI 编程助手圈子里,openrig 是一套围绕 Claude Code、Codex 这类命令行 AI 编程工具搭建的本地运行环境与配置管理方案。它的核心价值在于:把散落在各处的模型接入、终端会话管理、代理转发、环境变量配置这些琐碎但极易出错的事情,收敛成一套可复用的骨架。
我最初接触这类需求,是因为同时在使用 Claude Code 和 Codex 两个工具。Claude Code 擅长长上下文理解和复杂重构,Codex 在代码补全和快速生成上响应更利落。但两者对 Node.js 版本、环境变量、API 端点配置的要求各不相同,切换一次就要改一堆东西,稍不注意就报出cc switch local proxy failed while handling codex endpoint /responses这种让人头大的错误。openrig 要解决的,正是这种多工具并存时的环境混乱问题。
它适合三类人:一是刚接触 Claude Code 或 Codex,被安装配置卡住的初学者;二是需要在多个模型供应商之间切换的进阶用户;三是想把 AI 编程助手接入本地模型(比如通过 LM Studio 跑本地推理)的开发者。不管你用的是 Windows、macOS 还是 Ubuntu,openrig 的思路都能帮你把环境理顺。
需要先说明的是,openrig 并不是一个官方发布的单一软件包,它更像是一种约定俗成的工程实践组合。不同人手里的 openrig 可能包含不同的脚本和配置,但核心构件是相通的:Node.js 运行时、tmux 会话管理、模型端点配置、以及一套能在 Claude Code 和 Codex 之间快速切换的机制。下面我会按照实际搭建顺序,把这套东西拆开讲透。
2. 环境底座:Node.js 与 tmux 的选型与安装
2.1 Node.js 版本选择:为什么 LTS 比最新版更稳
Claude Code 和 Codex 的 CLI 工具都依赖 Node.js 运行。网上经常能看到有人报error installing 24.21.0: node.js v24.21.0 is not yet released or is not available这类错误,根本原因就是盲目追新,装了一个尚未正式发布的版本号。
我的建议很明确:认准 Node.js LTS 版本。截至我写这篇内容时,Node.js 20.x 和 22.x 的 LTS 版本对 Claude Code 和 Codex 的兼容性最好。安装方式上,Windows 用户直接去 Node.js 官网下载 LTS 的.msi安装包,双击一路下一步即可;Ubuntu 用户我更推荐用 NodeSource 的源来装,而不是apt install nodejs,因为系统源里的版本往往偏旧。
# Ubuntu 下通过 NodeSource 安装 Node.js 20 LTS curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs # 验证版本 node -v npm -v装完之后有一个容易被忽略的点:npm 全局目录的权限。在 Ubuntu 上直接用sudo npm install -g装 Claude Code,后续升级时经常遇到权限报错。更稳妥的做法是配置一个用户级的全局目录:
mkdir -p ~/.npm-global npm config set prefix '~/.npm-global' # 然后把 ~/.npm-global/bin 加入 PATH echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc这样后面npm install -g @anthropic-ai/claude-code之类的命令就不需要 sudo,升级也顺畅。
2.2 tmux:让 AI 编程会话不再中断
tmux 在 openrig 体系里扮演的角色,很多人一开始不理解。简单说,Claude Code 和 Codex 都是长时间运行的交互式会话,如果你通过 SSH 连到远程 Ubuntu 机器上跑,网络一抖会话就断了,正在进行的推理和上下文全丢。tmux 就是给这些会话加了一层"防断线保护壳"。
生活化类比:tmux 就像给你的终端会话开了一个"后台房间",你人离开了,房间里的进程还在跑,下次回来推门进去,一切照旧。
# Ubuntu 安装 tmux sudo apt-get install -y tmux # 新建一个名为 claude 的会话 tmux new -s claude # 在会话里启动 Claude Code claude # 按 Ctrl+B 然后按 D 脱离会话(进程继续运行) # 下次回来 tmux attach -t claude我实测下来,在远程开发场景里,tmux 配合 Claude Code 使用,能避免至少八成的"跑到一半断了要重来"的糟心情况。Codex 同理,尤其是让它处理大型重构任务时,会话可能持续十几分钟,没有 tmux 兜底很不踏实。
注意:tmux 默认的前缀键是
Ctrl+B,如果你同时用 VS Code 的终端,可能会和某些快捷键冲突。可以在~/.tmux.conf里改成Ctrl+A,习惯之后更顺手。
3. Claude Code 与 Codex 的安装配置实操
3.1 Claude Code 安装:从 npm 到首次运行
Claude Code 的安装本身不复杂,坑主要出在环境变量和账号权限上。标准安装命令:
npm install -g @anthropic-ai/claude-code装完后在项目目录里直接输入claude就能启动。但很多人第一次运行会遇到your organization has disabled claude subscription access for claude code这类提示,这通常不是安装问题,而是账号层面的订阅或组织策略限制。遇到这种情况,先确认自己的账号状态,再考虑是否通过 API 密钥方式接入。
对于想用第三方 API 或本地模型的用户,Claude Code 支持通过环境变量指定端点。比如接入本地 LM Studio 跑的模型:
export ANTHROPIC_BASE_URL="http://localhost:1234/v1" export ANTHROPIC_API_KEY="your-local-key" claude这里的关键是 LM Studio 要开启兼容 OpenAI 或 Anthropic 格式的本地服务,并且模型要加载好。我试过用 LM Studio 加载一个 7B 级别的模型接 Claude Code,响应速度可以接受,但复杂任务的理解能力跟云端大模型差距明显,适合做轻量代码补全和简单问答。
VS Code 用户还可以装 Claude Code 的官方扩展,在编辑器里直接调用。配置入口在扩展设置里,把 API 端点和密钥填进去即可。Ubuntu 和 Windows 的配置逻辑一致,区别只在路径写法。
3.2 Codex 安装:Windows 桌面版与 CLI 两条路
Codex 的安装分两种形态:CLI 版本和 Windows 桌面版。CLI 版本同样走 npm:
npm install -g @openai/codexWindows 桌面版则去 Codex 官网下载安装包,双击安装。两条路各有适用场景:CLI 适合在 tmux 里跑长任务、适合脚本化调用;桌面版适合日常在图形界面里快速问答。
Codex 配置里最常见的一个报错是codex is ignoring 1 unrecognized configuration setting. check for typos or d...。这基本就是配置文件里写了它不认识的字段,或者字段名拼错了。Codex 的配置文件通常在~/.codex/config.toml或项目根目录的.codex相关文件里,改完记得检查缩进和大小写。
另一个高频问题是codex无法加载组织设置,这多半和账号的组织归属、API 权限有关。如果是个人使用,建议直接用个人 API 密钥,绕开组织层面的策略限制。
Codex 接入 DeepSeek 是很多人关心的场景。核心思路是把 Codex 的模型端点指向 DeepSeek 的兼容接口:
# ~/.codex/config.toml 示例 model = "deepseek-chat" api_base = "https://api.deepseek.com/v1" api_key = "your-deepseek-key"配置完用codex启动,如果报端点相关错误,优先检查api_base末尾有没有多余的斜杠,以及模型名称是否和供应商文档一致。我踩过一次坑,模型名写成了deepseek,实际应该是deepseek-chat,排查了半天。
3.3 多工具切换:openrig 的核心机制
openrig 真正体现价值的地方,是让 Claude Code 和 Codex 共用一套环境又能快速切换。常见做法是用一个 shell 函数或脚本,根据参数切换环境变量和配置文件。
# 放到 ~/.bashrc 里的切换函数示例 rig() { case "$1" in claude) export ANTHROPIC_BASE_URL="http://localhost:1234/v1" export ANTHROPIC_API_KEY="local" echo "已切换到 Claude Code 本地模式" ;; codex) export OPENAI_BASE_URL="https://api.deepseek.com/v1" export OPENAI_API_KEY="your-key" echo "已切换到 Codex + DeepSeek 模式" ;; *) echo "用法: rig [claude|codex]" ;; esac }这样在 tmux 里开两个窗口,一个跑 Claude Code,一个跑 Codex,各自环境互不干扰。cc switch local proxy failed while handling codex endpoint /responses这类错误,很多时候就是切换时环境变量没清干净,导致 Codex 拿着 Claude 的端点去请求。用独立 tmux 窗口 + 独立环境变量,能从根上避免这个问题。
4. 常见报错排查与避坑经验
4.1 安装类报错速查
| 报错信息 | 大概率原因 | 解决方向 |
|---|---|---|
node.js v24.21.0 is not yet released | 指定了未发布的 Node 版本 | 改用 LTS 版本号 |
error installing伴随权限提示 | npm 全局目录权限不足 | 配置用户级 npm prefix |
codex无法加载组织设置 | 账号组织策略限制 | 改用个人 API 密钥 |
unrecognized configuration setting | 配置文件字段拼写错误 | 逐行核对配置项 |
cc switch local proxy failed | 环境变量残留导致端点错乱 | 独立会话隔离环境 |
4.2 端点与代理类问题的排查思路
cc switch local proxy failed while handling codex endpoint /responses这个报错我遇到过好几次,排查下来基本是三类原因:一是本地代理服务没启动,二是端点路径写错(Codex 用的是/responses而不是/chat/completions),三是切换工具时旧的环境变量还在生效。
排查顺序建议这样走:先确认本地服务是否在监听(curl一下端点看有没有响应),再检查配置文件里的路径,最后用env | grep -i api看看有没有不该存在的变量。把这三步走完,九成端点问题都能定位。
4.3 我踩过的几个真实坑
第一个坑是 Node 版本混用。我机器上同时装了系统源的 Node 和 NodeSource 的 Node,which node指向的和我以为的不是同一个,导致 Claude Code 装到了另一个 npm 目录里,怎么都找不到命令。后来统一用which -a node把所有 Node 路径列出来,清理掉多余的才理顺。
第二个坑是 tmux 会话里的环境变量。我在.bashrc里改了 API 配置,但已经开着的 tmux 会话不会自动重新加载,必须source ~/.bashrc或者重开会话。这个细节不注意,会以为配置没生效,反复改配置文件。
第三个坑是 Codex 的配置文件格式。TOML 对缩进和引号比较敏感,我用编辑器自动格式化把某个字符串的引号弄丢了,Codex 启动直接报配置错误。后来养成习惯,改完配置先用codex --help之类不依赖配置的命令验证一下工具本身能不能跑,再排查配置。
5. 进阶玩法:本地模型接入与多会话编排
5.1 Claude Code 调用 LM Studio 本地模型的完整流程
把 Claude Code 接到 LM Studio 的本地模型,是 openrig 体系里很实用的一环。完整流程是这样的:先在 LM Studio 里下载并加载一个模型,开启本地服务器(默认端口 1234),确认 OpenAI 兼容接口可用;然后设置 Claude Code 的环境变量指向这个本地端点;最后启动 Claude Code 验证。
# 验证 LM Studio 本地服务 curl http://localhost:1234/v1/models # 设置 Claude Code 指向本地 export ANTHROPIC_BASE_URL="http://localhost:1234/v1" export ANTHROPIC_API_KEY="lm-studio" claude实测下来,本地模型在代码补全、简单函数生成上够用,但涉及跨文件重构、复杂逻辑推理时,还是得切回云端模型。我的做法是日常轻量任务用本地省额度,重活切云端。
5.2 用 tmux 编排多工具协作
进阶用法是在一个 tmux 会话里开多个窗口,分别跑 Claude Code、Codex 和普通终端。比如窗口 0 跑 Claude Code 做架构分析,窗口 1 跑 Codex 做具体代码生成,窗口 2 用来跑测试和 git 操作。三者通过文件系统共享代码,形成一条"分析—生成—验证"的流水线。
tmux new -s work # Ctrl+B C 新建窗口,重复几次 # Ctrl+B 0/1/2 切换窗口这种编排方式的好处是每个工具的会话独立、环境独立,不会互相污染。对于需要长时间跑的任务,tmux 的持久化能力让整个流程更可靠。
5.3 第三方 API 接入的通用技巧
不管是 Claude Code 还是 Codex,接入第三方 API 时都有几个通用注意点:密钥不要硬编码在会提交到 git 的文件里,用环境变量或独立的本地配置文件;端点地址末尾的斜杠要统一,有的服务对/v1和/v1/处理不同;模型名称严格按供应商文档写,不要凭记忆。这几点看着简单,但实际排查问题时,大部分故障都出在这些细节上。
6. 一些个人体会
这套 openrig 式的环境搭下来,最大的感受是:AI 编程工具本身的能力固然重要,但真正决定日常效率的,往往是环境配置的稳定性和切换的顺畅度。我见过不少人因为一个 Node 版本问题或者端点配置错误,折腾一下午就放弃了,其实问题本身并不复杂,只是缺少一套清晰的排查路径。
tmux 这个看似和 AI 无关的工具,反而是整个体系里我最离不开的一环。它让长时间运行的 AI 会话有了"容错空间",网络波动、误关终端都不再是灾难。如果你经常在远程机器上跑 Claude Code 或 Codex,强烈建议把 tmux 用起来。
最后分享一个小习惯:每次改完环境变量或配置文件,先在一个干净的终端里验证,再回到 tmux 会话里用。这样能快速区分是配置本身的问题,还是会话环境残留的问题,排查效率能高不少。