☰
openrig:统一管理Claude Code与Codex的AI编程环境编排实践
2026/10/1 1:10:36 网站建设 项目流程

1. 从零认识 openrig:它到底解决什么问题

第一次看到 openrig 这个名字,很多人会以为是某个硬件项目,毕竟 “rig” 这个词在英文里常指设备支架、机架。但在当前 AI 编程工具爆发的语境下,openrig 实际上是一个围绕Claude Code、Codex 等命令行 AI 编程助手构建的开源配置管理与环境编排工具。它的核心价值用一句话概括:让你在不同 AI 编程助手之间自由切换,统一管理配置、会话和项目上下文,不再被单一工具绑定。

我最初接触这类需求,是因为团队里同时有人在用 Claude Code,有人在用 Codex CLI,还有人在折腾本地模型接入。每个人的配置文件散落在~/.claude、~/.codex、项目根目录的 YAML 文件里,换一台机器就要重新配一遍,团队协作时更是各配各的,出了问题都不知道从哪查起。openrig 要解决的就是这个痛点——把 AI 编程助手的配置、会话管理、项目级参数统一收拢到一套可版本控制的体系里。

它适合哪些人?如果你是刚接触 Claude Code 或 Codex 的新手,openrig 能帮你跳过大量手动配置的坑;如果你是多工具混用的老手,它能让你在 tmux 会话里一键切换不同助手;如果你是团队负责人,它能让所有人的 AI 编程环境保持一致,减少“我这里能跑你那里报错”的扯皮。关键词里的 Claude Code、Codex、YAML、tmux 四个词,恰好对应了 openrig 的四个核心维度:助手接入、配置格式、会话管理、终端复用。

需要说明的是,openrig 目前并不是一个官方标准,而是社区里逐渐形成的一套实践方案集合。不同人手里的 openrig 可能形态不同——有人用 shell 脚本实现,有人用 Python 写 CLI,有人直接用 YAML 加 tmux 配置文件拼出来。但核心思路是一致的:用声明式配置替代手工操作,用会话隔离替代全局污染,用统一入口替代多工具切换。下面我会从设计思路、核心细节、实操过程、问题排查四个层面,把这套东西拆开讲透。

2. 整体设计思路:为什么是 YAML + tmux + 多助手适配

2.1 为什么选 YAML 作为配置载体

配置格式的选择看似小事,实际上决定了整个工具链的扩展性和可维护性。我试过用 JSON、TOML、INI 甚至纯 shell 变量来管理 AI 助手配置,最后回到 YAML,原因有几个。

第一,YAML 对嵌套结构的表达最自然。一个 Claude Code 的配置可能包含模型参数、API 端点、项目级覆盖、权限白名单等多个层级,用 JSON 写要大量花括号,用 INI 根本表达不了嵌套。YAML 的缩进式结构让层级关系一目了然,改起来不容易出错。

第二,YAML 支持注释。这一点在团队协作里太重要了。你可以在配置旁边直接写“这行是给 DeepSeek 接入用的,别删”,而 JSON 不支持注释,TOML 虽然支持但生态不如 YAML 广。

第三,YAML 和主流工具链兼容性好。Claude Code 本身支持 YAML 格式的项目配置,Codex 的配置文件也可以用 YAML 描述,tmux 虽然用自己的格式,但可以通过脚本生成。用 YAML 做中间层,相当于找到了一个“通用语”。

一个典型的 openrig 配置目录结构大概是这样:

# ~/.openrig/config.yaml version: "1.0" default_assistant: claude-code assistants: claude-code: command: claude config_dir: ~/.claude env: ANTHROPIC_API_KEY: ${CLAUDE_KEY} ANTHROPIC_BASE_URL: https://api.anthropic.com project_config: .claude/settings.yaml codex: command: codex config_dir: ~/.codex env: OPENAI_API_KEY: ${CODEX_KEY} project_config: .codex/config.yaml sessions: default_layout: dev layouts: dev: panes: - assistant: claude-code - shell: true review: panes: - assistant: codex - shell: true

这个结构里,assistants定义了每个 AI 助手的启动命令、配置目录和环境变量,sessions定义了 tmux 会话布局。改一个助手配置,所有引用它的会话自动生效,这就是声明式配置的威力。

2.2 tmux 在 openrig 里扮演什么角色

很多人第一次听说 tmux 和 AI 编程助手结合,会觉得莫名其妙——tmux 不是终端复用工具吗,跟 Claude Code 有什么关系?实际用下来你会发现,tmux 是管理多个 AI 助手会话的最佳载体,原因有三。

首先,AI 编程助手通常是长时间运行的交互式进程。你在 Claude Code 里让它重构一个模块,可能要等几分钟甚至更久。如果直接在普通终端里跑,切出去干别的就容易丢上下文。tmux 的会话保持能力让你可以随时 detach,回来 attach 继续,进程不中断。

其次,tmux 的窗格分割让多助手并行成为可能。左边跑 Claude Code 做代码审查,右边跑 Codex 生成测试用例,下面开个 shell 跑构建,三个窗格互不干扰。openrig 的会话布局配置就是干这个的——你定义好布局,一条命令拉起整个工作环境。

第三,tmux 的会话命名和脚本化能力让自动化成为可能。你可以用tmux new-session -d -s claude-work在后台创建会话,然后用tmux send-keys发送命令,实现“一键启动项目 + 自动进入 Claude Code + 自动加载项目上下文”的流水线。openrig 的很多实现就是基于这套机制。

我自己的习惯是给每个项目建一个 tmux 会话,命名规则是项目名-助手名,比如myapp-claude、myapp-codex。这样切换项目时直接tmux attach -t myapp-claude,所有上下文都在。openrig 的会话管理模块就是把这个习惯标准化、自动化。

2.3 多助手适配层的设计考量

openrig 最核心也最麻烦的部分,是如何用一套配置适配 Claude Code、Codex 以及其他可能的 AI 编程助手。这些工具虽然功能相似,但配置方式、环境变量、项目文件位置都不一样。

Claude Code 的配置主要在~/.claude/目录下,项目级配置放在.claude/settings.yaml,环境变量用ANTHROPIC_API_KEY和ANTHROPIC_BASE_URL。Codex 的配置在~/.codex/,项目级配置是.codex/config.yaml,环境变量用OPENAI_API_KEY。如果你还要接入本地模型,比如通过 LM Studio 跑本地推理,那又是另一套端点配置。

openrig 的适配层设计思路是抽象出公共字段,用映射表处理差异。公共字段包括:启动命令、配置目录、项目配置文件路径、必需的环境变量、可选的模型参数。差异部分通过每个助手自己的配置块处理。这样新增一个助手支持时,只需要在assistants下加一个条目,不用改核心逻辑。

注意:环境变量里的密钥不要直接写在 YAML 里,用${VAR}语法引用系统环境变量,或者用.env文件加载。我见过有人把 API Key 直接提交到 Git 仓库,后果不用多说。

2.4 为什么不做成“大一统”工具

有人可能会问:为什么不直接做一个工具,把 Claude Code 和 Codex 的功能都集成进去?我的看法是,AI 编程助手这个领域变化太快,大一统工具跟不上节奏。今天 Claude Code 加了个新功能,明天 Codex 改了配置格式,你如果自己实现一套,维护成本极高。

openrig 的定位是编排层,不是替代层。它不关心 Claude Code 内部怎么工作,只关心怎么把它启动起来、怎么给它传配置、怎么管理它的会话。这样即使某个助手大版本更新,openrig 只需要调整适配配置,核心逻辑不动。这种“薄编排”的思路,在快速变化的领域里比“厚集成”更可持续。

3. 核心细节解析:配置、会话与项目上下文

3.1 Claude Code 接入的关键配置项

Claude Code 是当前最流行的命令行 AI 编程助手之一,openrig 对它的支持也最成熟。接入 Claude Code 时,有几个配置项必须搞清楚。

API 端点配置。默认情况下 Claude Code 连的是官方端点,但如果你要用 DeepSeek 或者其他兼容接口的模型,就需要改ANTHROPIC_BASE_URL。我实测下来,DeepSeek 的接口和 Claude Code 的协议兼容度不错,但要注意模型名称映射——Claude Code 内部会按 Claude 的模型名发请求,你需要在代理层做名称转换,或者在配置里指定模型别名。

项目级配置覆盖。Claude Code 支持在项目根目录放.claude/settings.yaml,用来覆盖全局配置。openrig 的做法是把这个文件纳入版本控制,团队成员拉下来就有一致的项目配置。常见的项目级配置包括:允许访问的目录白名单、默认模型、是否启用自动格式化等。

权限与安全设置。Claude Code 有文件读写和命令执行能力,配置里要明确哪些操作需要确认、哪些可以自动执行。我的建议是默认全部需要确认,只在信任的项目里放开自动执行。openrig 的配置模板里可以预设几档权限级别,按项目切换。

# .claude/settings.yaml 示例 model: claude-sonnet-4-20250514 permissions: file_read: allow file_write: confirm command_execute: confirm network_access: deny context: include: - src/**/*.ts - docs/**/*.md exclude: - node_modules/** - dist/**

这个配置的意思是:读文件自动允许,写文件和执行命令需要确认,禁止网络访问,上下文只包含 src 和 docs 下的特定文件。这样既保证了效率,又控制了风险。

3.2 Codex 接入的差异点与处理

Codex 的配置逻辑和 Claude Code 有相似之处,但差异点不少,openrig 需要分别处理。

认证方式不同。Codex 用OPENAI_API_KEY环境变量,但如果你用的是第三方兼容接口,可能还需要设置OPENAI_BASE_URL。我遇到过codex auth token is unavailable的报错,排查下来是环境变量没加载对——openrig 启动 Codex 时,要确保.env文件先被 source 过。

项目配置文件位置不同。Codex 的项目级配置在.codex/config.yaml,格式和 Claude Code 的 settings.yaml 不一样。openrig 的适配层要能识别当前启动的是哪个助手,然后加载对应的项目配置文件。

会话恢复机制不同。Claude Code 和 Codex 的会话恢复命令不一样,openrig 在会话管理里要分别处理。我的做法是在配置里加一个resume_command字段,每个助手自己定义怎么恢复上次会话。

assistants: codex: command: codex config_dir: ~/.codex project_config: .codex/config.yaml env: OPENAI_API_KEY: ${CODEX_KEY} OPENAI_BASE_URL: ${CODEX_BASE_URL:-https://api.openai.com/v1} resume_command: "codex --continue" new_session_command: "codex"

这样 openrig 在创建新会话或恢复旧会话时,就知道该发什么命令。

3.3 YAML 配置的版本管理与团队协作

openrig 的配置如果只放在本地,价值有限。真正发挥威力是在团队协作场景——把配置纳入 Git 版本控制,让所有人的 AI 编程环境保持一致。

我的做法是建一个openrig-config仓库,里面放全局配置模板和项目级配置示例。每个项目仓库里放自己的.openrig.yaml,引用全局配置并覆盖项目特定部分。新成员入职时,克隆配置仓库,运行openrig init,所有助手配置自动就位。

版本管理要注意几个点。密钥绝对不能进仓库,用.env.example做模板,实际.env加入.gitignore。配置变更要有记录,每次改配置写清楚为什么改,方便回溯。不同助手的配置分文件管理,不要全塞一个 YAML 里,否则冲突解决起来很痛苦。

# 推荐的目录结构 openrig-config/ ├── global/ │ ├── assistants.yaml │ ├── sessions.yaml │ └── .env.example ├── projects/ │ ├── myapp.yaml │ └── another-project.yaml └── README.md

这种结构下,global/放通用配置,projects/放项目特定覆盖,README 写清楚怎么用。团队里谁改了配置,Git diff 一目了然。

3.4 tmux 会话布局的配置细节

tmux 会话布局是 openrig 里最“个性化”的部分,因为每个人的工作流不一样。但有几个通用模式值得参考。

单助手模式:一个窗口,一个窗格,跑一个 AI 助手。适合专注做一件事的场景。配置简单,资源占用少。

双助手对照模式:左右分屏,左边 Claude Code,右边 Codex。适合对比两个助手的输出,或者一个写代码一个审查。配置时要注意两个助手的配置目录不能冲突,环境变量要分别设置。

助手加 shell 模式:上面跑 AI 助手,下面开 shell。适合需要频繁手动执行命令的场景,比如跑测试、查日志。tmux 的send-keys可以把 shell 里的输出发给助手,实现半自动工作流。

sessions: layouts: dual: windows: - name: main panes: - assistant: claude-code size: 50% - assistant: codex size: 50% dev: windows: - name: assistant panes: - assistant: claude-code - name: shell panes: - shell: true

这个配置定义了两个布局:dual是左右分屏双助手,dev是助手窗口加 shell 窗口。openrig 根据布局定义生成 tmux 命令,一键拉起。

实操心得:tmux 窗格大小用百分比比用行数好,因为不同终端窗口尺寸不一样,百分比能自适应。另外给每个窗格设个名字,切换时不容易搞混。

4. 实操过程:从安装到跑通完整流程

4.1 环境准备与依赖安装

openrig 本身是一套配置方案,但要用起来,需要先装好基础依赖。我按 Ubuntu 和 macOS 分别说,Windows 用户建议用 WSL2。

基础依赖清单:

依赖用途安装方式
tmux会话管理apt install tmux/brew install tmux
Python 3.10+运行 openrig 脚本系统自带或 pyenv
Git配置版本管理系统自带
Claude CodeAI 助手npm install -g @anthropic-ai/claude-code
Codex CLIAI 助手npm install -g @openai/codex

Claude Code 安装后需要登录或配置 API Key。如果你在国内,可能遇到网络问题,这时候可以配置兼容端点。Codex 安装后同样需要配置认证。两个工具的安装包和安装教程网上很多,这里不展开,重点说 openrig 怎么把它们串起来。

openrig 脚本安装。目前没有统一的包管理器安装方式,我的做法是把 openrig 脚本放在~/bin/openrig,加执行权限,然后在.bashrc或.zshrc里加 PATH。

mkdir -p ~/bin curl -o ~/bin/openrig https://raw.githubusercontent.com/your-repo/openrig/main/openrig.py chmod +x ~/bin/openrig echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc source ~/.bashrc

注意:上面的 URL 是示例,实际使用时替换成你信任的源。如果不想从网络拉取,可以手动创建脚本文件,内容参考后文的实现逻辑。

4.2 初始化 openrig 配置目录

装好依赖后,第一步是初始化配置目录。openrig 的配置默认放在~/.openrig/,你可以用openrig init命令生成模板,也可以手动创建。

openrig init # 输出: # Created ~/.openrig/config.yaml # Created ~/.openrig/sessions.yaml # Created ~/.openrig/.env.example # Please copy .env.example to .env and fill in your keys.

生成的config.yaml是主配置,sessions.yaml是会话布局配置,.env.example是环境变量模板。你需要把.env.example复制成.env,填入实际的 API Key。

cp ~/.openrig/.env.example ~/.openrig/.env # 编辑 .env,填入: # CLAUDE_KEY=your_claude_key_here # CODEX_KEY=your_codex_key_here # CODEX_BASE_URL=https://api.openai.com/v1

.env文件权限要设成 600,避免其他用户读到。

chmod 600 ~/.openrig/.env

这一步很多人会忽略,但密钥文件的权限管理是安全底线。我见过因为.env权限太开放导致密钥泄露的案例,排查起来很麻烦。

4.3 配置 Claude Code 与 Codex 助手

初始化完成后,编辑~/.openrig/config.yaml,配置两个助手。下面是我实际在用的配置,你可以直接参考。

version: "1.0" default_assistant: claude-code assistants: claude-code: command: claude config_dir: ~/.claude project_config: .claude/settings.yaml env: ANTHROPIC_API_KEY: ${CLAUDE_KEY} ANTHROPIC_BASE_URL: ${CLAUDE_BASE_URL:-https://api.anthropic.com} resume_command: "claude --continue" new_session_command: "claude" codex: command: codex config_dir: ~/.codex project_config: .codex/config.yaml env: OPENAI_API_KEY: ${CODEX_KEY} OPENAI_BASE_URL: ${CODEX_BASE_URL:-https://api.openai.com/v1} resume_command: "codex --continue" new_session_command: "codex" env_file: ~/.openrig/.env

关键点说明:env_file指定环境变量文件,openrig 启动助手前会先加载它。${VAR:-default}语法表示如果环境变量没设置就用默认值。resume_command和new_session_command分别定义恢复会话和新建会话的命令。

配置好后,用openrig check验证配置是否合法。

openrig check # 输出: # Config loaded: ~/.openrig/config.yaml # Assistants: claude-code, codex # Env file: ~/.openrig/.env (exists, permissions 600) # All checks passed.

如果报错,根据提示逐项排查。常见错误包括:YAML 缩进不对、环境变量文件不存在、助手命令不在 PATH 里。

4.4 创建并管理 tmux 会话

配置验证通过后,就可以创建会话了。openrig 的会话管理命令设计得很直观。

# 创建默认会话 openrig session new myapp # 创建指定布局的会话 openrig session new myapp --layout dual # 列出所有会话 openrig session list # 连接到会话 openrig session attach myapp # 结束会话 openrig session kill myapp

openrig session new myapp会在后台创建一个名为myapp的 tmux 会话,按默认布局启动助手。--layout dual指定用双助手布局。创建后自动 attach,你直接就在助手界面里了。

我实际用的时候,会在项目根目录放一个.openrig.yaml,定义这个项目的默认布局和助手。

# 项目根目录的 .openrig.yaml session_name: myapp layout: dev assistant: claude-code project_config: .claude/settings.yaml

然后在项目目录下直接运行openrig up,它会读取.openrig.yaml,创建或连接到对应会话。这样每个项目一条命令就能拉起完整环境。

4.5 项目上下文自动加载

openrig 的一个实用功能是项目上下文自动加载。当你进入一个项目会话时,openrig 会自动把项目相关的配置、文件列表、Git 状态等信息准备好,让 AI 助手一启动就有上下文。

实现方式是在会话创建后,用tmux send-keys发送初始化命令。比如对于 Claude Code,可以发送一段提示词,让它先读取项目结构。

# openrig 内部逻辑示意 tmux send-keys -t myapp:main.0 "请先阅读项目根目录的 README.md 和 src 目录结构,然后等待我的指令。" Enter

这段提示词会在 Claude Code 启动后自动输入,助手就会先做一轮项目扫描。实测下来,这样能显著减少后续对话中“请先了解我的项目”这类重复说明。

实操心得:自动加载的提示词不要太长,否则会占用大量上下文窗口。我的做法是只让助手读 README 和目录结构,具体文件在需要时再让它读。另外,如果项目很大,可以在.claude/settings.yaml里配置context.exclude,把 node_modules、dist 这些目录排除掉。

4.6 多助手切换与并行工作流

openrig 支持在同一会话里切换助手,也支持多助手并行。切换用openrig switch命令。

# 在当前会话切换到 Codex openrig switch codex # 在当前会话切换到 Claude Code openrig switch claude-code

切换的逻辑是:结束当前助手进程,启动新助手进程,保持 tmux 会话不变。这样你的终端布局、shell 历史都还在,只是 AI 助手换了。

并行工作流更适合复杂任务。比如我在做一个全栈项目时,会开三个窗格:左边 Claude Code 写后端,右边 Codex 写前端,下面 shell 跑开发服务器。三个窗格通过 tmux 管理,互不干扰。

# 三窗格布局配置 sessions: layouts: fullstack: windows: - name: work panes: - assistant: claude-code size: 40% - assistant: codex size: 40% - shell: true size: 20%

这种布局下,openrig session new myapp --layout fullstack一条命令拉起整个开发环境。我实测下来,这种并行方式比在单个助手里面来回切换效率高不少,尤其是前后端同时改的时候。

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

5.1 助手启动失败类问题

问题一:command not found。openrig 报这个错,说明助手命令不在 PATH 里。排查步骤:先确认which claude或which codex有输出,如果没有,说明没装好或 PATH 没配。Claude Code 和 Codex 都是 npm 全局包,检查npm bin -g的路径是否在 PATH 里。

问题二:auth token is unavailable。这是 Codex 常见的认证错误。原因通常是环境变量没加载。openrig 启动助手前会 source.env文件,但如果.env路径配错了,或者文件权限不对读不了,就会出这个错。检查~/.openrig/.env是否存在、权限是否 600、变量名是否和配置里引用的一致。

问题三:cc switch local proxy failed while handling codex endpoint /responses。这个报错通常出现在用本地代理转发请求的场景。排查思路:先确认代理服务是否在运行,再确认端点路径是否正确。Codex 的/responses端点和 Claude Code 的端点路径不一样,代理配置要分别处理。我的做法是给每个助手配独立的代理规则,不要混在一起。

问题四:your organization has disabled claude subscription access。这是账号权限问题,不是 openrig 的问题。需要检查账号的订阅状态和组织设置。如果是团队账号,联系管理员确认权限。

5.2 配置加载类问题

YAML 解析错误。YAML 对缩进极其敏感,一个空格不对就报错。排查技巧:用python -c "import yaml; yaml.safe_load(open('config.yaml'))"单独验证 YAML 文件。常见错误包括:用了 Tab 而不是空格、冒号后面没空格、列表项缩进不一致。

环境变量未生效。openrig 加载.env的时机是在启动助手之前,如果你在.env里改了变量但没重启会话,新变量不会生效。解决方法是openrig session kill后重新openrig session new。另外注意.env里的变量不要加引号,除非值里有空格。

项目配置覆盖不生效。Claude Code 和 Codex 的项目配置加载顺序是:全局配置 → 项目配置 → 环境变量。如果项目配置没生效,检查文件路径是否正确、文件名是否匹配。Claude Code 认的是.claude/settings.yaml,Codex 认的是.codex/config.yaml,名字错了就不会加载。

5.3 会话管理类问题

tmux 会话创建失败。常见原因是会话名已存在。openrig 默认行为是如果会话已存在就 attach,但如果你用了--force参数,它会先 kill 再创建。检查tmux ls看有没有同名会话。

窗格布局不对。tmux 的窗格分割依赖终端尺寸,如果终端太小,分割可能失败。建议终端至少 80 列 24 行。另外,size参数用百分比时,所有窗格的百分比加起来要等于 100,否则 tmux 会按比例调整。

会话恢复后助手状态丢失。tmux 会话恢复的是终端状态,不是助手进程状态。如果助手进程已经退出,恢复会话后需要重新启动助手。openrig 的resume_command就是干这个的,但前提是助手本身支持会话恢复。Claude Code 和 Codex 都支持--continue参数,但恢复的是对话上下文,不是进程状态。

5.4 性能与资源类问题

多个助手同时跑导致内存不足。Claude Code 和 Codex 都是 Node.js 应用,每个进程占几百 MB 内存。如果你同时跑多个会话,内存消耗很快。我的建议是:不用的会话及时 kill,或者用tmux detach而不是保持 attach。另外可以在配置里限制每个助手的并发数。

响应速度慢。如果助手响应慢,先排查网络。用curl测试 API 端点的延迟。如果网络没问题,检查是不是上下文太长——Claude Code 的上下文窗口有限,塞太多文件会拖慢响应。用.claude/settings.yaml的context.exclude排除不必要文件。

tmux 会话卡死。偶尔会遇到 tmux 会话无响应,通常是助手进程占满了 CPU。解决方法是tmux kill-session -t 会话名强制结束,然后重新创建。如果经常卡死,检查是不是某个助手版本有 bug,升级到最新版试试。

5.5 常见问题速查表

问题现象可能原因排查方法解决方案
command not foundPATH 未配置which claude添加 npm 全局路径到 PATH
auth token unavailable环境变量未加载检查 .env 文件确认路径和权限,重启会话
YAML 解析错误缩进或语法问题用 Python 验证统一用空格,检查冒号后空格
项目配置不生效文件路径或名称错误确认文件名改为 .claude/settings.yaml
会话创建失败同名会话已存在tmux lskill 旧会话或换名字
窗格布局错乱终端尺寸太小检查终端大小放大终端或调整百分比
响应速度慢上下文过长或网络差curl 测延迟排除多余文件,检查网络
内存不足多助手并行top看内存减少并行会话数

避坑技巧:每次改完配置,先跑openrig check验证,再创建会话。这样能把配置错误和运行时错误分开,排查起来快很多。另外,把常用的排查命令做成 alias,比如alias ocheck='openrig check'、alias olist='openrig session list',能省不少时间。

6. 进阶玩法:本地模型接入与自动化扩展

6.1 接入本地模型的配置方法

openrig 的一个进阶用法是接入本地模型,比如通过 LM Studio 跑本地推理。这样可以在没有网络或不想用云端 API 的场景下使用 AI 编程助手。

配置思路是:在assistants里新增一个条目,指向本地端点。

assistants: claude-local: command: claude config_dir: ~/.claude-local env: ANTHROPIC_API_KEY: dummy-key ANTHROPIC_BASE_URL: http://localhost:1234/v1 project_config: .claude/settings.yaml

关键点是ANTHROPIC_BASE_URL指向本地 LM Studio 的端点,ANTHROPIC_API_KEY随便填一个非空值。LM Studio 默认端口是 1234,启动后在设置里开启兼容 API 模式。

实测下来,本地模型在代码补全和简单重构上够用,但复杂任务还是云端模型强。我的用法是:日常小改用本地模型,复杂重构切云端。openrig 的会话切换让这个流程很顺——openrig switch claude-local就切过去了。

6.2 用脚本自动化重复操作

openrig 的配置是声明式的,但很多操作还是需要脚本自动化。我写了一个openrig-auto脚本,放在~/bin/下,实现几个常用流程。

#!/bin/bash # openrig-auto: 自动化常用操作 case "$1" in "start") # 启动项目会话并自动加载上下文 openrig session new "$2" --layout dev tmux send-keys -t "$2:main.0" "请阅读 README.md 和 src 目录结构" Enter ;; "review") # 启动代码审查会话 openrig session new "$2-review" --layout dual tmux send-keys -t "$2-review:main.0" "请审查最近的 Git 提交" Enter tmux send-keys -t "$2-review:main.1" "请生成最近提交的测试用例" Enter ;; "clean") # 清理所有 openrig 会话 tmux ls | grep -o '^[^:]*' | xargs -I{} tmux kill-session -t {} ;; *) echo "Usage: openrig-auto {start|review|clean} [project]" ;; esac

这个脚本把常用流程封装成命令,openrig-auto start myapp一条命令完成创建会话、启动助手、加载上下文。openrig-auto review myapp启动双助手做代码审查。openrig-auto clean清理所有会话。

实操心得:自动化脚本不要写太复杂,保持每个命令只做一件事。我见过有人写了几百行的 openrig 自动化脚本,最后自己都维护不动。简单可组合比复杂全能更实用。

6.3 团队协作中的配置分发

团队里推广 openrig,最大的阻力不是技术,是习惯。我的经验是先做模板,再逐步推广。

第一步,建一个openrig-config仓库,放全局配置模板和几个常用项目配置。README 写清楚安装步骤和常用命令。

第二步,找一两个愿意尝试的同事先用起来,收集反馈,调整配置模板。

第三步,在团队周会上演示一次完整流程,从克隆配置仓库到跑通第一个会话,控制在 10 分钟内。

第四步,把 openrig 配置纳入新项目初始化清单,新项目创建时自动带上.openrig.yaml。

配置分发用 Git submodule 或者直接复制都行。我倾向直接复制,因为 submodule 对不熟悉 Git 的人有学习成本。复制的话,在配置仓库里写个sync.sh脚本,一键同步到本地。

#!/bin/bash # sync.sh: 同步团队配置到本地 cp -r openrig-config/global/* ~/.openrig/ echo "Config synced. Run 'openrig check' to verify."

6.4 后续扩展方向

openrig 这套方案还有不少扩展空间。我目前想到的几个方向:

支持更多助手。除了 Claude Code 和 Codex,还有不少其他命令行 AI 编程助手。适配层的设计让新增助手只需要加配置,不用改核心逻辑。

配置加密。目前密钥放在.env文件里,虽然权限 600,但明文存储还是有风险。可以考虑用系统密钥链或者加密存储。

会话状态持久化。目前 tmux 会话恢复的是终端状态,助手对话上下文依赖助手自身的恢复机制。如果能统一持久化对话状态,跨助手切换会更顺。

Web 界面。命令行对部分人还是有门槛,做个简单的 Web 界面管理会话和配置,能降低使用门槛。

这些方向我还在探索,有进展再分享。目前这套 openrig 方案已经能覆盖大部分日常场景,稳定性和效率都经过实际验证。

7. 我个人的使用体会

用 openrig 管理 AI 编程环境大半年,最大的感受是配置即代码的思路在 AI 工具领域同样适用。以前每换一个助手就要重新配一遍,现在改一个 YAML 文件,所有会话自动生效。团队新成员入职,克隆配置仓库,十分钟就能跑通完整环境,省了大量沟通成本。

踩过的坑也不少。最开始没做配置验证,YAML 缩进错了导致会话创建失败,排查了半天。后来加了openrig check,每次改完先验证,问题少了很多。还有一次把 API Key 提交到了 Git 仓库,虽然及时发现删了,但教训深刻——密钥管理必须从第一天就规范。

如果让我给刚接触 openrig 的人一个建议,那就是从单助手单会话开始,跑通了再扩展。不要一上来就配双助手、三窗格、本地模型接入,那样出问题都不知道从哪查。先用 Claude Code 或 Codex 跑通一个最简单的会话,理解配置加载和会话管理的逻辑,再逐步加功能。这样每一步都有反馈,学起来快,也不容易放弃。

最后分享一个小技巧:把常用的 openrig 命令做成 shell alias,能省不少打字时间。我的.bashrc里有这么几行:

alias osn='openrig session new' alias osl='openrig session list' alias osa='openrig session attach' alias osk='openrig session kill' alias osw='openrig switch' alias ock='openrig check'

osn myapp创建会话,osl列出会话,osa myapp连接会话,osw codex切换助手。用熟了之后,整个流程非常顺滑。

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

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

立即咨询