openrig实战:Claude Code与Codex本地环境搭建与模型接入指南

发布时间:2026/10/14 16:40:57

openrig实战:Claude Code与Codex本地环境搭建与模型接入指南 1. 从“openrig”说起一个把 Claude Code 和 Codex 装进同一台机器的实战思路第一次看到 “openrig” 这个词我下意识把它拆成了 “open” 和 “rig” 两半。rig 在英文里除了“装备、装置”在工程语境里还有一层很实在的意思——把一堆零散的部件搭成一套能跑起来的系统。放到当下这个时间点openrig 指向的东西其实非常明确把 Claude Code、Codex 这类命令行 AI 编程助手连同 Node.js、tmux 这些底层依赖整合成一套可复用、可切换、可维护的本地开发环境。我身边不少朋友最近都在折腾同一件事一边想用 Claude Code 处理日常的代码理解和重构一边又想用 Codex 跑一些批量任务或者接第三方模型结果两台工具各自装一套 Node.js版本还打架终端窗口开了一堆tmux 会话切来切去最后自己都记不清哪个窗口跑的是哪个。openrig 这个标题背后真正要解决的就是这种“工具越多越乱”的状态。这篇文章适合谁看如果你已经在用或者准备用 Claude Code、Codex被 Node.js 版本、安装报错、模型接入、终端会话管理这些问题卡过那这篇就是写给你的。我会从整体设计思路讲起把 Node.js 环境、Claude Code 安装、Codex 安装、tmux 会话管理、第三方模型接入这几块拆开揉碎再给出一套我自己实测下来比较稳的搭建流程。全程不涉及任何网络访问工具只讲本地环境怎么搭、工具怎么配、坑怎么避。需要先说明一点openrig 不是一个官方发布的软件包它更像是一种“环境搭建范式”的统称。所以下面所有内容都是基于我作为一个长期折腾命令行工具的人在这个场景下最可能采用的合理方案来展开的你可以直接抄作业也可以按自己的习惯调整。2. 整体设计思路为什么要把这些工具“捆”在一起2.1 核心矛盾工具各自为政带来的版本地狱先说清楚问题在哪。Claude Code 和 Codex 本质上都是 Node.js 生态里的命令行工具它们对 Node.js 版本有各自的要求。Claude Code 官方推荐较新的 LTS 版本Codex 在不同阶段对 Node.js 版本的要求也不完全一致。如果你像我一样先装了 Claude Code过两天又想试 Codex很容易出现这样的情况全局 npm 里两个工具的依赖互相干扰或者某个工具在 Node.js 24 上跑不起来报出类似 “node.js v24.21.0 is not yet released or is not available” 这种让人一头雾水的错误。我踩过的第一个坑就是直接用系统自带的 Node.js版本太老装 Claude Code 时各种编译报错后来手动升级到最新版结果 Codex 又提示某些原生模块不兼容。折腾了一下午才明白问题的根源不是工具本身而是我把所有东西都塞进了同一个全局环境。2.2 设计原则隔离、可切换、可复现openrig 这套思路的核心我总结成三个词隔离、可切换、可复现。隔离的意思是不同工具尽量用独立的 Node.js 版本管理不要全部依赖系统全局的那一个。可切换的意思是Claude Code 和 Codex 之间要能快速切换包括模型接入的切换比如今天用官方模型明天想接本地模型或者第三方 API不应该每次都改一堆配置文件。可复现的意思是整套环境搭好之后换一台机器或者重装系统能照着步骤快速重建而不是靠记忆。基于这三个原则我最终确定的方案是用 Node.js 版本管理工具比如 nvm 或 fnm来管理多个 Node.js 版本Claude Code 和 Codex 分别绑定到各自验证过的版本上用 tmux 来管理终端会话一个会话跑 Claude Code一个会话跑 Codex互不干扰模型接入层面通过环境变量和配置文件来区分不同后端避免硬编码。2.3 为什么选 tmux 而不是多开终端窗口有人可能会问多开几个终端窗口不就行了为什么要用 tmux我一开始也是这么想的直到我的窗口数量超过了十个每次找某个会话都要在任务栏里翻半天。tmux 的好处在于它把会话和窗口解耦了。你可以创建一个名为 “claude” 的会话专门跑 Claude Code再创建一个名为 “codex” 的会话跑 Codex需要的时候一条命令切过去不需要的时候 detach 掉后台继续跑。更重要的是tmux 会话在 SSH 断开或者终端意外关闭后依然存活。我有一次跑一个长时间的代码分析任务笔记本合盖休眠了一下终端断了但因为跑在 tmux 里重新连上之后任务还在。这个体验一旦用过就回不去了。对于需要长时间运行 AI 编程助手的场景tmux 几乎是必备的。2.4 方案选型的取舍为什么不追求“一键脚本”网上有很多一键安装脚本我也试过几个但最后都放弃了。原因很简单一键脚本把细节全藏起来了一旦出错你根本不知道是哪一步的问题。而 openrig 这套东西涉及 Node.js 版本、全局包路径、环境变量、模型配置多个层面任何一个环节出问题都需要能定位。所以我更倾向于手动分步搭建每一步都验证通过再进行下一步。慢是慢一点但出问题时心里有数。3. 核心细节解析Node.js、Claude Code、Codex 的安装要点3.1 Node.js 安装版本选择比安装本身更重要Node.js 是这一切的地基。很多人安装 Node.js 的方式是去官网下载一个安装包双击下一步装完事。这种方式在只用一个工具时没问题但当你同时要跑 Claude Code 和 Codex 时就会遇到版本冲突。我的建议是先装一个 Node.js 版本管理工具。在 macOS 和 Linux 上nvm 是最成熟的选择Windows 上可以用 nvm-windows或者如果你用 WSL直接按 Linux 的方式装 nvm。装好之后不要急着装最新版而是先确认 Claude Code 和 Codex 各自推荐的 Node.js 版本。根据我的实测Claude Code 在 Node.js 20 LTS 和 22 LTS 上都比较稳Codex 对 Node.js 版本相对宽松但建议不要用太老的版本。所以我的做法是用 nvm 装一个 20 LTS 作为主力版本再装一个 22 LTS 作为备用。具体命令如下# 安装 nvmmacOS/Linux curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新加载 shell 配置 source ~/.bashrc # 或 ~/.zshrc # 安装 Node.js 20 LTS nvm install 20 nvm use 20 nvm alias default 20 # 再装一个 22 LTS 备用 nvm install 22装完之后用node -v和npm -v确认版本。这里有个细节nvm 安装的 Node.js 是用户级别的不会污染系统全局这也是我推荐它的核心原因。如果你在 Windows 上nvm-windows 的用法类似但要注意安装时需要管理员权限而且切换版本后可能需要重开终端才能生效。提示如果你之前用系统包管理器装过 Node.js建议先卸载干净否则 nvm 的版本切换可能不生效。用which node确认当前用的是 nvm 管理的版本而不是系统自带的。3.2 Claude Code 安装全局安装与路径问题Node.js 就绪之后Claude Code 的安装本身不复杂但有几个细节容易翻车。标准做法是全局安装npm install -g anthropic-ai/claude-code装完之后直接运行claude命令如果提示找不到命令说明 npm 的全局 bin 目录没有加到 PATH 里。这是新手最常遇到的问题。解决办法是先查一下全局 bin 目录在哪npm config get prefix假设输出是/Users/yourname/.nvm/versions/node/v20.11.0那么 bin 目录就是它下面的bin子目录。把这个路径加到你的 shell 配置文件里export PATH$PATH:/Users/yourname/.nvm/versions/node/v20.11.0/bin然后source一下配置文件再运行claude应该就能识别了。我建议在 nvm 的配置里加上--no-use或者确保每次切换 Node.js 版本后重新确认全局包因为 nvm 的全局包是按版本隔离的你在 20 下装的 Claude Code切到 22 之后可能就找不到了。另一个常见问题是权限。如果你用sudo npm install -g可能会把包装到系统目录导致后续权限混乱。我的经验是永远不要用 sudo 装全局 npm 包如果遇到权限报错说明 npm 的 prefix 配置有问题应该去修 prefix而不是加 sudo。3.3 Codex 安装注意配置文件的坑Codex 的安装方式取决于你用的是哪个版本。如果是官方 CLI通常也是通过 npm 全局安装。安装命令类似npm install -g openai/codex装完之后运行codex第一次会引导你登录或者配置 API。这里有个我踩过的坑Codex 在启动时会读取配置文件如果配置文件里有拼写错误或者不认识的字段它会提示 “codex is ignoring 1 unrecognized configuration setting. check for typos or d...”。这个提示本身不致命但如果你没注意到可能会以为配置生效了实际上被忽略了。所以我的习惯是每次改完 Codex 的配置文件都仔细看一遍启动时的输出确认没有 unrecognized setting 的警告。配置文件的位置通常在用户目录下的.codex或者.config/codex目录里具体取决于版本。改配置之前先备份一份出问题了直接还原。还有一个问题是 Codex 的登录。如果你用的是官方服务登录流程一般比较顺畅如果遇到 “your organization has disabled claude subscription access” 这类提示那通常是账号权限或者订阅状态的问题跟本地环境无关需要去账号层面解决。这类问题我在本地怎么折腾都没用最后发现是账号设置的问题白白浪费了一个小时。3.4 tmux 会话管理让两个工具各占一个“房间”tmux 的安装很简单macOS 上用brew install tmuxUbuntu 上用apt install tmux。装完之后我建议先建一个配置文件~/.tmux.conf加上几行基础配置让操作更顺手# 把前缀键改成 Ctrla比默认的 Ctrlb 更顺手 set -g prefix C-a unbind C-b bind C-a send-prefix # 开启鼠标支持 set -g mouse on # 窗口编号从 1 开始 set -g base-index 1 setw -g pane-base-index 1配置好之后创建两个会话# 创建名为 claude 的会话 tmux new -s claude # 在会话里运行 Claude Code claude # 按 Ctrla 然后按 d 脱离会话 # 创建名为 codex 的会话 tmux new -s codex codex之后想切回 Claude Code就tmux attach -t claude想切到 Codex就tmux attach -t codex。查看当前有哪些会话用tmux ls。这套操作熟练之后切换工具就是一两秒的事比在任务栏里找窗口快得多。注意tmux 会话里的环境变量是创建会话时继承的。如果你在创建会话之后切换了 Node.js 版本会话里的版本不会自动更新。所以我的做法是先确认好 Node.js 版本再创建 tmux 会话。4. 实操过程从零搭一套可用的 openrig 环境4.1 环境准备与版本确认假设你现在是一台干净的机器我们从零开始。第一步是确认系统环境。macOS 和 Ubuntu 的流程略有不同但核心步骤一致。先确认 shell 类型echo $SHELL如果是 zsh配置文件就是~/.zshrc如果是 bash就是~/.bashrc。后面的 PATH 配置要写到对应的文件里。然后安装 nvm装 Node.js 20 LTS确认版本。这一步做完之后先不要急着装 Claude Code 和 Codex而是先确认 npm 的全局路径配置正确。运行npm config get prefix记下这个路径把它加到 PATH 里。这一步是整个流程里最容易被忽略但最重要的一步PATH 没配好后面所有全局命令都会找不到。4.2 Claude Code 的安装与首次运行Node.js 和 PATH 都确认无误后安装 Claude Codenpm install -g anthropic-ai/claude-code安装完成后运行claude --version确认安装成功。然后进入一个你的项目目录运行claude启动。第一次启动会引导你完成认证或者配置。如果你用的是官方服务按提示操作即可如果你想接本地模型或者第三方 API先别急着配等基础流程跑通再说。首次运行我建议先在一个测试目录里进行不要直接在你的主力项目里跑。因为 Claude Code 会读取项目文件万一配置有问题可能产生意料之外的操作。测试目录里放几个简单的代码文件跑一下基本的问答和文件读取确认工具能正常工作。4.3 Codex 的安装与配置分离Codex 的安装类似npm install -g openai/codex装完之后先运行codex --help看看有哪些子命令和选项。然后运行codex进入交互模式完成登录或 API 配置。这里我要强调一个经验Codex 的配置尽量通过环境变量或者独立的配置文件来管理不要把敏感信息直接写在命令行历史里。如果你要接第三方模型比如通过兼容接口接入其他模型服务通常需要设置OPENAI_API_KEY和OPENAI_BASE_URL这两个环境变量。我的做法是在~/.zshrc里定义不同的函数来切换配置比如# 切换到官方配置 codex-official() { export OPENAI_API_KEYyour-official-key export OPENAI_BASE_URLhttps://api.openai.com/v1 } # 切换到第三方配置 codex-thirdparty() { export OPENAI_API_KEYyour-thirdparty-key export OPENAI_BASE_URLhttps://your-thirdparty-endpoint/v1 }这样需要切换的时候运行对应的函数就行不用每次手动改环境变量。这个技巧同样适用于 Claude Code 接本地模型的场景。4.4 tmux 会话编排与日常使用流程环境都搭好之后用 tmux 把两个工具编排起来。我的日常流程是这样的开机后先打开终端运行tmux attach -t claude进入 Claude Code 会话处理需要深度理解的代码任务需要跑批量任务或者用另一个模型时按Ctrla然后按s列出所有会话选择 codex 会话切过去。如果你觉得每次 attach 太麻烦可以在 shell 配置里加两个别名alias tctmux attach -t claude alias txtmux attach -t codex这样tc和tx两个命令就能快速切换。另外tmux 会话如果意外被关闭里面的进程也会终止。所以对于长时间运行的任务我建议在 tmux 里再用nohup或者把任务放到后台避免会话意外断开导致任务中断。4.5 模型接入的切换策略Claude Code 和 Codex 都支持接入不同的模型后端。Claude Code 可以接本地模型比如通过 LM Studio 提供的兼容接口Codex 可以接第三方 API。这里的关键是不同后端的接口格式和认证方式可能不同切换时要确保环境变量和配置文件同步更新。我的做法是为每个后端准备一个独立的配置文件切换时用软链接或者环境变量指向对应的配置。比如 Claude Code 的配置可以放在~/.claude/configs/目录下每个后端一个文件切换时用ln -sf更新软链接。这样比每次手动改配置安全得多也不容易出错。提示接本地模型时要确认本地服务的接口地址和端口以及模型名称是否匹配。我遇到过接口地址写对了但模型名称写错导致请求一直失败的情况排查了半天才发现是模型名的问题。5. 常见问题与排查技巧实录5.1 安装类问题速查表问题现象可能原因排查与解决claude命令找不到npm 全局 bin 目录未加入 PATH运行npm config get prefix把其下的 bin 目录加入 PATHnode.js v24.21.0 is not yet releasedNode.js 版本与工具要求不匹配用 nvm 切换到 20 LTS 或 22 LTS全局安装报权限错误npm prefix 指向系统目录修改 npm prefix 到用户目录不要用 sudoCodex 提示 unrecognized setting配置文件有拼写错误或多余字段检查配置文件删除不认识的字段切换 Node.js 版本后工具失效nvm 全局包按版本隔离在新版本下重新全局安装对应工具这张表里的问题我几乎每一个都实际遇到过。其中“切换 Node.js 版本后工具失效”这个坑最隐蔽因为报错信息往往不会直接告诉你是因为版本切换导致的。我的经验是每次用 nvm 切换版本后都运行一下which claude和which codex确认指向的是当前版本的路径。5.2 模型接入类问题排查模型接入的问题通常表现为请求失败、超时或者返回格式错误。排查思路是分层的先确认网络能通到目标接口再确认认证信息正确最后确认请求格式符合接口要求。我遇到过一次 “cc switch local proxy failed while handling codex endpoint /responses” 的报错最后发现是本地代理配置和 Codex 的接口路径不匹配调整路径后就好了。对于接本地模型的场景我建议先用 curl 直接测试接口确认接口本身能正常工作再让 Claude Code 或 Codex 去调用。这样能把问题范围缩小避免在工具层面瞎折腾。测试命令类似curl -X POST http://localhost:1234/v1/chat/completions \ -H Content-Type: application/json \ -d {model:your-model,messages:[{role:user,content:hello}]}如果 curl 能通工具不通那就是工具配置的问题如果 curl 也不通那就是本地服务的问题。5.3 终端会话类问题tmux 最常见的问题是会话里的环境变量不对。比如你在创建会话之后才设置了某个 API key会话里是读不到的。解决办法是在创建会话之前设置好所有环境变量或者在会话里手动 export。另一个问题是 tmux 会话里的终端尺寸不对导致界面显示错乱这个可以通过tmux resize-window或者重新 attach 解决。还有一个我踩过的坑在 tmux 会话里运行 Claude Code 时如果会话是在旧版本 Node.js 下创建的而你在外部切换了版本会话里的 Claude Code 可能行为异常。所以我的习惯是每次切换 Node.js 版本后重建 tmux 会话确保环境一致。5.4 独家避坑心得第一条心得所有配置文件都纳入版本管理。我用一个私有的 git 仓库管理~/.zshrc、~/.tmux.conf、Claude Code 和 Codex 的配置文件。这样换机器时直接 clone 下来改改路径就能用不用凭记忆重配。第二条心得每次改动环境后记录一条日志写清楚改了什么、为什么改、验证结果如何。这个习惯帮我省了很多重复排查的时间。第三条心得不要追求一次配到完美。openrig 这套环境是可以逐步演进的先让 Claude Code 跑起来再让 Codex 跑起来最后再优化 tmux 和模型切换。一次性想配好所有东西反而容易在某个环节卡住导致整体进度停滞。我自己的环境就是迭代了三四次才稳定下来的。6. 后续可以怎么扩展这套环境这套环境搭好之后其实还有很多可以扩展的方向。比如你可以把常用的项目目录做成 tmux 的 session 模板一键创建带 Claude Code 和 Codex 的工作区。也可以写一个简单的 shell 脚本在启动时自动检查 Node.js 版本、工具版本和配置文件状态有问题提前报警。另外如果你同时用 VS Code可以考虑把 Claude Code 和 Codex 的终端集成到 VS Code 的终端面板里通过 VS Code 的任务配置来管理。不过我个人还是更习惯独立的 tmux 会话因为 VS Code 的终端在窗口关闭时容易中断而 tmux 会话是持久的。最后分享一个小技巧给 tmux 会话加上状态栏显示把当前 Node.js 版本和当前使用的模型后端显示在状态栏上这样一眼就能看出当前环境是什么状态避免在错误的版本或配置下操作。这个配置在~/.tmux.conf里加几行就能实现具体可以根据自己的需求调整。
延伸阅读

更多相关文章

2026/10/14 16:40:57

openrig 环境编排实战:Claude Code 与 Codex 终端 AI 助手配置指南

1. 从零认识 openrig:它到底解决什么问题第一次看到 openrig 这个名字,很多人会以为是某个硬件支架或者开源机械臂项目。实际上,在当前的开发者圈子里,openrig 更多被提及的场景,是围绕 Claude Code、Codex 这类终端 A…

2026/10/14 16:40:57

前端资源加载优化利器:ponytail 插件详解

ponytail 这个名字我第一次看到的时候,第一反应是“马尾辫”,心想这跟插件有什么关系。后来在本地环境里真正跑过一次才发现,它其实是一个很务实的构建辅助工具,专门用来梳理前端项目里的资源依赖关系,顺便帮你在打包阶…

2026/10/14 16:35:55

STM32F103C8T6参考例程全指南:从跑通到避坑再到固件模板

简介:嵌入式开发中,参考例程是工程师快速上手芯片外设的重要资源。以STM32F103C8T6为例,其HAL库风格代码覆盖时钟树、GPIO、串口、定时器与ADC等关键模块,理解启动文件和时钟配置顺序是确保程序正确运行的前提。掌握参考例程的工程…

2026/10/14 22:19:17

SAP基金管理功能详解:预算结构搭建与业务集成避坑指南

简介:这份文档面向SAP财务与预算管理方向的顾问、实施人员及企业财务信息化学习者,系统梳理基金管理模块的核心逻辑与配置要点。内容围绕预算管理与控制展开,涵盖承诺预算、支付预算与可用性检查三大机制,并说明基金中心、基金、承…

2026/10/14 22:19:17

操作系统核心机制拆解:虚拟化、并发与持久化及排查指南

如果你只是把操作系统当成一个“帮程序跑起来的软件”,那你迟早会在线上栽跟头。我自己就见过不少类似的场景:一个进程突然卡死不动,另一台机器内存被吃光,还有人把数据库写入变慢当成网络问题查了半天,最后发现是文件…

2026/10/14 22:19:17

artcraft:面向创作者的生成式AI可干预范式

1. “Artcraft”不是新词,而是被低估的创作范式重构信号最近在多个设计社区、开源项目讨论区和创意工作坊里,“artcraft”这个词频繁跳出来——它不像“AI绘画”“生成式设计”那样自带流量标签,也没有明确指向某款工具或平台,但凡…

2026/10/14 22:19:17

LangChain、LangGraph与Deep Agents实战:分层协作构建复杂AI代理

1. 从"链式调用"到"图式编排":为什么我最终把三个框架揉在一起用去年下半年开始,我陆续接手了几个基于大模型的自动化项目,从最早的简单问答机器人,到后来的多步骤文档处理流水线,再到需要动态决策…

2026/10/14 22:14:17

AI Skill获取指南:五大靠谱渠道与高效筛选实战经验

经常有朋友跑来问我:“你整天折腾AI,到底去哪儿找Skill比较靠谱?”一开始我以为他们问的是个人技能学习渠道,后来才意识到,大家问的是AI应用里那种可以复用的“技能包”——给智能体装上之后,它就能干特定事…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/14 2:32:55

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/14 0:00:33

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:33

macOS/iOS高精度计时:mach_absolute_time原理与实战

1. 项目概述:为什么mach_absolute_time是 macOS/iOS 时间测量的“黄金标准”在 macOS 和 iOS 开发中,我见过太多人用CFAbsoluteTimeGetCurrent()或NSDate.timeIntervalSinceReferenceDate做性能打点,结果在高精度场景下被系统时钟跳变、NTP 同…

2026/10/14 0:00:33

SCORM课件演示与测试全解析:从API通信到自动化验证

简介:这是一套遵循SCORM标准的交互式课件演示与测试资源,面向E-Learning课程开发者、LMS平台测试人员及在线教学从业者,用于验证课件在不同学习管理系统中的识别、传递与跟踪能力。压缩包共28个文件,约12.07MB,以swf动…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑