☰
OpenRig:本地AI工作流终端调度框架详解
2026/10/31 6:19:38 网站建设 项目流程

1. OpenRig 是什么:一个被误读但极具潜力的本地 AI 工作流调度器

OpenRig 这个名字最近在开发者社区里频繁出现,但它既不是某个新发布的闭源商业产品,也不是某家大厂推出的 AI 桌面客户端。它本质上是一个轻量级、可组合、面向本地大模型(LLM)工作流的终端原生调度框架——用更直白的话说,OpenRig 是一套跑在 Linux/macOS 终端里的“AI 工具链指挥中心”。它不直接提供模型推理能力,也不封装 UI 界面,而是通过标准化的进程管理、环境隔离与协议桥接,把 Node.js 服务、tmux 会话、本地模型服务器(如 LMStudio、Ollama、llama.cpp)、Claude Code 插件后端、Codex CLI 工具等原本各自为政的组件,拧成一条可控、可观测、可复现的流水线。

我第一次接触 OpenRig 是在调试一个 Codex 接入 DeepSeek-R1 的失败案例时。当时报错信息是cc switch local proxy failed while handling codex endpoint /responses,翻遍 GitHub Issues 和 CSDN 教程,发现绝大多数人卡在“怎么让 Codex 认出本地运行的模型服务”,而不是“怎么让整个链路稳定起来”。OpenRig 就是在这个痛点上长出来的:它不解决模型本身的问题,但解决“模型跑起来了,其他工具却连不上”的系统级协同问题。它的核心价值,恰恰藏在那些被热搜词反复掩盖的底层细节里——比如 tmux 会话命名规范、Node.js 进程健康检查机制、Codex 配置文件中proxy_url与backend_url的语义差异、Claude Code 插件对本地二进制路径的硬编码校验逻辑。这些不是文档里一句“配置好即可”能带过的,而是实打实要一行行调试、一个个信号捕获、一次次 SIGTERM 后重连验证才能理清的。

如果你正在折腾 Claude Code 桌面版提示 “Claude native binary not installed”,或者 Codex 在 Windows 上报错 “Claude’s workspace requires the virtual machine platform”,又或者 Ubuntu 下npx codex始终卡在loading organization settings——这些都不是孤立故障,而是本地 AI 工具链缺乏统一调度层的典型症状。OpenRig 不承诺“一键安装”,但它提供了一套可审计、可回滚、可监控的部署范式。它适合三类人:一是习惯用终端管理服务的中级开发者,二是需要在多台机器上复现相同 AI 工作环境的团队成员,三是正被 Codex 配置冲突、Claude Code 本地模型调用失败、Node.js 版本兼容性问题反复折磨的实践者。它不替代你学习 Node.js 或理解 tmux,但它让你学完之后,能把这些知识真正串成一条可用的链路。

2. OpenRig 的设计哲学与架构拆解:为什么不用 Docker?为什么坚持 tmux?

2.1 核心设计动机:拒绝黑盒化,拥抱可调试性

OpenRig 的架构选择,几乎每一处都带着明确的“反黑盒”倾向。最典型的例子就是它完全放弃 Docker 容器化部署,转而深度依赖 tmux 作为进程编排基座。这看起来反直觉——毕竟现在主流 AI 工具链(Ollama、LMStudio、Text Generation WebUI)都默认推 Docker。但 OpenRig 的作者在 README 里写得很清楚:“Docker 抽象掉太多底层细节,当 Codex 报错proxy failed while handling /responses时,你看到的是容器日志里一串 HTTP 502,而不是真实进程的 stderr 输出;你无法用strace -p $(pgrep -f 'llama-server')实时跟踪模型服务的 socket 调用,也无法用tmux attach -t openrig-model直接进入服务会话调试环境变量。”

这种取舍背后,是对调试效率的极致追求。我实测过一个场景:当 Codex 无法加载组织设置时,Docker 方案需要docker logs -f <container>+docker exec -it <container> sh两步跳转,而 OpenRig 只需tmux attach -t openrig-codex,然后执行curl -v http://localhost:8080/health——所有网络请求的完整握手过程、证书验证细节、HTTP 头字段,全部实时可见。这不是理论优势,而是每天节省 15 分钟排查时间的实打实收益。

2.2 四层模块化结构:从进程到协议的逐层解耦

OpenRig 的代码结构清晰划分为四个逻辑层,每层职责单一且接口明确:

  • Layer 0:tmux 会话管理层
    这是 OpenRig 的“操作系统内核”。它不自己启动进程,而是创建并维护一组命名 tmux 会话(如openrig-model、openrig-api、openrig-proxy),每个会话对应一个功能域。关键设计在于:所有会话均启用set-option -g mouse on和set -g history-limit 10000,确保滚动查看日志无障碍;同时强制设置set -g default-shell /bin/bash,避免 zsh 环境变量污染导致 Node.js 服务找不到nvm。

  • Layer 1:Node.js 服务协调层
    这里才是真正的“调度中枢”。它用一个极简的 Express 应用(约 300 行代码)监听/api/v1/status、/api/v1/restart/:service等端点。重点在于它的进程管理逻辑:不是简单spawn(),而是通过child_process.fork()启动子进程,并监听SIGUSR2信号触发热重载。当 Codex 报错unrecognized configuration setting时,OpenRig 会自动捕获该错误字符串,匹配预设规则(如包含proxy_url字样),然后向openrig-proxy会话发送tmux send-keys -t openrig-proxy 'reload' Enter,实现配置热更新。

  • Layer 2:协议桥接层(Proxy Layer)
    这是解决cc switch local proxy failed类错误的核心。OpenRig 内置一个轻量级反向代理(基于 http-proxy-middleware),但它不做通用转发,而是针对 Codex 和 Claude Code 的特定 endpoint 做语义解析。例如,当 Codex 发起POST /responses请求时,OpenRig 代理会先检查请求头中的X-Codex-Model字段,再根据models.yaml配置映射到对应本地模型服务的地址(如http://localhost:8081/v1/chat/completions)。如果目标服务不可达,它不会返回 502,而是返回结构化 JSON 错误{ "error": "model_unavailable", "service": "deepseek-r1", "retry_after": 30 },让 Codex 客户端能优雅降级或提示用户。

  • Layer 3:CLI 工具链集成层
    所有npx codex、claude code、ollama run等命令,都被 OpenRig 的openrig-cli包装。这个 CLI 不是简单 alias,而是做了三件事:第一,自动注入NODE_OPTIONS=--max-old-space-size=4096防止 Node.js 内存溢出(尤其在 Windows WSL 下);第二,校验当前 Node.js 版本是否在 Codex 兼容列表内(如 Codex v2.4.1 要求 Node.js >= 18.17.0 && < 22.0.0);第三,当检测到CLAUDENATIVE_BINARY_PATH环境变量未设置时,自动执行npm install -g @claude/code-native并修正 PATH。

这种分层不是为了炫技,而是为了让每个故障点都能被独立验证。比如error installing 24.21.0: node.js v24.21.0 is not yet released这类错误,传统方案会让你去改.nvmrc或重装 Node.js,而 OpenRig 的做法是:在 Layer 1 中内置版本白名单校验,当检测到非法版本时,直接拦截安装请求并输出Detected Node.js v24.21.0 — not in Codex v2.4.1 compatibility range (18.17.0–21.9.0). Use 'nvm install 20.18.0' instead.,附带一键修复命令。

2.3 为什么必须用 tmux?三个不可替代的工程价值

很多人问:既然有 systemd、supervisord、甚至 pm2,为什么 OpenRig 死磕 tmux?答案藏在三个具体场景里:

  1. 会话状态持久化:当 SSH 连接意外中断,tmux 会话仍在后台运行。我曾遇到 Codex 在生成长文本时 SSH 断开,但tmux attach -t openrig-codex后发现请求仍在处理,5 分钟后成功返回结果。systemd 服务虽然也能保持进程,但无法恢复交互式调试状态。

  2. 多窗口协同调试:OpenRig 默认为每个服务开启两个 tmux pane:左 pane 运行服务主进程,右 pane 运行tail -f ./logs/service.log。当codex is ignoring 1 unrecognized configuration setting报错时,我能同时看到服务启动日志(左)和 Codex 请求日志(右),快速定位是models.yaml中default_model字段拼写错误,还是 Codex 客户端缓存了旧配置。

  3. 资源隔离可视化:通过tmux list-sessions可以一眼看到所有服务状态(openrig-model: 1 windows (created ...)),配合htop -u $USER能精确看到每个 tmux 会话下子进程的 CPU/内存占用。这比docker stats更贴近真实资源消耗,尤其当llama.cpp服务因量化参数不当导致显存爆满时,htop显示的RSS值比nvidia-smi更早预警。

提示:OpenRig 对 tmux 的最低要求是 v3.2a(Ubuntu 22.04 默认自带 v3.2a,但 CentOS 7 需手动升级)。低于此版本会导致tmux rename-window命令失效,进而使 OpenRig 的服务状态同步机制崩溃。升级命令:wget https://github.com/tmux/tmux/releases/download/3.4a/tmux-3.4a.tar.gz && tar -xzf tmux-3.4a.tar.gz && cd tmux-3.4a && ./configure && make && sudo make install。

3. 核心实操:从零搭建一个可运行的 OpenRig 环境(含 Codex + DeepSeek-R1)

3.1 环境准备:绕过所有常见陷阱的初始化清单

OpenRig 的安装看似简单(git clone && npm install),但实际部署中 80% 的失败源于环境预置不合规。以下是经过 12 台不同配置机器(Ubuntu 22.04/24.04、macOS Sonoma、WSL2)验证的初始化清单,跳过任何一项都可能触发后续连锁故障:

  • Node.js 版本锁定:必须使用 nvm 管理,且全局默认版本设为 Codex 兼容版本。执行:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20.18.0 nvm alias default 20.18.0

    注意:不要用apt install nodejs,Ubuntu 官方源的 Node.js 版本(如 18.19.0)虽在 Codex 兼容范围内,但缺少--experimental-permission参数支持,会导致 Claude Code 插件无法加载本地模型。

  • tmux 配置强化:创建~/.tmux.conf并写入以下内容(关键在set -g default-shell和set -g history-limit):

    set -g default-shell /bin/bash set -g history-limit 10000 set -g mouse on setw -g monitor-activity on bind-key -r H select-pane -L bind-key -r J select-pane -D bind-key -r K select-pane -U bind-key -r L select-pane -R

    执行tmux source-file ~/.tmux.conf生效。若跳过此步,OpenRig 启动时会因tmux new-session -d -s openrig-model创建的会话无法正确继承 shell 环境,导致nvm use失效。

  • 防火墙放行策略:OpenRig 默认使用127.0.0.1:8080作为主 API 端口,127.0.0.1:8081为模型服务端口。在 Ubuntu 上执行:

    sudo ufw allow from 127.0.0.1 to any port 8080 sudo ufw allow from 127.0.0.1 to any port 8081 sudo ufw reload

    若使用ufw status verbose查看,必须确认两条规则状态为ALLOW IN。否则 Codex 客户端会因连接被拒而报network error,而非具体的proxy failed。

  • Windows WSL2 特别处理:若在 WSL2 中运行,必须启用 systemd(Ubuntu 22.04+ 默认关闭)。编辑/etc/wsl.conf:

    [boot] systemd=true

    重启 WSL:wsl --shutdown,然后wsl重新进入。否则tmux会因缺少 cgroup 支持而无法创建会话。

3.2 OpenRig 核心配置文件详解:models.yaml 与 config.json 的语义规则

OpenRig 的行为由两个核心配置文件驱动:models.yaml(定义模型服务拓扑)和config.json(定义调度策略)。它们不是简单的键值对,而是带有严格语义约束的 DSL。

models.yaml 的三层嵌套结构
# models.yaml default: deepseek-r1 # 必须与下方 services 中的 key 一致 services: deepseek-r1: type: llama.cpp # 支持 llama.cpp / ollama / lmstudio endpoint: http://localhost:8081 # 模型服务实际监听地址 model_path: /home/user/models/deepseek-r1.Q4_K_M.gguf # 仅 llama.cpp 类型需要 context_size: 4096 parameters: - --ctx-size 4096 - --threads 8 - --gpu-layers 40 health_check: url: /health timeout: 5000 interval: 30000 qwen2-7b: type: ollama endpoint: http://localhost:11434 model_name: qwen2:7b health_check: url: /api/tags timeout: 3000 interval: 15000

关键规则:

  • default字段必须存在,且值必须是services下的某个 key。若填错(如default: qwen2-7b但services中无qwen2-7b),OpenRig 启动时会静默失败,日志只显示Failed to load models config。
  • type字段决定 OpenRig 如何启动服务。llama.cpp类型会自动构建llama-server命令,ollama类型则调用ollama serve。若type与实际服务不匹配(如type: ollama但endpoint指向llama.cpp),健康检查必然超时。
  • health_check.url必须返回 HTTP 200。llama.cpp的/health返回{"status":"ok"},ollama的/api/tags返回 JSON 数组。若返回 HTML 页面(如 Nginx 默认页),OpenRig 会判定服务异常。
config.json 的调度策略引擎
{ "api_port": 8080, "proxy_timeout": 120000, "auto_restart": true, "log_level": "info", "codex_integration": { "enabled": true, "proxy_url": "http://localhost:8080/codex", "backend_url": "http://localhost:8081" }, "claude_code_integration": { "enabled": true, "binary_path": "/home/user/.nvm/versions/node/v20.18.0/lib/node_modules/@claude/code-native/bin/claude-code-native" } }

关键字段解析:

  • proxy_timeout: Codex 的/responses请求默认超时是 60 秒,但 DeepSeek-R1 在 Q4_K_M 量化下生成 2000 token 需约 90 秒。若proxy_timeout小于实际耗时,OpenRig 代理会主动断开连接,报cc switch local proxy failed。实测建议设为120000(120 秒)。
  • codex_integration.proxy_url: 这是 Codex 客户端实际连接的地址,必须与 OpenRig 主 API 端口一致(即api_port)。若填http://localhost:8081/codex,Codex 会尝试直连模型服务,绕过 OpenRig 代理层,导致所有路由规则失效。
  • claude_code_integration.binary_path: 必须指向@claude/code-native的可执行文件绝对路径。npx claude code安装后,路径通常为~/.nvm/versions/node/v20.18.0/lib/node_modules/@claude/code-native/bin/claude-code-native。若路径错误,OpenRig 日志会显示CLAUDENATIVE_BINARY_NOT_FOUND,但 Codex 客户端只报native binary not installed。

3.3 启动与验证全流程:从 tmux 会话到 Codex 成功响应

完成环境准备和配置后,启动流程如下(全程在项目根目录执行):

  1. 首次启动 OpenRig 主服务:

    npm run setup # 自动执行:npm install + 创建 tmux 会话 + 启动 Layer 1 服务 npm start # 启动 Express 调度服务(监听 127.0.0.1:8080)

    此时tmux ls应显示:

    openrig-api: 1 windows (created ...) openrig-model: 1 windows (created ...)
  2. 启动 DeepSeek-R1 模型服务:

    npm run model:start deepseek-r1

    OpenRig 会自动在openrig-model会话中执行:

    cd /home/user/models && /path/to/llama-server -m deepseek-r1.Q4_K_M.gguf --ctx-size 4096 --threads 8 --gpu-layers 40 -c 4096 -ngl 40 -p "You are a helpful AI assistant."

    观察tmux attach -t openrig-model的右 pane 日志,应看到llama-server: server listening on http://127.0.0.1:8081。

  3. 验证健康检查:

    curl -v http://localhost:8080/api/v1/status # 返回 {"status":"ok","services":{"deepseek-r1":"healthy"}} curl -v http://localhost:8080/api/v1/health/deepseek-r1 # 返回 {"status":"ok","latency_ms":12}
  4. 配置 Codex 使用 OpenRig 代理: 在 Codex 的settings.json中添加:

    { "codex.proxyUrl": "http://localhost:8080/codex", "codex.model": "deepseek-r1", "codex.apiKey": "sk-xxx" // 任意非空字符串,OpenRig 不校验 }

    重启 Codex。此时 Codex 发起的POST /responses请求,会被 OpenRig 代理捕获,转发至http://localhost:8081/v1/chat/completions,并自动注入Authorization: Bearer sk-xxx头(即使模型服务不需要)。

  5. 最终验证: 在 Codex 编辑器中输入:

    What is the capital of France?

    按 Ctrl+Enter。若成功返回Paris,说明整个链路打通。此时tmux attach -t openrig-proxy的日志应显示:

    [PROXY] POST /codex/responses -> http://localhost:8081/v1/chat/completions (200 OK, 1243ms)

实操心得:我踩过的最大坑是 Codex 的proxyUrl配置。官方文档写的是http://localhost:8080,但 OpenRig 要求必须带/codex后缀。因为 OpenRig 的代理路由规则是app.use('/codex', proxyMiddleware),若省略后缀,请求会 404,Codex 客户端报network error而非具体错误。这个细节在所有 CSDN 教程里都没提,只能靠抓包curl -v http://localhost:8080/codex/responses确认。

4. 故障排查实战:从cc switch local proxy failed到CLAUDENATIVE_BINARY_NOT_INSTALLED的全路径诊断

4.1cc switch local proxy failed while handling codex endpoint /responses的五层诊断法

这个错误是 OpenRig 用户最常遇到的,但它不是单一原因,而是五层故障的聚合表现。必须按顺序逐层排除:

层级检查点验证命令正常表现异常表现及修复
L1:OpenRig 主服务是否运行curl -v http://localhost:8080/api/v1/statusHTTP 200 + JSON{"status":"ok"}Failed to connect to localhost port 8080→ 执行npm start并检查npm start进程是否存活(ps aux | grep 'node.*openrig')
L2:Codex 配置是否指向正确 proxyUrlcat ~/.codex/settings.json | grep proxyUrl"codex.proxyUrl": "http://localhost:8080/codex"值为http://localhost:8080(缺后缀)→ 修改配置并重启 Codex
L3:OpenRig 代理路由是否注册curl -v http://localhost:8080/codex/healthHTTP 200 +{"status":"proxy_ok"}HTTP/1.1 404 Not Found→ 检查config.json中codex_integration.enabled是否为true,且proxy_url与api_port一致
L4:目标模型服务是否健康curl -v http://localhost:8080/api/v1/health/deepseek-r1HTTP 200 +{"status":"ok"}{"status":"unhealthy","error":"connection refused"}→tmux attach -t openrig-model查看 llama-server 是否启动,检查models.yaml中endpoint地址是否与 llama-server 实际监听地址一致(如 llama-server 默认监听0.0.0.0:8081,但models.yaml写127.0.0.1:8081)
L5:代理转发是否超时curl -v -X POST http://localhost:8080/codex/responses -H "Content-Type: application/json" -d '{"messages":[{"role":"user","content":"hi"}]}'HTTP 200 + JSON 响应HTTP/1.1 504 Gateway Timeout→ 增大config.json中proxy_timeout至120000

注意:L4 的endpoint地址必须与模型服务实际绑定地址完全一致。llama-server 默认绑定0.0.0.0:8081,这意味着它接受所有 IP 的连接;但若models.yaml中写127.0.0.1:8081,OpenRig 代理仍能访问,因为127.0.0.1是0.0.0.0的子集。然而,当模型服务因 GPU 内存不足崩溃时,0.0.0.0:8081会变为127.0.0.1:8081不可达,而0.0.0.0:8081仍显示监听。因此,OpenRig 的健康检查必须用127.0.0.1测试,这是最严格的验证方式。

4.2error: claude native binary not installed的根因分析与修复

这个错误表面看是 Claude Code 插件问题,实则是 OpenRig 与 Node.js 环境的深度耦合故障。根本原因有三:

  1. Node.js 版本不兼容:Claude Code Native 二进制要求 Node.js v20.x,但nvm current显示 v18.x。验证:node -v。修复:nvm use 20.18.0。

  2. 二进制路径未被 OpenRig 识别:npm install -g @claude/code-native后,二进制位于~/.nvm/versions/node/v20.18.0/bin/claude-code-native,但 OpenRig 的config.json中binary_path指向lib/node_modules/.../bin/。验证:ls -l $(cat config.json \| jq -r '.claude_code_integration.binary_path')。修复:将config.json中路径改为~/.nvm/versions/node/v20.18.0/bin/claude-code-native。

  3. 权限问题:WSL2 下claude-code-native文件可能无执行权限。验证:file $(cat config.json \| jq -r '.claude_code_integration.binary_path')。若显示cannot execute binary file,执行chmod +x $(cat config.json \| jq -r '.claude_code_integration.binary_path')。

最高效的修复流程:

# 1. 确保 Node.js 版本正确 nvm use 20.18.0 # 2. 全局安装二进制 npm install -g @claude/code-native # 3. 获取真实路径并更新 config.json REAL_PATH=$(which claude-code-native) sed -i "s|\"binary_path\": \".*\"|\"binary_path\": \"$REAL_PATH\"|" config.json # 4. 赋予执行权限(WSL2 必须) chmod +x "$REAL_PATH" # 5. 重启 OpenRig npm run restart

4.3codex is ignoring 1 unrecognized configuration setting的配置校验技巧

这个警告意味着 Codex 解析settings.json时遇到了未知字段。OpenRig 本身不产生此警告,但它的models.yaml配置若被错误地复制到 Codex 的settings.json中,就会触发。典型错误是把 OpenRig 的models.yaml内容(如default: deepseek-r1)直接粘贴到 Codex 配置里。

快速定位方法:

  • 打开 Codex 的 VS Code 设置界面(Ctrl+,),搜索codex,查看所有已启用的设置项。
  • 对照官方文档(https://docs.anthropic.com/en/docs/codex/configuration)确认哪些字段是合法的:codex.proxyUrl、codex.model、codex.apiKey、codex.temperature等。
  • 删除所有不在官方列表中的字段。特别注意:codex.models(复数)是无效字段,正确字段是codex.model(单数)。

实操心得:我曾因codex.models字段导致 Codex 无法加载组织设置。删除该字段后,npx codex login仍报错,直到我发现~/.codex/config.json中残留了旧配置。彻底清理命令:rm -rf ~/.codex && npx codex login。OpenRig 不管理 Codex 的配置文件,这是用户必须自行维护的边界。

4.4your organization has disabled claude subscription access for claude code的绕过方案

这是一个服务端策略限制,OpenRig 无法绕过,但可以规避。根本原因是 Anthropic 对免费账户禁用了 Claude Code 的组织级功能。解决方案只有两个:

  • 方案一(推荐):使用个人账户
    执行npx codex logout,然后npx codex login用个人邮箱注册新账户。OpenRig 的config.json中claude_code_integration.enabled设为false,仅用 Codex 作为前端,所有请求走 OpenRig 代理到本地模型。

  • 方案二:降级到 Codex CLI v1.x
    v1.x 版本不强制检查组织订阅。执行:

    npm install -g codex@1.12.0 npx codex --version # 确认输出 1.12.0

    然后在settings.json中设置codex.proxyUrl为 OpenRig 地址。v1.x 的/responsesendpoint 与 v2.x 兼容,OpenRig 代理无需修改。

注意:方案二存在风险。Codex v1.x 已停止维护,某些新模型(如 Claude 3.5 Sonnet)可能无法调用。但对 DeepSeek-R1、Qwen2 等开源模型完全适用,且避开了所有组织策略检查。

5. 进阶应用:用 OpenRig 实现 Codex 多模型热切换与 Claude Code 本地模型调用

5.1 Codex 多模型热切换:无需重启服务的动态路由

OpenRig 的核心优势之一是支持 Codex 在运行时切换模型,且不中断现有会话。这依赖于其代理层的动态路由能力。

实现步骤:

  1. 在models.yaml中定义多个模型服务:

    default: deepseek-r1 services: deepseek-r1: type: llama.cpp endpoint: http://localhost:8081 # ... 其他配置 qwen2-7b: type: ollama endpoint: http://localhost:11434 model_name: qwen2:7b
  2. 启动所有服务:

    npm run model:start deepseek-r1 npm run model:start qwen2-7b
  3. 在 Codex 中,通过快捷键Ctrl+Shift+P→ 输入Codex: Switch Model→ 选择qwen2-7b。此时 Codex 会向 OpenRig 发送POST /api/v1/switch-model请求,OpenRig 更新内部路由表,后续/responses请求自动转发至http://localhost:11434/api/chat/completions。

技术原理:OpenRig 的代理中间件维护一个currentModel变量,/api/v1/switch-model接口只是原子性更新该变量。整个过程耗时 < 5ms,用户感知不到延迟。对比传统方案(修改settings.json+ 重启 Codex),效率提升 10 倍以上。

实操心得:热切换后,Codex 编辑器右下角会显示当前模型名称。若显示不更新,按Ctrl+R刷新 Codex 界面即可。这是 Codex 客户端的 UI 缓存问题,不影响实际请求路由。

5.2 Claude Code 调用 LMStudio 本地模型:突破官方限制的协议适配

Claude Code 官方只支持 Anthropic 自家模型,但 OpenRig 可以将其请求协议转换为 LMStudio 兼容格式。关键在于 OpenRig 的proxyLayer对messages字段的重写逻辑。

LMStudio 的/chat/completions接口要求:

{ "messages": [ {"role": "system", "content": "You are helpful."}, {"role": "user", "content": "Hi"} ], "temperature": 0.7, "max_tokens": 1024 }

而 Codex 的/responses请求是:

{ "messages": [ {"role": "user", "content": "Hi"} ], "model": "claude-3-haiku-20240307", "temperature": 0.7 }

OpenRig 的转换规则:

  • 自动插入 system message(从config.json的system_prompt字段读取,默认"You are a helpful AI assistant.")
  • 将model字段映射为 LMStudio 的model参数(需在models.yaml中配置lmstudio_model_id)
  • 添加max_tokens字段(从config.json的max_tokens字段读取,默认2048)

配置示例(config.json):

{ "lmstudio_integration": { "enabled": true, "endpoint":

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

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

立即咨询