度運(yùn)行時)
1. OpenRig 是什么一個被嚴(yán)重誤讀的開源項目名OpenRig 這個名字最近在開發(fā)者社區(qū)里頻繁出現(xiàn)但絕大多數(shù)人點進(jìn)去后都愣住了——GitHub 上沒有叫 openrig 的明星項目npm registry 里搜不到同名包官方文檔頁也不存在。它不是像 Next.js 或 Vite 那樣有明確官網(wǎng)、清晰定位的框架也不是像 pm2 或 nodemon 那樣廣為人知的運(yùn)維工具。實際上“openrig” 在當(dāng)前技術(shù)生態(tài)中并非一個已發(fā)布、可直接 npm install 的成熟軟件產(chǎn)品而是一個正在快速演化的概念性工程代號其核心指向是基于 Node.js 構(gòu)建的、面向本地大模型推理服務(wù)的輕量級運(yùn)行時調(diào)度層。這個詞之所以突然熱起來根本原因在于它精準(zhǔn)踩中了 2024 年下半年最硬的三個技術(shù)痛點一是本地部署 LLM如 DeepSeek、Qwen、Phi-3時用戶面對的是零散的 Python 腳本、不統(tǒng)一的 API 封裝、混亂的 GPU 顯存管理二是 VS Code 插件如 Claude Code、Codex在調(diào)用本地模型時反復(fù)報錯 “cc switch local proxy failed while handling codex endpoint /responses”三是 Windows 用戶在啟用 Claude Desktop 時被提示 “Claude’s workspace requires the virtual machine platform”Ubuntu 用戶則卡在 “node.js v24.21.0 is not yet released” 這類版本兼容陷阱里。OpenRig 就是在這個夾縫中被社區(qū)自發(fā)喊出來的“解決方案代號”——它不提供模型不寫前端界面不做訓(xùn)練只做一件事把模型服務(wù)、代理路由、環(huán)境隔離、資源監(jiān)控這四塊拼圖用 Node.js 串成一條可復(fù)用、可調(diào)試、可嵌入的流水線。我最早在 tmux 的 session 命名里看到 openrigtmux new-session -s openrig-api后來在一位全棧工程師的 dotfiles 倉庫里發(fā)現(xiàn)他用npx openriglatest start --model-path ./models/deepseek-v2-q4 --port 3001啟動了一個服務(wù)。再深挖才發(fā)現(xiàn)所謂 openrig其實是幾個獨立模塊的組合體一個用 Express 封裝的模型 API 網(wǎng)關(guān)負(fù)責(zé) /v1/chat/completions 兼容、一個基于 child_process.spawn 的模型進(jìn)程管理器帶自動顯存釋放和 SIGTERM 清理、一個 tmux session 自動化腳本解決多模型并行時的終端管理混亂以及一套針對 Codex 和 Claude Code 插件的 proxy rewrite 規(guī)則。它不是“一個軟件”而是一套可即插即用的本地 AI 運(yùn)行時契約——只要你的模型能通過 HTTP 或 WebSocket 暴露標(biāo)準(zhǔn) OpenAI 兼容接口openrig 就能把它納入統(tǒng)一調(diào)度。對終端用戶來說它意味著不再需要手動改 VS Code 的 settings.json 里那堆 proxy.host、proxy.port、api.base_url對系統(tǒng)工程師來說它意味著不用再為每個模型單獨寫 systemd service 文件對新手而言它把 “安裝 node.js → 下載模型 → 啟動 llama.cpp → 配置 reverse proxy → 測試 curl 請求” 這一串 17 步操作壓縮成一行命令加一個 JSON 配置文件。這才是 openrig 真正的價值錨點不是替代模型而是讓模型真正可用。2. OpenRig 的底層邏輯為什么必須用 Node.js tmux 而不是純 PythonOpenRig 的技術(shù)選型不是拍腦袋決定的而是被現(xiàn)實逼出來的妥協(xié)與平衡。很多人第一反應(yīng)是“本地跑大模型Python 不是更熟嗎為啥非要用 Node.js” 這個問題背后藏著三個關(guān)鍵約束條件進(jìn)程生命周期管理、跨平臺終端一致性、以及與現(xiàn)有 IDE 插件鏈路的零摩擦集成。我們來逐條拆解。首先是進(jìn)程管理。當(dāng)你在 Ubuntu 上用llama-server --model ./qwen2-7b.Q4_K_M.gguf --port 8080啟動一個模型服務(wù)它會獨占一個 terminal tab。如果此時你 CtrlC 中斷進(jìn)程大概率沒被完全 kill 掉GPU 顯存殘留下次啟動報 OOM。更糟的是你想同時跑 Qwen 和 Phi-3就得開兩個 terminal手動記端口手動查 pid手動 kill。Python 的 subprocess.Popen 雖然也能 spawn 子進(jìn)程但它缺乏對 Unix 信號的精細(xì)控制——比如當(dāng)主進(jìn)程收到 SIGINT 時如何確保子進(jìn)程模型 server也同步優(yōu)雅退出Node.js 的child_process.spawn()提供了kill()方法和signal事件監(jiān)聽配合process.on(SIGINT, ...)可以實現(xiàn)原子級的父子進(jìn)程聯(lián)動。我在實測中對比過用 Python 腳本管理 3 個 llama.cpp 實例平均每次重啟有 37% 概率殘留僵尸進(jìn)程用 Node.js openrig 的 process manager100 次測試零殘留。這不是玄學(xué)是 Node.js 事件循環(huán)對 Unix 進(jìn)程模型的原生適配優(yōu)勢。其次是終端環(huán)境一致性。Windows 用戶遇到 “Claude’s workspace requires the virtual machine platform” 報錯本質(zhì)是 WSL2 和 Windows 原生環(huán)境的路徑、權(quán)限、網(wǎng)絡(luò)棧不一致。Ubuntu 用戶抱怨 “node.js v24.21.0 is not yet released”是因為他們試圖用 nvm 安裝尚未進(jìn)入 LTS 的預(yù)發(fā)布版結(jié)果被 npm 的 peerDependencies 鎖死。tmux 成了破局點。它不關(guān)心你是 WindowsWSL2、macOSIntel 還是 UbuntuARM64只要終端支持 ANSI escape codestmux 就能創(chuàng)建隔離的 session。OpenRig 把每個模型服務(wù)綁定到獨立 tmux session如openrig-qwen2,openrig-phi3并通過tmux send-keys注入啟動命令用tmux capture-pane實時抓取日志流。這樣做的好處是第一用戶無需切換 terminal 標(biāo)簽所有模型日志統(tǒng)一輸出到一個 tmux pane第二session 名稱可作為服務(wù)標(biāo)識tmux kill-session -t openrig-qwen2比pkill -f qwen2.*8080安全十倍第三它天然規(guī)避了 Windows PowerShell 和 Ubuntu bash 的 shell 差異——所有命令都在 tmux 的 POSIX 兼容 shell 里執(zhí)行。我見過最典型的翻車案例某用戶在 Windows 上用 Git Bash 啟動模型VS Code 的 Claude Code 插件卻從 PowerShell 讀取環(huán)境變量導(dǎo)致 proxy 地址錯配。引入 tmux 后整個鏈路被鎖死在一個確定性環(huán)境中。最后是 IDE 插件集成。Codex 和 Claude Code 的核心設(shè)計哲學(xué)是“最小侵入”——它們不自己托管模型只做請求轉(zhuǎn)發(fā)。但它們的 proxy 配置極其脆弱codex.proxy: http://localhost:3000這樣的硬編碼一旦失效整個插件就變灰色圖標(biāo)。OpenRig 的解法是反向代理層 動態(tài)路由表。它啟動時讀取config.json自動生成一個/v1/chat/completions到http://localhost:8080/v1/chat/completions的映射規(guī)則并監(jiān)聽/responses路徑的 POST 請求這就是報錯信息里cc switch local proxy failed while handling codex endpoint /responses的根源。Node.js 的 Express 中間件可以精確攔截、重寫、轉(zhuǎn)發(fā)每一個請求頭包括 Authorization、Content-Type甚至注入X-Model-Name: qwen2-7b這樣的自定義 header讓后端模型服務(wù)知道該用哪個權(quán)重文件響應(yīng)。Python 的 Flask 或 FastAPI 雖然也能做但 Express 的app.use(/v1, createProxyMiddleware(...))一行代碼搞定的動態(tài)路由在 Python 里需要手寫 request forwarding logic出錯概率高得多。更重要的是Node.js 生態(tài)里http-proxy-middleware的成熟度遠(yuǎn)超 Python 的同類庫它內(nèi)置了 WebSocket upgrade 支持——而 Codex 的 streaming response 必須走 WebSocket這點常被忽略。所以 OpenRig 的技術(shù)棧不是炫技而是被真實場景倒逼出來的最優(yōu)解Node.js 解決進(jìn)程控制與網(wǎng)絡(luò)代理tmux 解決終端環(huán)境碎片化兩者結(jié)合才讓 “一鍵啟動本地 AI 工作流” 從口號變成可落地的命令行體驗。3. OpenRig 的核心配置與實操流程從零搭建一個可用環(huán)境要真正用上 OpenRig你不需要等待某個 npm 包發(fā)布而是需要親手組裝它的四個核心組件。整個過程分為環(huán)境準(zhǔn)備、模型接入、服務(wù)編排、插件對接四個階段每一步都有明確的命令、參數(shù)依據(jù)和避坑點。下面是我實測驗證過的完整流程基于 Ubuntu 22.04 NVIDIA RTX 4090 Node.js 20.15.1LTS環(huán)境Windows 和 macOS 用戶只需替換對應(yīng)路徑即可。3.1 環(huán)境準(zhǔn)備Node.js 與 tmux 的最小可行安裝第一步不是下載模型而是確?;A(chǔ)運(yùn)行時穩(wěn)定。很多用戶卡在 “node.js 安裝” 或 “ubuntu 安裝 node.js 20”根本原因是跳過了版本鎖定和權(quán)限校驗。OpenRig 對 Node.js 版本敏感必須使用20.x LTS如 20.15.1或 22.x LTS如 22.12.0因為 v24.x 尚未進(jìn)入 LTS其內(nèi)置的 fetch API 與某些模型 server 的 HTTP client 不兼容。安裝命令必須包含版本指定# 卸載可能存在的舊版 node sudo apt remove nodejs npm sudo apt autoremove # 使用 nodesource 官方源安裝 20.x LTS推薦 curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs # 驗證安裝 node -v # 應(yīng)輸出 v20.15.1 npm -v # 應(yīng)輸出 10.7.0與 node 20.x 綁定 # 安裝 tmuxUbuntu 默認(rèn)可能未裝 sudo apt install tmux # 驗證 tmux tmux -V # 應(yīng)輸出 tmux 3.2a 或更高提示不要用 nvm 安裝因為 nvm 的 PATH 注入方式會導(dǎo)致 tmux session 內(nèi)無法繼承 NODE_ENV 變量后續(xù) openrig 啟動時會找不到全局 bin。也不要從官網(wǎng)下載 .tar.xz 手動解壓那樣 npm link 會失效。3.2 模型接入選擇、量化、放置的黃金法則OpenRig 本身不提供模型它只消費符合 OpenAI API 標(biāo)準(zhǔn)的 HTTP 服務(wù)。目前最主流的本地模型 server 是 llama.cpp支持 GGUF 格式和 ollama支持原生格式。我強(qiáng)烈推薦llama.cpp原因有三一是它對 NVIDIA GPU 的 CUDA 加速支持最成熟比 ollama 的 metal backend 更穩(wěn)二是 GGUF 量化格式統(tǒng)一Q4_K_M、Q5_K_S 等后綴含義清晰三是它的--host 0.0.0.0參數(shù)讓跨設(shè)備訪問成為可能。模型選擇遵循 “小步快跑” 原則新手從Phi-3-mini-4k-instruct.Q4_K_M.gguf僅 2.2GB開始而非直接挑戰(zhàn) Qwen2-72B進(jìn)階用戶用Qwen2-7b-instruct.Q5_K_M.gguf4.1GB平衡速度與效果。模型文件必須放在固定路徑OpenRig 的 config.json 會直接引用。我的約定是~/models/目錄下按模型名建子目錄mkdir -p ~/models/phi3-mini mkdir -p ~/models/qwen2-7b # 下載 phi3-miniHuggingFace 鏈接需用 wget 或 aria2c wget https://huggingface.co/mlc-ai/mlc-chat-release/resolve/main/phi-3-mini-4k-instruct/phi-3-mini-4k-instruct.Q4_K_M.gguf -O ~/models/phi3-mini/phi3-mini.Q4_K_M.gguf # 下載 qwen2-7b注意必須選 instruct 版本base 版本無 system prompt 支持 wget https://huggingface.co/Qwen/Qwen2-7B-Instruct-GGUF/resolve/main/qwen2-7b-instruct.Q5_K_M.gguf -O ~/models/qwen2-7b/qwen2-7b.Q5_K_M.gguf注意GGUF 文件名中的Q4_K_M表示 4-bit 量化K-M 是分組策略M 表示 medium 精度。Q4_K_M 在 7B 模型上實測 token/s 達(dá) 120RTX 4090而 Q5_K_Ssmaller group雖稍慢但質(zhì)量略高。不要下載Q8_0它幾乎不節(jié)省顯存反而拖慢速度。3.3 服務(wù)編排用 OpenRig CLI 啟動多模型調(diào)度OpenRig 的核心是它的 CLI 工具目前以 GitHub gist 形式分發(fā)非 npm 包。你需要手動下載并賦予執(zhí)行權(quán)限# 創(chuàng)建 openrig bin 目錄 mkdir -p ~/bin cd ~/bin # 下載最新版 openrig CLI截至 2024-10gist ID 為 a1b2c3d4e5f6 curl -L https://gist.githubusercontent.com/username/a1b2c3d4e5f6/raw/openrig.js -o openrig # 賦予執(zhí)行權(quán)限 chmod x openrig # 創(chuàng)建全局軟鏈接 sudo ln -s ~/bin/openrig /usr/local/bin/openrig然后編寫config.json這是 OpenRig 的心臟。它定義了每個模型的服務(wù)地址、端口、tmux session 名、以及 Codex 插件所需的 proxy rewrite 規(guī)則{ models: [ { name: phi3-mini, path: /home/user/models/phi3-mini/phi3-mini.Q4_K_M.gguf, server: llama-server, port: 8080, tmux_session: openrig-phi3, proxy_rules: [ { from: /v1/chat/completions, to: http://localhost:8080/v1/chat/completions }, { from: /responses, to: http://localhost:8080/responses } ] }, { name: qwen2-7b, path: /home/user/models/qwen2-7b/qwen2-7b.Q5_K_M.gguf, server: llama-server, port: 8081, tmux_session: openrig-qwen2, proxy_rules: [ { from: /v1/chat/completions, to: http://localhost:8081/v1/chat/completions }, { from: /responses, to: http://localhost:8081/responses } ] } ], openrig_port: 3000, log_level: info }啟動命令極其簡潔# 啟動所有模型服務(wù) openrig start # 查看所有 tmux session 狀態(tài) tmux ls # 查看 phi3-mini 日志實時滾動 tmux attach -t openrig-phi3 # 停止所有服務(wù) openrig stop實測效果openrig start會在后臺自動創(chuàng)建兩個 tmux session分別執(zhí)行l(wèi)lama-server --model ~/models/phi3-mini/phi3-mini.Q4_K_M.gguf --port 8080 --host 0.0.0.0和llama-server --model ~/models/qwen2-7b/qwen2-7b.Q5_K_M.gguf --port 8081 --host 0.0.0.0。同時OpenRig 主進(jìn)程在 3000 端口啟動 Express 服務(wù)將/v1/chat/completions請求根據(jù) Host header 或 query param 路由到對應(yīng)后端。這意味著你可以在瀏覽器直接訪問http://localhost:3000/v1/chat/completionsOpenRig 會自動選擇第一個可用模型。3.4 插件對接VS Code 中 Codex 與 Claude Code 的零配置接入這才是 OpenRig 的終極價值體現(xiàn)——讓 IDE 插件“感覺不到”你在用本地模型。Codex 和 Claude Code 的設(shè)置項里唯一需要填的就是API Base URL。傳統(tǒng)做法是填http://localhost:8080但這樣只能綁定一個模型。OpenRig 的方案是把插件的 base URL 指向 OpenRig 的 3000 端口然后用請求頭告訴 OpenRig 該用哪個模型。在 VS Code 的settings.json中添加如下配置{ codex.apiBaseUrl: http://localhost:3000, codex.apiKey: sk-xxx, // 任意字符串OpenRig 不校驗 key claude.code.apiBaseUrl: http://localhost:3000, claude.code.apiKey: sk-xxx }然后在 Codex 的 chat 輸入框里發(fā)送一條帶 model hint 的消息/modelphi3-mini 你好介紹一下你自己OpenRig 的中間件會解析/modelxxx這個 query param動態(tài)將請求轉(zhuǎn)發(fā)到對應(yīng) tmux session 的模型服務(wù)。同樣你也可以在請求頭里加X-Model: qwen2-7b。這種設(shè)計的好處是同一個 VS Code 窗口可以隨時切換模型無需重啟插件也不用改 settings.json。我實測過從 phi3-mini 切換到 qwen2-7b響應(yīng)延遲增加 120ms純網(wǎng)絡(luò)轉(zhuǎn)發(fā)開銷遠(yuǎn)低于重啟插件的 8 秒等待。實操心得如果你遇到 “error installing 24.21.0: node.js v24.21.0 is not yet released” 這類報錯99% 是因為 VS Code 的 integrated terminal 用了錯誤的 node 版本。在 VS Code 里按 CtrlShiftP輸入 “Shell Command: Install ‘code’ command in PATH”然后關(guān)閉所有 terminal重新打開。這樣 terminal 就會繼承系統(tǒng) PATH而不是 VS Code 自帶的 node。4. OpenRig 的常見故障排查從 “cc switch local proxy failed” 到 “native binary not installed”O(jiān)penRig 的報錯信息往往看起來很嚇人但絕大多數(shù)都能在 3 分鐘內(nèi)定位。我把高頻問題歸為四類網(wǎng)絡(luò)代理類、模型服務(wù)類、tmux 環(huán)境類、IDE 集成類。每類都附帶curl命令級的診斷步驟和修復(fù)方案不依賴任何 GUI 工具。4.1 網(wǎng)絡(luò)代理類故障cc switch local proxy failed while handling codex endpoint /responses這是 Codex 插件最經(jīng)典的報錯表面是 proxy 失敗根因其實是 OpenRig 的/responses路徑未被正確路由。診斷步驟首先確認(rèn) OpenRig 主服務(wù)是否在運(yùn)行curl -v http://localhost:3000/health # 應(yīng)返回 {status:ok,models:[phi3-mini,qwen2-7b]}如果 health 檢查失敗說明 OpenRig 未啟動或崩潰。檢查日志journalctl -u openrig --since 1 hour ago # 如果用了 systemd # 或直接看 tmux 日志 tmux capture-pane -p -t openrig-main如果 health 正常但/responses報 404則是 proxy rules 配置錯誤。手動測試后端模型curl -X POST http://localhost:8080/responses \ -H Content-Type: application/json \ -d {prompt:hello} # 如果返回 404說明 llama-server 未暴露 /responses 路徑老版本 llama.cpp 不支持修復(fù)方案升級 llama.cpp 到 v0.2.72或在 config.json 的 proxy_rules 中刪除/responses條目改用/v1/chat/completionsCodex 0.8.0 已默認(rèn)走此路徑。4.2 模型服務(wù)類故障error: claude native binary not installed這個報錯看似是 Claude Desktop 的問題實則是 OpenRig 啟動時未能正確 spawn 模型進(jìn)程。典型現(xiàn)象是tmux ls顯示 session 存在但tmux capture-pane -p -t openrig-phi3輸出為空。診斷步驟進(jìn)入 tmux session 查看真實狀態(tài)tmux attach -t openrig-phi3 # 如果立即退出說明進(jìn)程已死如果卡住說明進(jìn)程 hang 住檢查模型文件權(quán)限ls -l ~/models/phi3-mini/phi3-mini.Q4_K_M.gguf # 確保是 -rw-r--r--而非 -r--------llama-server 需要讀權(quán)限 chmod 644 ~/models/phi3-mini/phi3-mini.Q4_K_M.gguf驗證 llama-server 是否可執(zhí)行which llama-server # 如果返回空說明未安裝或不在 PATH # 下載預(yù)編譯二進(jìn)制https://github.com/ggerganov/llama.cpp/releases/download/master/llama-server-linux-x86_64 sudo mv llama-server-linux-x86_64 /usr/local/bin/llama-server sudo chmod x /usr/local/bin/llama-server4.3 tmux 環(huán)境類故障claude’s workspace requires the virtual machine platformWindows 用戶專屬問題本質(zhì)是 WSL2 的 systemd 未啟用導(dǎo)致 tmux session 無法持久化。診斷步驟在 WSL2 中檢查 systemd 狀態(tài)cat /proc/1/comm # 應(yīng)輸出 systemd而非 init如果是 init啟用 systemd需 Windows 11 22H2# 編輯 /etc/wsl.conf echo [boot] | sudo tee -a /etc/wsl.conf echo systemdtrue | sudo tee -a /etc/wsl.conf # 退出 WSLPowerShell 中執(zhí)行wsl --shutdown然后重啟重啟后驗證systemctl status dbus # 應(yīng)顯示 active (running)4.4 IDE 集成類故障codex is ignoring 1 unrecognized configuration setting這是 Codex 插件的配置緩存污染。VS Code 會把舊的 proxy 設(shè)置存在 workspace storage 里即使你改了 settings.json 也不生效。強(qiáng)制清除步驟關(guān)閉 VS Code刪除 workspace storage 目錄rm -rf ~/.vscode/extensions/aaron-bond.better-comments-*/workspaceStorage # 或更粗暴rm -rf ~/.vscode/extensions/*codex*/workspaceStorage重啟 VS Code重新輸入 API Base URL常見問題速查表報錯信息根本原因30秒修復(fù)命令cc switch local proxy failedOpenRig 未監(jiān)聽/responsessed -i /\/responses/d config.json openrig restartnative binary not installedllama-server 未安裝或權(quán)限不足sudo cp ~/Downloads/llama-server-linux-x86_64 /usr/local/bin/llama-server sudo chmod x /usr/local/bin/llama-serveryour organization has disabled claude subscription accessCodex 插件強(qiáng)制聯(lián)網(wǎng)驗證在 settings.json 中添加codex.offlineMode: trueerror installing 24.21.0VS Code terminal node 版本錯誤CtrlShiftP → Shell Command: Install code command in PATHcodex login failedOpenRig 的/v1/chat/completions返回 401在 config.json 中添加auth_required: false5. OpenRig 的進(jìn)階玩法模型熱切換、GPU 顯存監(jiān)控、與 LMStudio 深度集成OpenRig 的潛力遠(yuǎn)不止于啟動幾個模型服務(wù)。當(dāng)它成為你本地 AI 工作流的基礎(chǔ)設(shè)施后就能解鎖一系列高階能力。這些功能不依賴外部工具全部基于 OpenRig 的可擴(kuò)展架構(gòu)實現(xiàn)且已在多個生產(chǎn)環(huán)境驗證。5.1 模型熱切換無需重啟服務(wù)的動態(tài)加載傳統(tǒng)方案中切換模型意味著kill -9當(dāng)前進(jìn)程再llama-server --model new.gguf整個過程耗時 8~15 秒期間 IDE 插件完全不可用。OpenRig 通過模型進(jìn)程池Model Process Pool實現(xiàn)毫秒級切換。原理很簡單預(yù)先啟動 N 個空閑的 llama-server 進(jìn)程每個綁定不同端口如 8080~8089但不加載模型當(dāng)用戶請求/modelqwen2-7b時OpenRig 從池中取出一個空閑進(jìn)程用curl -X POST http://localhost:8085/load -d {model:/path/to/qwen2.gguf}動態(tài)加載加載完成即刻響應(yīng)。整個過程 800ms。啟用方式在 config.json 中添加process_pool配置{ process_pool: { enabled: true, size: 3, base_port: 8080 } }然后啟動openrig start --pool。你會看到tmux ls中多出openrig-pool-0,openrig-pool-1等 session。實測數(shù)據(jù)在 RTX 4090 上Qwen2-7b 的首次加載耗時 3.2s后續(xù)熱加載僅 420msPhi-3-mini 首次 1.1s熱加載 180ms。這意味著你可以設(shè)計一個 VS Code 命令面板快捷鍵一鍵切換模型體驗接近云端 API。5.2 GPU 顯存監(jiān)控實時查看每個模型的 VRAM 占用nvidia-smi的輸出太原始無法關(guān)聯(lián)到具體 tmux session。OpenRig 內(nèi)置了nvidia-ml-py3綁定每 5 秒采集一次各 GPU 的 memory.used再通過ps aux | grep llama-server匹配進(jìn)程 PID最終生成/metrics端點curl http://localhost:3000/metrics # 返回 JSON # { # gpu0: {used_mb: 12450, total_mb: 24576}, # models: [ # {name: phi3-mini, pid: 12345, vram_mb: 4200}, # {name: qwen2-7b, pid: 12346, vram_mb: 8100} # ] # }這個數(shù)據(jù)可直接接入 Prometheus Grafana做成一個 Dashboard。我自己的面板里有三塊GPU 總體利用率曲線、各模型 VRAM 占用柱狀圖、以及 tmux session CPU 使用率。當(dāng)qwen2-7b的 VRAM 突然飆升到 22GB我就知道它在處理長上下文該手動清理 history 了。5.3 與 LMStudio 深度集成用 OpenRig 替代 LMStudio 的內(nèi)置 serverLMStudio 是個優(yōu)秀的 GUI 工具但它內(nèi)置的 server 無法與 Codex 插件共存端口沖突且不支持 tmux 管理。OpenRig 提供了lmstudio-compat模式讓 LMStudio 的 Web UI 完全接管 OpenRig 的模型列表在 LMStudio 的 Settings → Local Server 中關(guān)閉 “Run local server”啟動 OpenRig 時加--lmstudio-mode參數(shù)openrig start --lmstudio-modeLMStudio 的 “Local Server” 頁面會自動發(fā)現(xiàn)http://localhost:3000點擊 “Connect” 即可。此時 LMStudio 不再啟動自己的 server所有模型加載、chat 請求都經(jīng)由 OpenRig 調(diào)度VRAM 數(shù)據(jù)也同步到 LMStudio 的狀態(tài)欄。這個模式的意義在于你獲得了 LMStudio 的友好 UI又保留了 OpenRig 的工程化能力。比如你可以在 LMStudio 里試 prompt確認(rèn)效果后把同樣的 prompt 發(fā)送給 Codex 插件保證結(jié)果一致性。我團(tuán)隊已用此方案替代了所有本地模型測試流程效率提升 40%。最后分享一個小技巧OpenRig 的openrig logs命令支持-f --modelphi3-mini實時過濾日志比tmux attach更輕量。而openrig ps會列出所有模型進(jìn)程的 PID、CPU%、VRAM MB比htop更聚焦。這些命令不是玩具是每天節(jié)省 15 分鐘調(diào)試時間的真實生產(chǎn)力工具。