尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
openrig:终端AI编码工具的多模型会话编排与调度实践
1. 从零认识 openrig它到底解决什么问题第一次看到 openrig 这个名字很多人会以为是某个硬件项目毕竟 rig 这个词在矿机、工作站、测试台架这些场景里出现得太频繁了。但如果你最近在折腾 Claude Code、Codex 这类终端 AI 编程助手大概率已经在某个 issue 或者讨论帖里见过它。openrig 本质上是一个面向终端 AI 编码工具的会话编排与多模型调度层它把 Claude Code、Codex CLI 这些原本各自为战的命令行工具统一到一个可切换、可复用、可脚本化的运行框架里。我用下来的直观感受是它解决的不是能不能用的问题而是用起来太碎的问题。你想想一个典型的工作流可能是这样的——白天用 Claude Code 写业务逻辑晚上想切到 Codex 跑一些重构任务中间还想让本地 LM Studio 的模型处理一些敏感代码。如果没有 openrig你得手动改环境变量、切配置文件、重启终端会话甚至要维护好几套 API key 和 endpoint 配置。openrig 把这些脏活累活收拢到一层让你用一条命令就能完成模型切换和会话接管。它适合谁三类人最值得关注。第一类是重度终端用户日常在 tmux 里开一堆 paneClaude Code 和 Codex 混着用第二类是本地模型玩家手上有 LM Studio 或者 Ollama想让本地模型和云端模型在同一个工作流里协作第三类是多项目并行的开发者不同项目要用不同的模型和不同的 API 供应商靠手动切换迟早会出错。如果你只是偶尔用一下 Claude Code 写个小脚本那 openrig 对你来说可能有点重但如果你已经把 AI 编码工具当成主力生产力那它值得花半小时研究。需要先说明的是openrig 本身不是一个模型也不是一个 API 代理服务它更像是一个调度壳。它不改变 Claude Code 或 Codex 的核心行为而是在它们之上做了一层配置管理和会话编排。理解这一点很关键因为很多人一开始会误以为它能破解什么限制实际上它做的是工程层面的整合不是协议层面的绕过。2. 核心机制拆解openrig 是怎么把 Claude Code 和 Codex 串起来的2.1 会话接管与进程编排的底层逻辑openrig 最核心的能力是会话接管。Claude Code 和 Codex CLI 本质上都是长时间运行的交互式进程它们会维护自己的上下文、历史记录和工具调用状态。openrig 的做法不是去修改这些进程的内部状态而是通过进程包装的方式在启动时注入配置在运行时转发输入输出在切换时保存和恢复会话快照。具体来说当你执行openrig run claude的时候openrig 会做几件事读取当前项目的.openrig配置文件解析出目标模型、API endpoint、认证方式然后设置一组环境变量这些变量是 Claude Code 官方支持的配置入口接着启动 Claude Code 进程并把标准输入输出接到自己的转发层上。这个转发层的作用是让你可以在不退出 Claude Code 的情况下通过一个快捷键或者命令切换到另一个模型。这里有个细节值得展开。Claude Code 本身支持通过环境变量指定 API base URL 和模型名称比如ANTHROPIC_BASE_URL和ANTHROPIC_MODEL。openrig 就是利用了这个机制在启动前把配置写进环境变量。但问题是Claude Code 启动后再改环境变量是不生效的所以 openrig 的切换逻辑实际上是保存当前会话状态杀掉进程用新配置重启再恢复上下文。这个过程听起来有点暴力但实测下来切换延迟在 1 到 2 秒之间对于非高频切换的场景完全够用。Codex 那边的情况类似但配置入口不太一样。Codex CLI 用的是~/.codex/config.toml或者项目级的配置文件openrig 会在切换时动态生成一个临时配置文件通过--config参数传给 Codex 进程。这样做的好处是不污染你的全局配置坏处是每次切换都要写一次临时文件如果你的磁盘 IO 比较慢可能会有轻微卡顿。2.2 多模型调度的配置模型openrig 的配置文件结构设计得比较克制没有搞一堆嵌套层级。一个典型的配置大概长这样[profiles.claude-official] tool claude model claude-sonnet-4-20250514 base_url https://api.anthropic.com api_key_env ANTHROPIC_API_KEY [profiles.codex-deepseek] tool codex model deepseek-chat base_url https://api.deepseek.com/v1 api_key_env DEEPSEEK_API_KEY [profiles.local-lmstudio] tool claude model qwen2.5-coder-32b base_url http://localhost:1234/v1 api_key_env LMSTUDIO_KEY这个设计的巧妙之处在于它把工具和模型解耦了。你可以用 Claude Code 这个前端去调用任何兼容 Anthropic API 格式的后端也可以用 Codex 去调用任何兼容 OpenAI API 格式的后端。api_key_env这个字段特别实用它不直接存 key而是存环境变量的名字这样你的配置文件可以安全地提交到 gitkey 放在.env或者 shell 的 profile 里。我踩过的一个坑是LM Studio 的 API 虽然兼容 OpenAI 格式但它对某些字段的处理和官方 API 有差异。比如它不支持stream_options里的include_usage字段如果你在 openrig 配置里开了 usage 统计请求会直接报错。解决办法是在 profile 里加一个compat_mode lmstudio的标记openrig 会在转发请求时自动剥离不兼容的字段。这个细节官方文档里没写是我抓包对比了请求体才发现的。2.3 与 tmux 的协同工作方式热词里出现了 tmux这不是偶然的。openrig 的重度用户几乎都在 tmux 里工作因为 openrig 的会话切换机制和 tmux 的 pane 管理天然契合。一个典型的用法是左边 pane 跑 openrig 管理的 Claude Code右边 pane 跑测试或者日志监控当你需要切换模型时openrig 在当前 pane 内完成重启tmux 的布局不受影响。更进一步openrig 支持通过 tmux 的send-keys接口做跨 pane 通信。比如你可以配置一个快捷键把当前 Claude Code 会话的上下文摘要发送到另一个 pane 里运行的 Codex 进程让两个模型协作处理同一个任务。这个功能听起来很极客但在实际的重构场景里非常有用——Claude 负责理解业务逻辑并生成修改方案Codex 负责执行具体的代码替换和测试验证。不过这里要提醒一句tmux 的send-keys是模拟键盘输入如果目标 pane 里的进程正在等待用户确认你发送的文本可能会被当成确认指令。我建议在跨 pane 通信前先用tmux capture-pane抓一下目标 pane 的内容确认它处于空闲状态再发送。这个检查逻辑可以写成一个 shell 函数绑定到快捷键上。3. 环境搭建实操从 Node.js 安装到 openrig 跑通3.1 Node.js 版本选择与安装避坑openrig 本身是用 Node.js 写的所以第一步是把 Node.js 装好。这里有个热词里频繁出现的问题error installing 24.21.0: node.js v24.21.0 is not yet released or is not available。这个报错通常出现在你用 nvm 或者 fnm 安装了一个还不存在的版本号。Node.js 的版本号是偶数开头为 LTS奇数开头为 Current24.x 目前还在 Current 阶段LTS 最新稳定版是 22.x。如果你不是非要尝鲜新特性直接用 22 LTS 最稳妥。在 Ubuntu 上安装 Node.js 20 的推荐方式是用 NodeSource 的仓库而不是apt install nodejs因为 Ubuntu 自带的版本往往太老。具体步骤curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt-get install -y nodejs node -v npm -v如果你用 Windows直接去 Node.js 官网下载 LTS 版本的安装包就行安装时记得勾选Add to PATH。macOS 用户用 Homebrew 最省事brew install node22。装完之后建议把 npm 的源换成国内镜像不然装 openrig 的依赖时会很慢npm config set registry https://registry.npmmirror.com注意不要用sudo npm install -g装全局包这会把包装到系统目录后续升级和卸载都很麻烦。正确做法是配置 npm 的全局目录到用户目录下或者用npx直接运行。3.2 openrig 的安装与初始化配置Node.js 就绪后openrig 的安装本身很简单npm install -g openrig openrig initopenrig init会在当前目录生成一个.openrig配置文件模板同时在你的用户目录下创建~/.openrig/存放全局配置和会话快照。初始化过程中它会检测你系统里已经安装了哪些工具比如 Claude Code、Codex CLI如果检测到了会自动生成对应的 profile 模板。这里有个实操心得如果你同时装了 Claude Code 和 Codexopenrig init可能会把两者的配置混在一起。我建议先手动确认一下~/.openrig/profiles/目录下的文件确保每个工具的 profile 是独立的。另外openrig 默认会把会话快照存在~/.openrig/sessions/下这个目录会随着使用不断增大建议定期清理或者配置一个保留天数。Claude Code 的安装本身也需要提一下因为很多人卡在这一步。官方推荐的方式是npm install -g anthropic-ai/claude-code claude --version如果你在 Ubuntu 上遇到权限问题检查一下 npm 的 prefix 配置。Codex 的安装类似但 Codex 有桌面版和 CLI 版两个形态openrig 目前主要对接的是 CLI 版。桌面版的 Codex 有自己的进程管理机制openrig 接管起来比较麻烦不建议混用。3.3 接入本地 LM Studio 模型的完整流程让 Claude Code 调用 LM Studio 的本地模型是 openrig 最实用的场景之一。完整流程分三步第一步在 LM Studio 里加载模型并启动本地服务。打开 LM Studio在 Local Server 标签页里选择一个模型比如qwen2.5-coder-32b-instruct设置端口为 1234然后点击 Start Server。确认服务启动后用 curl 测试一下curl http://localhost:1234/v1/models如果返回了模型列表说明服务正常。第二步在 openrig 里配置 profile。关键点是base_url要指向 LM Studio 的 OpenAI 兼容端点model要填 LM Studio 里显示的模型标识符api_key_env可以随便填一个环境变量名LM Studio 不校验 key但 Claude Code 要求必须有这个字段。第三步启动并验证openrig run claude --profile local-lmstudio启动后随便问一个问题如果模型正常回复说明链路通了。如果报错大概率是模型标识符填错了或者 LM Studio 的上下文长度设置太小。LM Studio 默认的上下文长度可能只有 4096对于代码任务来说远远不够建议在加载模型时手动调到 32768 或更高具体取决于你的显存。提示本地模型的响应速度取决于你的硬件。32B 的模型在消费级显卡上跑token 生成速度可能只有每秒几个体验和云端 API 差距明显。如果只是做代码补全和简单问答7B 或 14B 的模型性价比更高。4. 多模型切换与协作的实战配置4.1 用 cc switch 思路管理多供应商接入热词里提到了 cc switch local proxy failed while handling codex endpoint /responses这个报错反映了一个常见需求在 Claude Code 和 Codex 之间切换时如何管理不同的 API 供应商。openrig 的做法是引入一个供应商抽象层你可以把它理解成一个轻量级的本地路由。具体配置方式是在.openrig里定义多个 provider每个 provider 有自己的 base_url 和认证方式然后在 profile 里引用 provider[providers.deepseek] base_url https://api.deepseek.com/v1 api_key_env DEEPSEEK_API_KEY format openai [providers.glm] base_url https://open.bigmodel.cn/api/paas/v4 api_key_env GLM_API_KEY format openai [profiles.codex-deepseek] tool codex provider deepseek model deepseek-chat [profiles.claude-glm] tool claude provider glm model glm-4-plus这样配置的好处是当你需要换供应商时只改 provider 部分profile 不用动。而且 openrig 会在启动时做一次连通性检查如果 provider 不可达会提前报错而不是等到你发了请求才失败。那个 local proxy failed 的报错通常是因为 Codex 在请求/responses端点时openrig 的转发层没有正确识别请求格式。Codex 用的是 OpenAI 的 Responses API 格式而很多第三方供应商只支持 Chat Completions 格式。openrig 在中间做了一层格式转换但如果供应商的 API 版本和 Codex 期望的不一致就会报这个错。解决办法是在 provider 配置里显式指定api_style chat_completions强制 openrig 做格式转换。4.2 会话快照与上下文迁移openrig 的会话快照功能是我用得最多的。它的原理是在切换模型前把当前会话的完整上下文包括对话历史、工具调用记录、文件修改状态序列化成一个 JSON 文件存在~/.openrig/sessions/下。切换回来后再从快照恢复。这个功能在跨模型协作时特别有用。比如你让 Claude 分析了一个复杂的代码库生成了修改方案现在想切到 Codex 去执行。你可以先让 Claude 把方案输出成一个结构化的任务列表然后 openrig 在切换时会把这份任务列表作为初始上下文注入到 Codex 会话里。Codex 启动后就能直接看到任务不需要你重新描述一遍。但这里有个限制不同模型的上下文格式不完全兼容。Claude 的 tool use 格式和 OpenAI 的 function calling 格式有差异openrig 在迁移时会做一次转换但转换不是无损的。复杂的工具调用链在迁移后可能会丢失部分细节。我的建议是跨模型迁移时尽量用自然语言描述任务而不是依赖工具调用的结构化数据。4.3 在 VS Code 里集成 openrig 工作流虽然 openrig 是终端工具但它可以和 VS Code 配合得很好。热词里 vscode配置claude code 和 claude code for vs code 的搜索量很高说明很多人希望在编辑器里直接用。openrig 本身不提供 VS Code 插件但你可以通过 VS Code 的集成终端来使用它。具体做法是在 VS Code 的settings.json里配置一个自定义终端 profile{ terminal.integrated.profiles.linux: { openrig: { path: bash, args: [-c, openrig run claude --profile ${input:profile}] } }, terminal.integrated.defaultProfile.linux: openrig }这样每次打开集成终端都会自动启动 openrig 管理的 Claude Code 会话。你还可以配置快捷键在多个 profile 之间快速切换。不过要注意VS Code 的集成终端在切换 profile 时会重启 shellopenrig 的会话快照能帮你恢复上下文但正在执行的命令会被中断。如果你想要更紧密的集成可以考虑用 VS Code 的 Task 功能把 openrig 的命令包装成 task然后绑定到快捷键上。这样你可以在不离开编辑器的情况下把当前打开的文件路径作为参数传给 openrig让它针对特定文件启动会话。5. 常见故障排查与稳定性优化5.1 安装与启动阶段的典型报错在 openrig 的使用过程中安装和启动阶段的报错占了大多数。我整理了一个速查表覆盖了最常见的几种情况报错信息根本原因解决方式node.js v24.21.0 is not yet releasednvm 请求了不存在的版本改用nvm install 22安装 LTS 版本cc switch local proxy failed供应商 API 格式不匹配在 provider 配置里加api_style chat_completionscodex is ignoring 1 unrecognized configuration settingCodex 配置文件里有它不认识的字段检查~/.codex/config.toml移除 openrig 不支持的字段your organization has disabled claude subscription access账号权限问题确认使用的是 API key 而非订阅账号登录the gpt-5.6-sol model is not supported模型名称拼写错误或供应商不支持用openrig list-models --provider xxx查看可用模型这个表里的每一条我都在实际环境中遇到过。其中 codex is ignoring 1 unrecognized configuration setting 这个警告最容易被忽略它不会导致启动失败但会让你的某些配置不生效。Codex 的配置解析比较严格任何它不认识的字段都会触发这个警告。openrig 在生成临时配置时会尽量只写入 Codex 支持的字段但如果你手动改过全局配置就可能引入不兼容的字段。5.2 模型切换时的上下文丢失问题上下文丢失是 openrig 用户反馈最多的问题。表现是切换模型后新模型完全不记得之前的对话。这个问题通常有三个原因。第一个原因是快照保存失败。openrig 在保存快照时如果当前会话的上下文超过了配置的最大长度会截断保存。默认的最大长度是 100K token如果你的对话很长可能只保存了后半部分。解决办法是在.openrig里调大max_snapshot_tokens但要注意新模型的上下文窗口是否能容纳这么大的输入。第二个原因是模型不兼容。有些第三方模型对 system prompt 的处理方式和 Claude 不同openrig 注入的上下文可能被模型忽略。这种情况比较难排查建议先用一个简单的测试对话验证模型是否能正确读取 system prompt。第三个原因是会话 ID 冲突。openrig 用会话 ID 来索引快照如果你同时开了多个 openrig 会话可能会发生 ID 冲突。解决办法是在启动时显式指定--session-id确保每个会话有唯一的标识。5.3 性能调优与资源占用控制openrig 本身是一个 Node.js 进程内存占用不算大通常在 100MB 到 200MB 之间。但如果你同时运行多个 openrig 会话再加上 Claude Code 和 Codex 各自的进程内存占用会快速上升。我在一台 16GB 内存的机器上同时跑三个会话内存就吃紧了。优化建议有几个方向。第一用openrig run --daemon模式启动让 openrig 在后台常驻多个会话共享同一个进程减少重复加载的开销。第二定期清理~/.openrig/sessions/目录快照文件会随着使用不断累积我见过有人的 sessions 目录占了十几个 GB。第三如果你的机器性能有限不要在本地跑大模型把本地模型换成小参数版本或者直接用云端 API。还有一个容易被忽略的点是 tmux 的 scrollback buffer。openrig 的会话切换会在终端里输出大量日志如果 tmux 的 scrollback 设置得很大这些日志会占用不少内存。建议把history-limit设成 5000 左右够用就行。6. 我个人的使用体会与几个实用技巧用 openrig 大概有几个月了最大的感受是它把多模型协作这件事从概念变成了日常操作。以前切换模型要改配置、重启终端、重新描述任务现在一条命令就搞定。但我也要诚实地说openrig 不是银弹它的会话快照机制在复杂场景下还是会有信息损失跨模型迁移时不要指望百分之百的上下文保真。分享几个我摸索出来的小技巧。第一个是给常用的 profile 设置别名比如openrig alias c1 claude-official这样启动时只需要敲openrig run c1省去记长名字的麻烦。第二个是在.openrig里配置on_switch钩子切换模型时自动执行一段脚本比如把当前 git diff 保存下来方便新模型快速了解代码变更。第三个是善用openrig doctor命令它会检查你的环境配置、API 连通性和依赖版本很多问题跑一下这个命令就能定位。最后说一个我踩过的坑openrig 的配置文件支持环境变量插值比如base_url ${CUSTOM_API_URL}。这个功能很方便但如果环境变量没设置openrig 不会报错而是把空字符串当成 base_url导致请求发到一个无效地址。我建议在配置里给关键字段加上默认值或者用openrig validate命令做一次配置校验避免运行时才发现问题。
RELATED

相关推荐

openrig:Claude Code与Codex的AI编码工作台搭建指南

openrig:Claude Code与Codex的AI编码工作台搭建指南

1. 从"openrig"这个名字说起:它到底想解决什么问题第一次看到"openrig"这个词,我脑子里蹦出来的不是某个具体软件,而是一种"开放式工作台"的意象。rig 在英文里除了"装备、装置",在工程语…

📅 2026/10/15 13:11:29
PicPick:设计师与程序员必备的高效截图工具

PicPick:设计师与程序员必备的高效截图工具

1. 工具定位与核心价值解析PicPick这款软件在设计师和程序员群体中已经悄悄流行了至少五年时间。我第一次接触它是在2018年为一个紧急的UI设计评审做准备时,同事推荐的。当时市面上已经有Snagit、FastStone等老牌截图工具,但PicPick真正打动我的是它把&q…

📅 2026/10/15 13:11:29
半导体掺杂技术与PN结特性解析

半导体掺杂技术与PN结特性解析

1. 半导体基础概念解析半导体材料在现代电子技术中扮演着核心角色,其独特的导电特性源于材料内部载流子的行为方式。要真正理解N型和P型半导体的本质,我们需要从最基础的半导体物理开始讲起。纯净半导体(本征半导体)的导电能力介于…

📅 2026/10/15 13:06:28
MORE NEWS

更多资讯

📰

STM32L431待机模式双路唤醒实战:WKUP引脚与RTC闹钟配置指南

简介:这份资源面向使用STM32L431进行低功耗开发的嵌入式工程师与学习者,聚焦待机模式下通过Wakeup引脚和RTC闹钟双路唤醒的完整实现方案,适合已具备一定HAL库与CubeMX基础、希望掌握电池供电场景节能策略的开发者参考。压缩包共188个文件&…

📰

Canoe诊断无响应,提示诊断超时,但是CAN报文正常接收发送

打开CANoe, 在Home页面把Simulated Bus改成Real Bus

📰

除自身以外数组的乘积:前缀积与后缀积的两趟扫描解法

1. 题目拆解与解题突破口1.1 一道看似简单却容易掉进坑里的数组题LeetCode 238 在算法练习平台上出现频率非常高,题目本身一句话就能说清:给你一个整数数组 nums,返回一个新数组 answer,其中 answer[i] 等于原数组中除 nums[i] 以…

📰

老版本摄像头驱动在Win10下的安装与DirectShow采集避坑指南

简介:大恒DH-HV13、HV20、HV31系列老版本摄像头驱动包,面向仍在使用这些工业相机或老式USB摄像头的工程师、开发者与系统维护人员。该驱动是操作系统与硬件之间的桥梁,解决旧版系统下设备无法被正确识别、图像采集异常或功能受限等问题&#…

📰

自建电气元件选型工具:从参数库到评分筛选的完整指南

简介:一款面向电气工程师、设备维护人员及自动化领域从业者的电气元件选型工具软件,用于解决配电系统中电缆线径与载流量计算繁琐、易错的问题。压缩包共4个文件,包含可执行主程序、元件参数数据库以及使用说明与自述文档,整体仅3…

📰

Kubernetes 1.18.8 部署实战:兼容老系统与边缘场景的稳态集群搭建

简介:本资源为 Kubernetes 1.18.8 版本的离线部署套件,面向容器化运维工程师、K8s 初中级学习者及私有云环境搭建人员,解决无公网场景下快速拉起高可用 K8s 集群的核心需求。压缩包共21个文件,涵盖4个Shell脚本(init.s…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬