☰
openrig脚手架:Claude Code与Codex终端AI编码环境搭建指南
2026/10/15 13:49:54 网站建设 项目流程

1. 从“openrig”说起:一个把终端AI编码工具串起来的脚手架

第一次看到“openrig”这个名字,我下意识把它拆成了“open”和“rig”两个部分。rig在工程语境里是“装配、搭台子”的意思,比如测试台架叫test rig,钻井平台叫drilling rig。所以openrig本质上就是一套开源的“装配台”,把当下最热的两类终端AI编码工具——Claude Code和Codex——以及它们背后依赖的Node.js运行时、tmux会话管理,整合成一套可复现的工作环境。它解决的不是某个单点技术问题,而是“我本地装了一堆工具,但每次换机器、换项目、换模型供应商都要重新折腾一遍”的重复劳动。

我接触这个方向,是因为身边太多人在Claude Code和Codex之间反复横跳。Claude Code的交互体验和上下文管理确实顺手,但订阅访问限制、地区可用性、组织策略这些问题时不时冒出来;Codex在CLI形态上更轻,接入第三方模型端点也灵活,但配置项散落在多个文件里,一个拼写错误就报“ignoring 1 unrecognized configuration setting”。openrig这类脚手架的价值,就是把这些碎片化的安装、配置、切换动作收敛成一套标准流程。

这篇文章适合三类人看:一是刚听说Claude Code或Codex,想在自己机器上跑起来但被Node.js版本、安装报错卡住的新手;二是已经在用其中一个,想搞清楚怎么在两者之间平滑切换、怎么接入本地模型或第三方API的中级用户;三是想把这套东西做成团队标准环境、需要理解每个配置项背后逻辑的工程负责人。我会从整体设计思路讲到具体操作,把踩过的坑和验证过的参数都摊开说。

2. 整体设计与思路拆解:为什么是Node.js + tmux + 多工具并存

2.1 为什么这类工具都绕不开Node.js

Claude Code和Codex的CLI版本,本质上都是Node.js写的命令行程序。你从npm全局安装它们的时候,npm会把包下载到全局node_modules目录,然后在bin目录里创建可执行入口。这意味着两件事:第一,你的Node.js版本必须满足包的最低要求,否则安装阶段就会报错;第二,全局安装的包和Node.js版本是绑定的,你升级Node.js大版本后,之前装的CLI工具可能需要重装。

我见过最常见的报错就是“error installing 24.21.0: node.js v24.21.0 is not yet released or is not available”。这个报错通常出现在你用nvm或fnm这类版本管理器去安装一个还不存在的版本号时。Node.js的版本发布有严格的节奏,偶数大版本是LTS,奇数大版本是Current,具体小版本号要等官方发布后才能在镜像源里拉到。解决办法很简单:去Node.js官网下载页确认当前LTS的具体版本号,或者直接用nvm install --lts让版本管理器自己解析最新的LTS。

提示:不要盲目追最新的Current版本。Claude Code和Codex的依赖树里有些原生模块对Node.js的ABI版本敏感,Current版本偶尔会出现编译失败。生产环境或日常主力开发,优先选LTS。

2.2 tmux在这套体系里扮演什么角色

很多人第一次看到openrig相关讨论里频繁出现tmux会疑惑:一个终端复用工具,跟AI编码助手有什么关系?关系大了。Claude Code和Codex都是长时间运行的交互式进程,你发起一个任务后,它可能要读几十个文件、跑几轮推理、执行若干终端命令。如果你直接在前台跑,一旦SSH断线或者你不小心关了终端窗口,整个会话就没了,之前积累的上下文全部丢失。

tmux解决的就是会话持久化问题。你可以在tmux里开一个window专门跑Claude Code,另一个window跑Codex,再开一个window做git操作和文件查看。SSH断了重新连上,tmux attach一下,所有会话原封不动。更进一步,你可以用tmux的send-keys功能做半自动化:把一段提示词通过脚本发送到指定pane,让AI工具在后台持续工作,你切过去看结果就行。

我自己的习惯是给每个项目建一个tmux session,session名字用项目名。里面固定三个window:window 0是shell,用来跑git和构建命令;window 1是Claude Code;window 2是Codex。这样切换成本极低,tmux attach -t 项目名进去,Ctrl+b加数字直接跳。

2.3 多工具并存的配置隔离策略

Claude Code和Codex各自有独立的配置目录和配置文件。Claude Code的配置通常在用户主目录下的.claude目录里,Codex的配置在.codex目录里。它们都会读取环境变量,也都会在项目根目录寻找项目级配置。openrig这类脚手架的核心工作之一,就是帮你把这些配置文件的模板管理起来,在不同项目、不同模型供应商之间做切换。

这里有个关键设计决策:是让两个工具共享一套模型端点配置,还是各自独立?我的建议是各自独立。原因在于Claude Code对Anthropic格式的API有特定要求,而Codex更偏向OpenAI兼容格式。虽然现在很多第三方服务同时提供两种格式的端点,但参数细节、认证头、流式响应格式都有差异。混用配置最容易出现的问题就是“cc switch local proxy failed while handling codex endpoint /responses”这类代理转发错误——请求发到了错误的端点路径上。

所以openrig的思路应该是:为每个工具维护独立的配置模板,通过环境变量或启动脚本注入当前项目需要的端点信息。切换模型供应商时,改的是模板变量,而不是直接改工具本身的配置文件。这样回滚和对比都方便。

3. 核心细节解析与实操要点:安装、配置、切换的完整链路

3.1 Node.js安装:版本选择与镜像加速

Node.js安装本身不复杂,但国内网络环境下有几个细节值得说。官方下载页提供的安装包分LTS和Current两条线,Windows用户直接下.msi,macOS用户下.pkg,Linux用户建议用版本管理器而不是系统包管理器自带的版本。系统包管理器里的Node.js往往版本偏旧,而且升级时容易和系统其他依赖冲突。

版本管理器我推荐fnm或nvm。fnm是Rust写的,启动速度快,跨平台支持好;nvm是老牌方案,生态成熟,但shell启动时加载稍慢。安装fnm后,用fnm install --lts装最新LTS,fnm use lts切换过去,fnm default lts设为默认。这样每次新开终端自动用LTS版本。

如果下载速度慢,可以配置镜像源。npm的镜像配置用npm config set registry指向国内镜像,Node.js本身的下载可以在版本管理器层面配置镜像地址。具体镜像地址这里不展开,各大云厂商都有提供,搜一下就能找到。

安装完成后验证三件事:node -v看版本号,npm -v看npm版本,which node看路径是否指向版本管理器管理的目录而不是系统目录。这三步确认无误,再往下走。

3.2 Claude Code安装与首次配置

Claude Code的安装方式取决于你用的平台。npm全局安装是最通用的方式,命令是npm install -g加上包名。安装完成后,第一次运行会引导你做认证。认证方式有几种:订阅账号登录、API密钥、第三方端点。如果你遇到“your organization has disabled claude subscription access for claude code”这个提示,说明你的账号所属组织在管理后台关闭了Claude Code的访问权限,这种情况只能改用API密钥方式或者联系组织管理员。

认证完成后,Claude Code会在.claude目录下生成配置文件。你需要关注几个关键配置项:模型名称、API端点、最大token数、是否启用流式输出。如果你要接入本地模型,比如通过LM Studio跑本地模型,需要把API端点指向http://localhost:端口/v1,模型名称填LM Studio里加载的模型标识。这里有个坑:LM Studio默认的API格式是OpenAI兼容的,但Claude Code期望的是Anthropic格式,中间需要一个转换层。有些第三方代理工具可以做这个转换,配置时注意端点路径不要写错。

VS Code里配置Claude Code,通常是装对应的扩展,然后在扩展设置里填API密钥和端点。Ubuntu下配置和macOS、Windows没有本质区别,主要是路径和权限问题。如果遇到权限报错,检查.claude目录的属主是不是当前用户。

3.3 Codex安装与配置要点

Codex的安装同样走npm全局安装。安装完成后,配置文件在.codex目录下。Codex的配置项比Claude Code更偏向OpenAI风格:model、api_base、api_key、max_tokens、temperature这些。如果你要接入DeepSeek或其他第三方模型,把api_base指向对应的端点,model填模型标识,api_key填你的密钥。

Codex有一个常见报错:“codex is ignoring 1 unrecognized configuration setting. check for typos or d”。这个报错的意思是配置文件里有一个键名它不认识,直接忽略了。通常是因为你把某个配置项写错了层级,或者用了旧版本的键名。解决办法是查对应版本的官方文档,确认键名拼写和层级。我建议配置文件用YAML格式,缩进严格,键名全小写加下划线,这样最不容易出错。

Codex登录方面,如果你用的是官方服务,走登录流程即可。如果遇到“codex无法加载组织设置”,通常是网络请求没通或者认证token过期,重新登录一次基本能解决。Windows桌面版和CLI版的配置是分开的,桌面版的配置界面更图形化,CLI版更依赖配置文件。

3.4 模型切换与代理配置的实操细节

“cc switch”这类工具的作用是在多个模型供应商之间快速切换。它的原理通常是维护一组配置文件模板,切换时把对应模板复制到工具的配置目录,或者通过环境变量覆盖。使用这类工具时,最容易出问题的地方是端点路径。Claude Code用的端点和Codex用的端点路径不同,前者通常是/v1/messages,后者是/v1/responses或/v1/chat/completions。如果你用同一个代理地址去服务两个工具,代理层必须能根据路径区分并转发到正确的上游。

“cc switch local proxy failed while handling codex endpoint /responses”这个报错,就是代理层在处理Codex的/responses路径时失败了。排查思路:先确认代理服务是否在运行,再确认代理配置里/responses路径有没有对应的路由规则,最后看上游端点是否可达。很多时候是上游端点的认证信息没配对,或者上游不支持/responses这个路径。

注意:接入第三方API时,先单独用curl测试端点连通性和认证,确认无误再配到工具里。这样能把问题范围缩小到工具配置本身。

4. 实操过程与核心环节实现:从零搭一套可复现的环境

4.1 环境准备清单与版本确认

动手之前,先把清单列清楚。你需要:一台能联网的机器(Windows、macOS、Ubuntu都行),一个终端(Windows用Windows Terminal或Git Bash,macOS和Ubuntu用系统终端),Node.js LTS版本,npm,tmux(Windows下可以用WSL获得tmux),以及你要接入的模型服务的API密钥或本地模型服务地址。

版本确认命令我习惯一次性跑完:

node -v npm -v tmux -V

三个命令都有正常输出,说明基础环境就绪。如果tmux -V报command not found,Ubuntu下用apt install tmux,macOS下用brew install tmux,Windows下建议进WSL操作。

4.2 安装Claude Code与Codex的完整命令序列

安装命令本身很简单,但顺序和权限要注意。先确保npm全局目录在PATH里,用npm config get prefix看全局安装路径,确认这个路径的bin子目录在PATH中。然后依次安装:

npm install -g @anthropic-ai/claude-code npm install -g @openai/codex

安装完成后,用claude --version和codex --version验证。如果报command not found,八成是PATH问题,把npm全局bin目录加到PATH里再试。

首次运行Claude Code,它会引导你选认证方式。选API密钥方式的话,把密钥粘贴进去,它会存到配置文件里。首次运行Codex类似,会引导你登录或填API密钥。

4.3 tmux会话布局与自动化脚本

我通常写一个简单的启动脚本,放在项目根目录,叫dev-session.sh:

#!/bin/bash SESSION=$1 if [ -z "$SESSION" ]; then SESSION="dev" fi tmux new-session -d -s $SESSION tmux rename-window -t $SESSION:0 'shell' tmux new-window -t $SESSION:1 -n 'claude' tmux new-window -t $SESSION:2 -n 'codex' tmux send-keys -t $SESSION:1 'claude' C-m tmux send-keys -t $SESSION:2 'codex' C-m tmux attach -t $SESSION

这个脚本创建三个window,分别跑shell、Claude Code、Codex。send-keys把启动命令发到对应window,C-m是回车。这样一条命令就把整个工作台拉起来了。

4.4 接入本地模型的参数计算与配置示例

假设你用LM Studio在本地跑了一个模型,监听在1234端口。LM Studio的API是OpenAI兼容格式,端点是http://localhost:1234/v1。Claude Code需要Anthropic格式,所以中间要加一层转换。有些代理工具支持格式转换,配置时把上游指向LM Studio,下游暴露Anthropic格式端点给Claude Code。

Codex接入就简单些,因为它本身就是OpenAI兼容风格。配置示例:

model: local-model-name api_base: http://localhost:1234/v1 api_key: not-needed max_tokens: 4096 temperature: 0.7

max_tokens的设置要看模型本身的上下文窗口。本地模型通常上下文窗口比云端小,设太大反而容易触发截断。4096是个保守值,如果你的模型支持更大窗口,可以往上调,但要留出输入token的空间。

4.5 验证与冒烟测试

配置完成后,做一轮冒烟测试。在Claude Code里问一个简单问题,看它能否正常返回。在Codex里同样问一个简单问题。然后测试一个需要读文件的操作,比如让它读当前目录下的某个文件并总结。最后测试一个需要执行终端命令的操作,比如让它跑ls并解释输出。

这三步都通过,说明环境基本可用。如果某一步失败,根据报错信息定位。读文件失败通常是工作目录权限问题,执行命令失败通常是工具的沙箱策略或确认机制在起作用。

5. 常见问题与排查技巧实录

5.1 安装阶段高频报错速查

报错信息可能原因解决方向
error installing 24.21.0: node.js v24.21.0 is not yet released版本号不存在或镜像未同步改用--lts或查官网确认版本号
npm ERR! code EACCES全局目录权限不足配置npm全局目录到用户目录,或修正权限
command not found: claudePATH未包含npm全局bin把npm全局bin目录加入PATH
codex is ignoring 1 unrecognized configuration setting配置键名拼写错误或层级错误对照官方文档检查键名和缩进

5.2 认证与访问类问题

“your organization has disabled claude subscription access for claude code”这个提示,本质是组织级策略限制。如果你用的是个人账号,一般不会遇到。遇到的话,检查账号是否加入了某个组织,组织管理员是否在后台关闭了Claude Code访问。解决办法是改用API密钥认证,或者让管理员开放权限。

“note: claude code might not be available in your country”这类提示,通常和账号注册地、支付方式有关。如果你有可用的API密钥,直接走API密钥认证可以绕过部分限制。

5.3 代理与端点类问题

“cc switch local proxy failed while handling codex endpoint /responses”的排查顺序:先看代理服务日志,确认请求有没有到达代理;再看代理的路由配置,确认/responses路径有没有匹配规则;最后用curl直接测上游端点,确认上游可达且认证正确。

“codex无法加载组织设置”通常是认证token问题。重新登录,或者检查系统时间是否准确(时间偏差过大会导致token验证失败)。

5.4 实操避坑心得

第一个坑:不要同时用多个版本管理器。nvm和fnm装在一起,shell启动时可能互相干扰,导致node版本混乱。选一个用就行。

第二个坑:配置文件不要手动改来改去。用模板加环境变量注入的方式,改配置时改模板,重新生成。手动改容易漏改或改错层级。

第三个坑:tmux里的AI工具进程如果卡死,不要直接kill tmux session,先尝试在对应window里Ctrl+C中断当前操作。直接kill session会丢失所有上下文。

第四个坑:接入第三方API时,先用curl测通再配工具。工具层的报错信息往往不够具体,curl能直接看到HTTP状态码和响应体。

第五个坑:本地模型服务要确认监听地址。有些服务默认只监听127.0.0.1,如果你在容器或虚拟机里跑工具,需要让服务监听0.0.0.0或者配置端口转发。

6. 工具选型与扩展思路

6.1 Claude Code与Codex的适用场景对比

Claude Code在长上下文理解和多文件编辑上体验更连贯,适合需要跨文件重构、理解大型代码库的任务。Codex在CLI交互和脚本化调用上更轻量,适合快速问答、单文件修改、以及集成到自动化流程里。两者不是替代关系,而是互补关系。openrig这类脚手架的价值就在于让两者共存,按任务类型切换。

6.2 从单机到团队环境的扩展

个人用的话,配置文件放用户主目录就够了。团队用的话,建议把配置模板放进项目仓库,用环境变量注入密钥和端点。这样新成员clone仓库后,跑一个初始化脚本就能把环境搭好。密钥不要进仓库,用.env文件或密钥管理服务。

6.3 后续可以叠加的能力

环境搭好后,可以往上叠的东西不少。比如用tmux的pipe-pane把AI工具的会话输出实时写到日志文件,方便回溯。比如写一个包装脚本,在调用AI工具前自动拉取最新代码、跑一遍lint,把结果作为上下文喂给AI。再比如把常用的提示词模板化,用脚本注入变量后发送到tmux pane,实现半自动化的代码生成和审查流程。

我个人在实际操作中的体会是,这套东西的复杂度不在安装本身,而在配置管理和问题定位。把配置模板化、把验证步骤脚本化,能省下大量重复排查的时间。另外,tmux的会话持久化是刚需,尤其是在远程开发场景下,没有tmux的AI编码工作流是不完整的。最后分享一个小技巧:给tmux的每个window设一个有意义的名字,Ctrl+b加w列出所有window时一目了然,比默认的序号好用得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询