
1. openrig 到底想解决什么问题第一次看到openrig这个名字我下意识把它拆成了 open rig 两个词。rig 在工程语境里通常指装配、搭建一套可运行的工作台比如测试台架、实验装置。所以 openrig 从命名上就透露出一个信号它想做的是一套开放的、可自行装配的 AI 编码代理运行环境。结合热搜词里高频出现的 Claude Code、Codex、YAML、Node.js 这几个关键词基本可以判断出 openrig 的定位——它大概率是一个围绕命令行 AI 编码工具Claude Code、Codex CLI 这类做统一配置、统一接入、统一管理的脚手架或配置层。换句话说它不生产模型它做的是把模型接进来、把工具跑起来、把配置管起来这件事。为什么这个方向有需求因为现在用 Claude Code 或 Codex 的人普遍会遇到几个很烦的问题每换一个模型供应商比如从官方切到 DeepSeek、Qwen、GLM就要改一遍配置文件改完还容易漏字段不同工具的配置格式不一样Claude Code 认一套Codex 认另一套YAML 里字段名还经常对不上本地跑 LM Studio 的模型时endpoint、模型名、协议格式经常对不齐报错信息又很含糊团队里每个人环境不一样A 能跑 B 跑不了排查半天发现是 Node.js 版本或者某个环境变量的问题。openrig 想干的就是把这些零散的、重复的、容易出错的配置工作收敛到一个地方。你可以把它理解成AI 编码工具的配置中枢——一份 YAML 描述清楚你要用哪个模型、走哪个 endpoint、用哪个工具剩下的交给它去装配。这篇文章我会从实际使用者的角度把 openrig 涉及的核心概念、配置逻辑、和 Claude Code / Codex 的配合方式、以及最容易踩的坑一条条讲清楚。不管你是刚装完 Node.js 准备上手 Claude Code 的新手还是已经在用 Codex 接第三方模型的老手应该都能从里面找到对自己有用的部分。说明openrig 属于较新的工具公开资料有限。文中涉及的具体配置字段和操作步骤部分是基于同类工具Claude Code、Codex CLI、各类 API 代理层的通用实践做的合理推演实际使用时请以官方文档为准。我会在关键处标注哪些是通用做法、哪些是需要你自行核对的点。2. 从热搜词反推 openrig 的真实使用场景热搜词是一面很好的镜子它反映的是真实用户在搜索什么、卡在哪里。我把这批词粗略分了几类每一类背后都是一个具体的痛点场景。2.1 安装类词Node.js 是绕不过去的第一道坎node.js安装、node.js官网下载、node.js下载、安装node.js、node.js lts下载、error installing 24.21.0: node.js v24.21.0 is not yet released——这一串词说明大量用户卡在第一步装 Node.js。Claude Code 和 Codex CLI 都是基于 Node.js 生态的命令行工具没有 Node.js 就跑不起来。而那个报错node.js v24.21.0 is not yet released or is not available特别典型用户手动指定了一个还不存在的版本号或者用了某个版本管理器nvm、fnm去装一个尚未发布的版本。这里有个经验不要追最新的大版本号。Node.js 的偶数版本是 LTS长期支持奇数版本是 Current尝鲜。生产环境、日常开发一律选 LTS。截至我写这篇内容时稳妥的选择是 Node.js 20 LTS 或 22 LTS。装之前先去官网确认当前 LTS 的具体版本号别凭记忆写。2.2 工具接入类词Claude Code 和 Codex 是两大主角claude code安装、claude code使用、claude code windows、ubuntu配置claude code、vscode配置claude code、codex安装教程、codex使用教程、codex cli、codex登录——这些词覆盖了从安装到日常使用的全流程。值得注意的是vscode配置claude code和claude code for vs code说明很多人不满足于纯终端想把 Claude Code 集成进 VS Code 的工作流里。这是很自然的需求写代码在编辑器里让 AI 帮忙也在编辑器里来回切终端确实割裂。2.3 模型接入类词第三方 API 和本地模型是重头戏claude code 调用lmstudio的本地模型、codex接入deepseek、使用cc switch 接入 deepseek v4, qwen, glm等模型、第三方api使用技巧——这一类词信息量最大。它说明用户的核心诉求是不想被单一模型供应商绑定。有人想用本地 LM Studio 跑开源模型省钱有人想接 DeepSeek 因为便宜有人想用 Qwen 或 GLM 因为中文场景好。而 Claude Code 和 Codex 默认都只认自家模型要接第三方就得靠中间层做协议转换。cc switch local proxy failed while handling codex endpoint /responses这个报错词非常关键。它暴露了一个典型问题Codex 走的是/responses这个 endpoint而很多第三方代理层只实现了/chat/completions协议对不上代理就失败了。这是接第三方模型时最常见的坑之一。2.4 配置类词YAML 是配置的通用语言yaml安装、yaml文件、yolov10 yaml文件怎么创建、rstudio的yaml在哪里——YAML 相关词混进来了一些其他领域的YOLOv10、RStudio但核心还是说明YAML 是这类工具配置的主要格式。openrig 如果要做统一配置YAML 几乎必然是其配置文件的载体。理解 YAML 的基本语法缩进、层级、列表、锚点是使用前提。2.5 把这些场景串起来看把上面几类词串起来openrig 的典型使用场景就清晰了装好 Node.jsLTS 版本装好 Claude Code 或 Codex CLI通过 openrig 用一份 YAML 描述清楚用哪个模型、走哪个 endpoint、用什么协议openrig 根据这份配置把对应的工具环境装配好在终端或 VS Code 里正常使用。这个链条里第 3 步是 openrig 的价值所在——它把原本散落在各个工具配置文件里的信息收敛成了一份统一的描述。3. openrig 配置体系的核心逻辑拆解要真正用好 openrig得先理解它配置体系的几个核心概念。我按从抽象到具体的顺序拆。3.1 模型Model不只是模型名在 openrig 的语境里一个模型条目通常包含这几层信息字段类别作用常见取值示例模型标识告诉工具调用哪个模型deepseek-chat、qwen-max、glm-4接入地址模型服务的 endpoint官方地址或本地地址协议类型用哪种 API 协议通信OpenAI 兼容、Anthropic 原生认证信息密钥或令牌通过环境变量注入参数覆盖温度、最大 token 等按需设置这里最容易出错的是协议类型。Claude Code 原生走的是 Anthropic 的 Messages API 格式Codex 走的是 OpenAI 的 Responses API 格式而绝大多数第三方模型服务DeepSeek、Qwen、GLM、LM Studio提供的是 OpenAI 的 Chat Completions 格式。三种格式互不兼容中间必须有一层做转换。提示判断一个第三方服务能不能直接接就看它支不支持目标工具要求的协议。如果只支持 Chat Completions而工具要 Responses那就必须经过转换层否则就会出现local proxy failed while handling codex endpoint /responses这类错误。3.2 供应商Provider把同类模型归到一起供应商这一层的作用是归类。比如你把 DeepSeek 的所有模型归到一个 provider 下把本地 LM Studio 的模型归到另一个 provider 下。这样切换模型时只需要改模型名不用重复填 endpoint 和认证信息。这种设计的好处是减少重复配置。想象一下你有 5 个模型都走同一个 endpoint如果每个模型都要写一遍地址改地址时就要改 5 处。归到 provider 下地址只写一次。3.3 工具ToolClaude Code 还是 Codexopenrig 要管理的工具就是 Claude Code、Codex CLI 这类命令行代理。每个工具有自己的可执行文件路径配置文件位置和格式支持的协议启动参数。openrig 的价值在于它知道每个工具的脾气能根据你选的模型自动生成该工具能读懂的配置。比如你选了 DeepSeekopenrig 就知道要给 Claude Code 生成一份 Anthropic 格式的配置同时把 endpoint 指向转换层。3.4 一份 YAML 串起全部把上面三层用 YAML 表达出来结构大致是这样以下为基于通用实践的示意字段名以官方为准# openrig 配置示意 providers: deepseek: base_url: https://api.deepseek.com/v1 protocol: openai-chat api_key_env: DEEPSEEK_API_KEY local_lmstudio: base_url: http://localhost:1234/v1 protocol: openai-chat api_key_env: LMSTUDIO_KEY models: ds-chat: provider: deepseek model_id: deepseek-chat max_tokens: 8192 local-qwen: provider: local_lmstudio model_id: qwen2.5-coder-7b tools: claude-code: enabled: true default_model: ds-chat codex: enabled: true default_model: ds-chat这份配置的读法是定义了两个 providerDeepSeek 和本地 LM Studio定义了两个模型分别指向两个 provider然后告诉 openrig 给 Claude Code 和 Codex 都默认用ds-chat这个模型。关键点在于protocol字段。它决定了 openrig 要不要在中间起一个转换层。如果工具要求的协议和 provider 提供的协议一致直连即可不一致就得转换。3.5 为什么用 YAML 而不是 JSON 或 TOML这是个值得说清楚的选择。YAML 相比 JSON 的优势是支持注释和更少的符号噪音。配置文件里写注释非常重要——三个月后你回来看能立刻明白当初为什么这么配。JSON 不支持注释TOML 虽然支持但嵌套结构写起来啰嗦。YAML 的代价是对缩进极其敏感。一个空格错位整个文件解析失败而且报错信息经常指向错误的位置。这是新手最容易踩的坑后面会专门讲。4. 把 openrig 跑起来从零到可用的完整路径这一节讲实操。我按真实的上手顺序来每一步都说明为什么这么做。4.1 第一步Node.js 环境准备别在这栽跟头openrig 本身以及它管理的 Claude Code、Codex CLI 都依赖 Node.js。装 Node.js 有两条路路线一官网直接下载安装包。适合不想折腾版本管理的人。去 Node.js 官网选 LTS 版本下载对应系统的安装包一路下一步。装完在终端敲node -v和npm -v能输出版本号就成功。路线二用版本管理器。适合需要在多个 Node.js 版本间切换的人。Windows 上常用 nvm-windowsmacOS/Linux 上常用 nvm 或 fnm。版本管理器的好处是切换版本一条命令坏处是初次配置稍麻烦。我个人的建议是如果你只做 AI 编码工具这一件事路线一足够。版本管理器是为多项目、多版本共存准备的单场景用不上。那个node.js v24.21.0 is not yet released的报错根源就是版本号写错了。用版本管理器装的时候别手写版本号先用nvm list available之类的命令看看有哪些版本可选再挑一个 LTS。注意装完 Node.js 后如果npm命令找不到多半是环境变量没配好。Windows 上检查安装时有没有勾选Add to PATHmacOS/Linux 上检查 shell 配置文件里有没有把 Node.js 的 bin 目录加进去。4.2 第二步安装 openrig 与目标工具Node.js 就绪后openrig 和它管理的工具通常通过 npm 全局安装。命令形式大致是# 安装 openrig示意包名以官方为准 npm install -g openrig # 安装 Claude Code示意 npm install -g anthropic-ai/claude-code # 安装 Codex CLI示意 npm install -g openai/codex全局安装的意思是装到系统级目录任何位置都能调用。装完用openrig --version之类的命令验证。这里有个常见问题全局安装权限不足。macOS/Linux 上如果报EACCES错误说明当前用户没有写全局目录的权限。解决办法有两个一是用版本管理器它会把全局目录放在用户空间天然没权限问题二是手动改 npm 的全局目录配置。不建议用 sudo 装全局包容易埋下权限混乱的隐患。4.3 第三步写第一份 openrig 配置配置文件的位置通常在用户主目录下的某个隐藏目录里比如~/.openrig/config.yaml或类似路径。具体位置以官方文档为准但思路是一样的先找到配置目录再创建配置文件。写配置时我建议从最小可用配置开始别一上来就写全。最小配置只需要一个 provider、一个模型、一个工具providers: my_provider: base_url: 你的模型服务地址 protocol: openai-chat api_key_env: MY_API_KEY models: my_model: provider: my_provider model_id: 你的模型名 tools: claude-code: enabled: true default_model: my_model写完先验证配置能不能被解析。很多工具提供config validate之类的子命令或者启动时会校验配置。先让配置能跑通再往里加东西这是排查问题的基本策略。4.4 第四步密钥管理别把 key 写进配置文件上面配置里用的是api_key_env: MY_API_KEY意思是密钥从环境变量读而不是直接写在 YAML 里。这是必须遵守的安全实践。原因很直接配置文件经常会被同步、备份、分享甚至不小心提交到代码仓库。密钥一旦写死在文件里泄露风险极高。用环境变量配置文件可以随便传密钥留在本地环境里。设置环境变量的方式因系统而异# macOS / Linux写入 shell 配置 export MY_API_KEY你的密钥 # Windows PowerShell $env:MY_API_KEY你的密钥 # Windows 永久设置命令行 setx MY_API_KEY 你的密钥提示setx设置的环境变量需要重开终端才生效。很多人设完发现读不到就是因为当前终端还是旧环境。4.5 第五步验证端到端链路配置写完、密钥设好最后一步是验证整条链路通不通。验证方法很简单启动 Claude Code 或 Codex随便问一个问题看能不能正常返回。如果返回正常说明 provider 地址、协议、密钥、模型名全对。如果报错就要按链路逐段排查密钥有没有读到环境变量名对不对endpoint 通不通能不能直接 curl 通协议对不对工具要的格式和 provider 给的格式是否一致模型名对不对provider 那边认不认这个模型标识这个排查顺序是从最可能出错到最不容易出错排的。实测下来密钥和协议问题占了报错的大多数。5. 接第三方模型和本地模型时的真实坑这一节是全文最有价值的部分。接第三方模型是 openrig 这类工具的核心用途也是坑最密集的地方。5.1 协议不匹配/responses与/chat/completions之争前面提到的cc switch local proxy failed while handling codex endpoint /responses这个报错本质是协议不匹配。Codex 走的是 OpenAI 的 Responses API路径是/responses。而 DeepSeek、Qwen、GLM、LM Studio 这些服务绝大多数只实现了 Chat Completions API路径是/chat/completions。两者请求体结构、响应体结构都不一样。当你用一个只懂 Chat Completions 的代理层去接 Codex 时Codex 发来一个/responses请求代理层不认识就报错了。解决办法有两条用支持 Responses 协议的转换层。有些代理工具专门做了协议转换能把 Responses 请求翻译成 Chat Completions 再转发。换用走 Chat Completions 的工具。如果 Codex 接不通可以先用 Claude Code 接同一个模型试试因为 Claude Code 的协议要求不同。判断一个第三方服务能不能接某个工具最直接的方法是看它的文档里有没有明确说兼容 XX 协议。没写清楚的大概率不兼容。5.2 本地模型LM Studio 的 endpoint 和模型名claude code 调用lmstudio的本地模型这个搜索词说明很多人想用本地模型省钱。LM Studio 的接入有几个固定套路在 LM Studio 里启动本地服务器默认端口通常是 1234endpoint 一般是http://localhost:1234/v1模型名要填 LM Studio 里加载的那个模型的标识不是文件名。最容易错的是模型名。LM Studio 加载模型后会在服务页面显示一个模型标识那个才是要填进配置的。填错了会报模型不存在。另一个坑是本地服务没启动。LM Studio 的服务器需要手动开启不开的话 endpoint 根本不通。排查时先确认服务在跑。5.3 第三方 API 的模型名映射接 DeepSeek、Qwen、GLM 时模型名必须用服务商定义的标识。比如 DeepSeek 的对话模型标识是deepseek-chatQwen 有qwen-max、qwen-plus等GLM 有glm-4系列。这些标识不能想当然。有人以为填DeepSeek就行结果报模型不存在。正确做法是去服务商的文档里查模型列表复制准确的标识。还有一点不同服务商对同一个模型可能有多个版本标识比如带日期后缀的选哪个要看你的需求。一般选不带日期的稳定版。5.4 环境变量没生效的排查密钥读不到是最常见的报错之一。排查步骤确认环境变量名和配置里写的一致大小写敏感确认设置环境变量的终端和运行工具的终端是同一个确认设置后有没有重开终端用echo $VAR_NAMEmacOS/Linux或echo $env:VAR_NAMEPowerShell确认能读到值。如果这些都对了还读不到可能是工具启动方式的问题。比如从桌面图标启动的 GUI 程序可能读不到你在终端里设的环境变量。这种情况要把环境变量设到系统级而不是会话级。5.5 一个容易被忽略的点超时设置接第三方服务时网络延迟可能比官方服务高。默认超时时间如果太短请求还没返回就被掐断了表现为莫名其妙失败。如果遇到间歇性失败可以试着调大超时时间。这个参数一般在 provider 或模型的配置里字段名可能是timeout或类似。具体值按你的网络情况定本地模型可以设长一点远程服务适中即可。6. 和 Claude Code、Codex 配合使用的进阶思路openrig 管的是配置但真正干活的是 Claude Code 和 Codex。理解这两个工具的特性才能把 openrig 配得更顺手。6.1 Claude Code 的配置特点Claude Code 原生认 Anthropic 的协议。接第三方模型时要么第三方支持 Anthropic 协议要么中间加转换层。Claude Code 的一个特点是对上下文和工具调用比较敏感。接第三方模型时如果模型本身对工具调用function calling支持不好Claude Code 的一些高级功能可能用不了。这不是 openrig 的问题是模型能力的问题。在 VS Code 里用 Claude Code通常是通过扩展或集成终端。配置上要注意VS Code 里的终端环境变量可能和系统终端不完全一致密钥读不到时先检查这一点。6.2 Codex 的配置特点Codex 走 OpenAI 的 Responses 协议这是它和 Claude Code 最大的区别。接第三方模型时协议转换的需求更强烈。Codex 的登录和认证机制也值得注意。codex登录、codex无法加载组织设置这类搜索词说明认证环节容易出问题。如果用的是第三方模型而非官方服务认证方式可能完全不同要按 openrig 的配置走而不是 Codex 默认的登录流程。6.3 用 openrig 统一管理多工具openrig 最大的价值场景是你同时用 Claude Code 和 Codex还想让它们共用同一批模型配置。没有 openrig 时你要维护两份配置改一处要同步另一处很容易不一致。有了 openrig模型和 provider 定义一次两个工具各自引用。切换模型时改一处两边都生效。这种单一数据源的思路是配置管理的基本原则。openrig 把它落到了 AI 编码工具这个具体场景里。6.4 团队协作时的配置分发如果是团队使用openrig 的配置可以纳入版本管理密钥除外。新成员拉下配置设好自己的密钥环境变量就能跑起来不用每个人从头配一遍。这里的关键是把密钥和配置分离。配置文件进仓库密钥通过环境变量或密钥管理工具注入。这样既保证了配置的一致性又不会泄露密钥。7. 排查问题的通用方法论最后分享一套排查思路。openrig 这类工具涉及工具 → 转换层 → 模型服务多层链路出问题时定位比单层工具难。我的经验是分层隔离。7.1 先确认最底层通不通不管上层怎么配先用最原始的方式确认模型服务本身是通的。比如用 curl 直接请求 endpointcurl -X POST 你的endpoint/chat/completions \ -H Authorization: Bearer 你的密钥 \ -H Content-Type: application/json \ -d {model:你的模型名,messages:[{role:user,content:hi}]}如果这条命令能返回正常结果说明服务、密钥、模型名都没问题问题在上层的工具或转换层。如果这条命令就失败那问题在服务本身先解决它。这一步能省掉大量瞎猜的时间。很多人一上来就怀疑工具配置结果折腾半天发现是密钥过期了。7.2 再看转换层如果底层通了但工具用不了问题可能在转换层。检查转换层有没有正确启动、监听的端口对不对、日志里有没有报错。转换层的日志是排查的关键。local proxy failed这类错误日志里通常有更详细的原因比如不认识的 endpoint、请求体解析失败等。7.3 最后看工具配置工具层的问题通常是配置字段写错、路径不对、环境变量没读到。对照工具的文档逐字段核对。7.4 一个实用的排查习惯每次只改一个变量。不要同时改 endpoint、模型名、密钥然后看结果。这样即使成功了也不知道是哪个改动起的作用失败了也不知道是哪个改动导致的。改一个测一次记录结果。这个习惯在排查复杂链路问题时特别重要。7.5 常见报错速查报错关键词可能原因排查方向local proxy failed协议不匹配或转换层未启动检查 endpoint 路径和转换层日志model not supported模型名错误或服务不支持核对服务商文档的模型标识401 / 403密钥错误或权限不足检查环境变量和密钥有效性ECONNREFUSED服务未启动或地址错误确认服务在跑、端口正确EACCES权限不足检查全局安装目录权限not yet released版本号不存在改用 LTS 版本这张表覆盖了大部分常见问题。遇到报错先对号入座能快速缩小范围。8. 我个人的几点使用体会用这类配置管理工具我最大的体会是配置的复杂度不会消失只会转移。openrig 把散落在各处的配置收敛到一处看起来简单了但这一处的配置本身有学习成本。你得理解 provider、model、tool 这三层的关系才能配得对。第二点体会是协议是接第三方模型的核心障碍。模型能力、价格、速度都是次要的先解决能不能通的问题。通不了其他都是空谈。所以选第三方服务时第一件事是确认它支持什么协议。第三点密钥管理要一开始就做对。我见过太多人图省事把密钥写进配置文件后来文件被同步到各种地方只能紧急换密钥。一开始就用环境变量后面省心。最后一点别怕看日志。这类工具的报错信息有时候很含糊但日志里往往有真相。养成看日志的习惯排查效率会高很多。openrig 这个方向是有价值的因为 AI 编码工具的配置管理确实是个真实的痛点。它能不能成为标准取决于生态支持程度和文档完善度。但不管它最终走向如何统一配置、分离密钥、分层排查这几个思路是接任何 AI 编码工具都用得上的。