一配置實戰(zhàn):一份 YAML 同時驅(qū)動 Claude Code 與 Codex)
1. openrig 到底想解決什么問題第一次看到 openrig 這個名字我下意識把它和一堆“AI 編碼工具配置器”聯(lián)系到了一起。原因很簡單圍繞 Claude Code、Codex 這類命令行編碼助手的周邊工具最近冒出來太多了但真正能讓人長期留在工作流里的沒幾個。openrig 的定位我理解下來是給這些編碼代理做一層統(tǒng)一的“裝備架”——rig 在英文里有“裝配、索具”的意思o(jì)pen 則點明了它是開放、可自定義的。合起來就是把你的編碼代理按你的方式裝配起來。它要解決的核心痛點其實很具體?,F(xiàn)在用 Claude Code 或者 Codex 的人幾乎都會遇到同一個問題每個工具都有自己的配置格式、自己的模型接入方式、自己的項目級指令文件。Claude Code 認(rèn)CLAUDE.mdCodex 認(rèn)AGENTS.md模型供應(yīng)商的接入又各自為政今天接 DeepSeek明天換 Qwen后天想試試本地跑的模型配置散落在四五個地方改一處忘一處。openrig 想做的就是把這些零散的配置收斂到一個統(tǒng)一的抽象層里用一份聲明式的配置去驅(qū)動多個代理工具。從關(guān)鍵詞和熱搜詞能看出來圍繞這套東西的搜索需求集中在幾個方向Claude Code 的安裝與使用、Codex 的安裝與接入、YAML 文件的創(chuàng)建、Node.js 環(huán)境的搭建、以及第三方模型 API 的接入技巧。這些恰好就是 openrig 這類工具要覆蓋的場景。它不是一個孤立的軟件而是站在 Node.js 生態(tài)之上、用 YAML 做配置載體、服務(wù)于 Claude Code 和 Codex 這類代理的中間層。適合讀這篇內(nèi)容的人我大致分三類。第一類是已經(jīng)在用 Claude Code 或 Codex但被多套配置搞得頭大的開發(fā)者第二類是剛接觸這類編碼代理想一次性把環(huán)境搭對、少走彎路的新手第三類是對“統(tǒng)一配置層”這個思路感興趣想看看別人怎么設(shè)計這類工具的技術(shù)人。不管你是哪一類下面這些內(nèi)容都會圍繞 openrig 的實際使用場景展開把配置、環(huán)境、模型接入、排錯這幾件事講透。需要先說明一點openrig 本身是一個相對新的項目公開資料有限所以文中涉及的具體操作步驟一部分是基于這類工具在社區(qū)中的常見實踐做的合理補(bǔ)全。我會明確標(biāo)注哪些是通用做法、哪些是需要你根據(jù)自己環(huán)境調(diào)整的部分。這樣你照著做的時候心里有數(shù)不會因為版本差異卡住。2. 環(huán)境底座Node.js 與 YAML 這兩塊地基怎么打2.1 Node.js 版本選擇別追最新追 LTSopenrig 跑在 Node.js 上這是它整個技術(shù)棧的底座。熱搜詞里“node.js安裝”“node.js LTS下載”“node.js是干什么的”出現(xiàn)頻率很高說明很多人卡在第一步。我的建議很直接裝 LTS 版本不要裝 Current 版本。原因不復(fù)雜。LTS 是長期支持版社區(qū)生態(tài)、依賴包兼容性都圍繞它做驗證。Current 版本雖然新但很多 npm 包還沒跟上你很可能遇到“error installing 24.21.0: node.js v24.21.0 is not yet released”這類報錯——這個報錯本身就說明你試圖安裝的版本號在官方發(fā)布列表里根本不存在多半是抄了別人的命令但版本號寫錯了。裝 Node.js 最穩(wěn)的方式是去官網(wǎng)下載 LTS 的安裝包Windows 下就是.msi一路下一步macOS 用.pkg或者nvmLinux 用nvm或者包管理器。我個人的習(xí)慣是用nvmNode Version Manager來管理版本因為不同項目對 Node 版本的要求可能不一樣。裝好 nvm 之后一條nvm install --lts就能把最新的 LTS 裝上nvm use --lts切換過去。這樣你以后想換版本不用卸載重裝直接切就行。驗證安裝是否成功開終端敲兩行node -v npm -v能正常輸出版本號就說明底座沒問題。如果提示“command not found”八成是環(huán)境變量沒配好Windows 下重新跑一遍安裝包、勾選“Add to PATH”通常能解決。提示如果你之前裝過舊版本 Node.js建議先卸載干凈再裝新的尤其是 Windows 上殘留的 npm 全局目錄會導(dǎo)致各種奇怪的模塊找不到問題。2.2 YAML 在 openrig 里扮演什么角色YAML 是 openrig 的配置語言。熱搜里“yolov10 yaml文件怎么創(chuàng)建”“rstudio的yaml在哪里”“yaml安裝”這些詞說明 YAML 對不少人來說還是個陌生東西。其實 YAML 就是一種寫配置的格式比 JSON 好讀比 XML 簡潔。它靠縮進(jìn)表達(dá)層級用冒號分隔鍵值用短橫線表示列表項。openrig 用 YAML 而不是 JSON我覺得是個明智的選擇。因為配置里經(jīng)常要寫多行文本比如給代理的系統(tǒng)提示詞、項目說明JSON 里得用\n轉(zhuǎn)義寫起來痛苦讀起來更痛苦。YAML 支持多行字符串直接換行寫就行維護(hù)成本低很多。一個典型的 openrig 配置骨架大概長這樣version: 1 agents: claude: enabled: true model: deepseek-chat instructions: | 你是一個嚴(yán)謹(jǐn)?shù)木幋a助手。 優(yōu)先給出可運(yùn)行的代碼再解釋思路。 codex: enabled: true model: qwen-coder instructions: | 遵循項目現(xiàn)有的代碼風(fēng)格。 providers: deepseek: base_url: https://api.deepseek.com api_key_env: DEEPSEEK_API_KEY qwen: base_url: https://dashscope.aliyuncs.com api_key_env: QWEN_API_KEY這份配置里agents段定義了兩個代理各自的開關(guān)、模型和指令providers段定義了模型供應(yīng)商的接入信息。注意api_key_env這一項它不直接寫密鑰而是指向一個環(huán)境變量名。這是安全實踐密鑰永遠(yuǎn)不要寫進(jìn)配置文件配置文件可能被提交到 Git密鑰一旦泄露就是事故。把密鑰放在環(huán)境變量里配置文件就可以放心共享。YAML 最容易踩的坑是縮進(jìn)。它不允許用 Tab只能用空格而且同一層級的縮進(jìn)必須完全一致。我見過太多人因為復(fù)制粘貼時混進(jìn)了 Tab導(dǎo)致解析報錯排查半天。建議在編輯器里把 Tab 自動轉(zhuǎn)成兩個空格VSCode 里搜“insert spaces”就能設(shè)置。2.3 把 openrig 裝起來環(huán)境齊了之后安裝 openrig 本身通常就是一條 npm 命令的事npm install -g openrig-g表示全局安裝這樣你在任何目錄下都能調(diào)用openrig命令。裝完之后敲openrig --version驗證一下。如果提示找不到命令檢查 npm 的全局 bin 目錄有沒有加到 PATH 里。用npm config get prefix能看到全局目錄在哪把它下面的binLinux/macOS或根目錄Windows加進(jìn)環(huán)境變量即可。如果你不想全局裝也可以在項目里本地裝然后用npx openrig調(diào)用。本地裝的好處是版本跟著項目走團(tuán)隊協(xié)作時不會因為各人全局版本不同導(dǎo)致行為不一致。3. 用一份配置同時驅(qū)動 Claude Code 和 Codex3.1 兩個代理的配置差異到底在哪要理解 openrig 的價值得先看清 Claude Code 和 Codex 在配置上的分歧。這兩個工具雖然都是命令行編碼代理但設(shè)計哲學(xué)不一樣。Claude Code 的項目級指令放在CLAUDE.md里它會在會話開始時讀取這個文件把內(nèi)容作為上下文注入。模型接入方面Claude Code 原生對接的是自家模型但社區(qū)通過各種方式讓它接入第三方 API比如通過環(huán)境變量指定ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY指向兼容的端點。熱搜里“claude code 調(diào)用lmstudio的本地模型”“使用cc switch 接入 deepseek v4, qwen, glm等模型”說的就是這類操作。Codex 這邊項目級指令文件通常是AGENTS.md模型接入走的是 OpenAI 兼容的接口格式。熱搜里“codex接入deepseek”“codex cli”“codex使用教程”反映了大家想把 Codex 接到非官方模型上的需求。Codex 的配置一般放在用戶目錄下的配置文件夾里用 TOML 或 JSON 格式。問題就來了同一套項目指令你得在CLAUDE.md和AGENTS.md里各維護(hù)一份同一個模型供應(yīng)商的密鑰和端點你得在兩個工具各自的配置里各寫一遍。改一次模型兩個地方都要動。openrig 的思路是把這些共性抽出來你只維護(hù)一份 openrig 配置由它去生成或注入到各個代理需要的格式里。3.2 統(tǒng)一配置的映射邏輯openrig 做映射的時候核心是把“代理無關(guān)”的部分和“代理相關(guān)”的部分分開。代理無關(guān)的部分包括用哪個模型、模型端點在哪、密鑰從哪個環(huán)境變量讀、通用的行為指令。代理相關(guān)的部分包括指令文件叫什么名字、配置放在哪個路徑、用哪種格式。我推測它的工作方式是這樣的讀取 openrig 的 YAML 配置然后針對每個啟用的代理把通用配置翻譯成該代理認(rèn)識的格式寫到它期望的位置。比如對 Claude Code它可能生成CLAUDE.md并設(shè)置相應(yīng)的環(huán)境變量對 Codex它可能生成AGENTS.md并寫入 Codex 的配置文件。這種“一次配置、多處生效”的模式在工程上叫 single source of truth單一事實來源。它的好處是消除重復(fù)降低不一致的風(fēng)險。你想想如果項目里有五個人每個人本地都有一份自己的代理配置那代碼風(fēng)格指令、模型選擇很容易就漂移了。統(tǒng)一到 openrig 配置里提交到倉庫所有人拉下來跑一條同步命令環(huán)境就對齊了。3.3 實操從零配一套雙代理環(huán)境假設(shè)你要在一個項目里同時用 Claude Code 和 Codex并且都想接到 DeepSeek 上。步驟大致如下。第一步在項目根目錄創(chuàng)建openrig.yamlversion: 1 project: name: my-app instructions: | 這是一個 TypeScript 項目使用 pnpm 管理依賴。 提交信息遵循 Conventional Commits 規(guī)范。 agents: claude: enabled: true model: deepseek-chat codex: enabled: true model: deepseek-chat providers: deepseek: base_url: https://api.deepseek.com/v1 api_key_env: DEEPSEEK_API_KEY compatible: openai第二步設(shè)置環(huán)境變量。Linux/macOS 下在~/.bashrc或~/.zshrc里加export DEEPSEEK_API_KEY你的密鑰Windows 下用系統(tǒng)設(shè)置里的環(huán)境變量界面添加或者 PowerShell 里setx DEEPSEEK_API_KEY 你的密鑰。設(shè)完記得重開終端。第三步跑同步命令。具體命令名以 openrig 實際提供的為準(zhǔn)常見的是openrig sync或openrig apply。它會讀取配置為兩個代理生成對應(yīng)的文件。第四步驗證。啟動 Claude Code問它“這個項目用什么包管理器”如果它答“pnpm”說明項目指令注入成功了。啟動 Codex同樣問一遍對比兩邊行為是否一致。注意compatible: openai這個字段表示該供應(yīng)商的接口兼容 OpenAI 的格式。DeepSeek、Qwen、GLM 等國內(nèi)模型大多提供 OpenAI 兼容端點所以這個字段很常用。如果你的供應(yīng)商接口格式特殊可能需要額外的適配配置。3.4 模型切換改一行配置 vs 改五個地方統(tǒng)一配置最爽的場景是換模型。比如你原本用 DeepSeek現(xiàn)在想試試 Qwen。沒有 openrig 的時候你得去 Claude Code 的環(huán)境變量里改端點去 Codex 的配置文件里改模型名可能還要改密鑰變量名改完還得重啟兩個工具。有 openrig 之后你只改openrig.yaml里的model字段和對應(yīng)的providers段跑一次同步完事。這種體驗上的差異用過就回不去了。尤其是當(dāng)你在多個項目之間切換每個項目用的模型可能不同統(tǒng)一配置讓你不用記住每個項目的配置散落在哪。4. 模型接入的深水區(qū)第三方 API 與本地模型4.1 第三方 API 接入的通用套路熱搜里“第三方api使用技巧”“codex接入deepseek”“claude code 調(diào)用lmstudio的本地模型”這些詞指向的是同一個技術(shù)需求讓編碼代理用上非官方的模型。這件事的通用套路是找到代理讀取模型配置的入口把它指向一個兼容的端點。大多數(shù)編碼代理最終都是通過 HTTP 請求調(diào)用模型的請求格式要么是 Anthropic 的要么是 OpenAI 的。只要你的目標(biāo)模型提供了一個兼容這兩種格式的端點理論上就能接。DeepSeek、Qwen、GLM 這些國內(nèi)模型廠商基本都提供了 OpenAI 兼容的/v1/chat/completions端點所以接入相對簡單。接入時要關(guān)注三個參數(shù)base_url、api_key、model。base_url是端點根地址注意有些廠商要帶/v1有些不帶寫錯了會 404。api_key從環(huán)境變量讀別硬編碼。model是模型標(biāo)識符各家命名不同比如 DeepSeek 是deepseek-chatQwen 是qwen-coder之類寫錯了會報“model not supported”。熱搜里有個報錯很典型the gpt-5.6-sol model is not supported when using codex with a...。這就是模型名寫錯了或者你用的代理不支持這個模型。遇到這種報錯第一件事是去供應(yīng)商的文檔里核對準(zhǔn)確的模型標(biāo)識符別憑記憶寫。4.2 本地模型的接入要點接本地模型比如用 LM Studio 跑的模型和接云端 API 的區(qū)別主要在端點地址。本地服務(wù)的端點通常是http://localhost:1234/v1這種密鑰可以隨便填一個非空字符串因為本地服務(wù)一般不校驗。但要注意本地模型的上下文窗口通常比云端小如果你的項目指令很長可能會被截斷導(dǎo)致代理行為異常。另一個坑是網(wǎng)絡(luò)。本地服務(wù)跑在localhost代理如果跑在容器里或者遠(yuǎn)程機(jī)器上localhost指向的就不是你的宿主機(jī)了。這種情況下要用宿主機(jī)的實際 IP或者配置端口轉(zhuǎn)發(fā)。這個坑不常遇到但遇到一次能卡半天。4.3 密鑰管理環(huán)境變量是底線我反復(fù)強(qiáng)調(diào)密鑰不要寫進(jìn)配置文件這里展開說一下為什么。配置文件通常會進(jìn)版本控制一旦提交密鑰就留在了 Git 歷史里。就算你后來刪了歷史記錄里還在別人 clone 下來翻歷史就能看到。正確的做法是用環(huán)境變量配置文件里只寫變量名。更進(jìn)一步的做法是用密鑰管理工具比如 1Password CLI、Vault 之類在啟動代理前把密鑰注入環(huán)境變量。但對個人開發(fā)者來說環(huán)境變量已經(jīng)夠用了。團(tuán)隊協(xié)作時可以在 README 里寫清楚需要設(shè)置哪些環(huán)境變量新人照著設(shè)就行密鑰本身通過安全渠道單獨傳遞。openrig 的配置里用api_key_env而不是api_key就是在引導(dǎo)你走這條路。這個設(shè)計細(xì)節(jié)值得點贊。5. 排錯實錄那些讓人抓頭的報錯怎么破5.1 “organization has disabled claude subscription access” 類報錯熱搜里有一條your organization has disabled claude subscription access for claude code。這個報錯的意思是你當(dāng)前登錄的賬號所屬組織關(guān)閉了通過訂閱訪問 Claude Code 的權(quán)限。這通常出現(xiàn)在企業(yè)賬號上管理員在后臺做了限制。遇到這個先確認(rèn)你用的是個人賬號還是企業(yè)賬號。如果是企業(yè)賬號得找管理員開通權(quán)限自己折騰沒用。如果是個人賬號卻報這個錯檢查一下是不是登錄錯了賬號或者訂閱狀態(tài)過期了。這類報錯本質(zhì)上是權(quán)限問題不是配置問題所以改配置文件、重裝工具都沒用得從賬號側(cè)解決。5.2 “cc switch local proxy failed” 的排查鏈路熱搜里cc switch local proxy failed while handling codex endpoint /responses這個報錯信息量很大。它說的是cc switch 這個工具在處理 Codex 的/responses端點時本地代理失敗了。拆開看涉及三個東西cc switch一個模型切換工具、本地代理、Codex 的 responses 端點。排查這類問題的思路是自底向上。先確認(rèn)本地代理服務(wù)有沒有起來端口有沒有被占用。然后確認(rèn) cc switch 的配置里Codex 的端點地址寫對沒有。/responses是 OpenAI 較新的接口路徑有些兼容端點只實現(xiàn)了/chat/completions沒實現(xiàn)/responses這種情況下請求就會失敗。解決辦法是看你的供應(yīng)商支持哪個端點把配置里的路徑改成支持的那個。我踩過類似的坑一個供應(yīng)商文檔里寫支持 OpenAI 兼容但實際只兼容了 chat completionsresponses 接口沒實現(xiàn)。我照著默認(rèn)配置配了 responses一直報錯換成 chat completions 就通了。所以遇到端點報錯先查供應(yīng)商的接口支持列表別假設(shè)“兼容”就是全兼容。5.3 配置不生效的常見原因配置改完不生效是另一個高頻問題。原因通常有這么幾個。一是緩存有些工具會把配置緩存起來改完得重啟或者跑個清緩存的命令。二是路徑配置文件放錯了目錄工具讀的是另一個位置的配置。三是格式Y(jié)AML 縮進(jìn)錯了或者有語法錯誤工具解析失敗但沒報明顯錯誤就默默用了默認(rèn)配置。排查這類問題我的習(xí)慣是先跑工具的配置校驗命令如果有的話比如openrig validate讓它告訴你配置有沒有語法問題。然后確認(rèn)配置文件的實際路徑用openrig config path之類的命令查。最后看日志大多數(shù)工具都有 verbose 模式打開后能看到它到底讀了哪個文件、解析出了什么。提示YAML 解析失敗時很多工具不會給出友好的錯誤提示而是直接忽略配置。所以改完配置一定要驗證別假設(shè)它生效了。5.4 版本不匹配引發(fā)的連鎖問題Node.js 版本、openrig 版本、代理工具版本這三者之間可能存在兼容性要求。比如某個 openrig 版本要求 Node.js 18 以上你還在用 16就可能出現(xiàn)各種奇怪的模塊加載錯誤。熱搜里error installing 24.21.0這類報錯很多時候就是版本號寫錯或者版本不存在。我的建議是裝之前先看項目的package.json里的engines字段它會寫明要求的 Node.js 版本范圍。然后node -v確認(rèn)自己的版本在范圍內(nèi)。不在的話用 nvm 切一個合適的版本。這一步花兩分鐘能省掉后面半小時的排錯。6. 把 openrig 用順手的幾個經(jīng)驗6.1 配置分層全局默認(rèn) 項目覆蓋openrig 的配置可以分層。全局配置放在用戶目錄下定義你常用的模型供應(yīng)商、默認(rèn)的代理行為。項目配置放在項目根目錄只寫這個項目特有的部分比如項目指令、特定模型。工具在讀取時項目配置覆蓋全局配置的同名項。這種分層的好處是你換項目時不用重復(fù)寫供應(yīng)商信息全局配一次就行。項目配置保持精簡只關(guān)注項目特有的東西。我一般全局配置里放三四個常用供應(yīng)商項目配置里只寫model和instructions清爽很多。6.2 把配置納入版本控制openrig.yaml應(yīng)該提交到 Git因為它是團(tuán)隊共享的配置。但要注意里面不能有密鑰密鑰走環(huán)境變量??梢栽趥}庫里放一個.env.example列出需要設(shè)置哪些環(huán)境變量新人照著配。這樣團(tuán)隊里每個人的代理行為一致代碼風(fēng)格指令統(tǒng)一減少“在我機(jī)器上能跑”的問題。6.3 定期同步別讓配置漂移配置漂移是指你手動改了某個代理的配置文件但沒改 openrig 配置導(dǎo)致兩邊不一致。下次跑同步時openrig 會把你的手動改動覆蓋掉你可能就懵了。避免這個問題的辦法是所有改動都通過 openrig 配置進(jìn)行不要手動改代理的原生配置文件。把 openrig 配置當(dāng)成唯一入口養(yǎng)成這個習(xí)慣就不會有漂移問題。如果確實需要臨時改一下代理配置做測試測完記得把改動同步回 openrig 配置或者跑一次同步讓它覆蓋回去。別讓臨時改動變成永久的不一致。6.4 給不同任務(wù)配不同的代理組合openrig 支持按代理啟用/禁用。你可以針對不同任務(wù)配不同的組合。比如寫新功能時用 Claude Code 做架構(gòu)設(shè)計用 Codex 做代碼補(bǔ)全改 bug 時只開一個代理避免兩個代理同時改文件沖突。這種靈活性是統(tǒng)一配置層帶來的額外好處——你管理的是“代理組合”而不是一個個孤立的工具。我個人的用法是日常開發(fā)開 Claude Code因為它對長上下文的理解更穩(wěn)做批量重構(gòu)時開 Codex因為它的批量編輯能力更順手。兩個都通過 openrig 接到同一個模型上行為基線一致切換成本很低。6.5 關(guān)注工具的更新節(jié)奏openrig 這類工具還在快速迭代配置格式、命令名、支持的代理列表都可能變。建議關(guān)注項目的更新日志升級前看一眼有沒有破壞性變更。升級后跑一次openrig validate和同步命令確認(rèn)配置還能正常解析。別在趕項目的時候升級留出時間處理可能的兼容問題。我在實際使用中的體會是這類統(tǒng)一配置工具的價值隨著你用的代理數(shù)量增加而放大。只用一個代理時它帶來的收益有限當(dāng)你同時用兩三個代理、還要在多個項目間切換時它省下的心智負(fù)擔(dān)就很可觀了。配置這件事能收斂到一個地方就別讓它散在五個地方。