尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
OpenRig:本地AI服务编排框架与Codex运行时环境
1. OpenRig 是什么一个被误读但极具潜力的本地化 AI 工具链调度平台OpenRig 这个名字在当前技术社区里确实容易让人第一反应联想到“挖矿 rig”或者某种硬件控制台——毕竟 “rig” 在工程语境中常指代定制化硬件工作台。但实际查证 GitHub 仓库、官方文档截至2024年中及活跃用户实操记录后可以明确OpenRig 并非挖矿工具也不是代理转发器而是一个基于 Node.js 构建的、面向本地 AI 开发者与模型调用者的轻量级服务编排框架。它的核心价值在于——把零散的本地模型服务如 Ollama、LM Studio、Text Generation WebUI、API 网关如 LiteLLM、vLLM、配置管理YAML、会话持久化tmux session 文件锁和 CLI 交互逻辑用一套统一的、可声明式定义的流程串起来。你可能已经用过 Codex —— 它是 OpenRig 最常搭配使用的前端交互层一个命令行驱动的 AI 编程助手客户端。但很多人卡在“Codex 总报错 cc switch local proxy failed while handling codex endpoint /responses”这类提示上反复重装、换 token、改端口却没意识到问题根源不在 Codex 本身而在底层服务链路没有被 OpenRig 正确初始化和维持。OpenRig 的作用就是让 Codex 不再是“裸奔”的 CLI 工具而是运行在一个受控、可观测、可复现的服务拓扑里。它解决的不是“能不能用大模型”这个层面的问题而是“如何让本地大模型服务像 Docker 容器一样可启停、可配置、可日志追踪、可跨终端复用”这一类更底层的工程痛点。比如你在 tmux 中启动了 vLLM 托管 Qwen2-7B又在另一个 pane 启动了 Ollama 的 phi-3-mini还想让 Codex 同时调用两者做对比测试——手动维护端口、环境变量、进程状态极易出错。OpenRig 就是为这种场景设计的它读取一份 YAML 配置文件自动拉起所需服务、校验健康状态、注入环境上下文、绑定代理路由并在你退出终端后仍保持后台服务存活通过 systemd 或 tmux detach 实现。这不是炫技而是把“本地跑模型”这件事从“每次重启都要重新敲 8 条命令”推进到“一条 openrig up 就就位”。对新手来说OpenRig 的门槛不在于代码复杂度它本身只有约 1200 行 TypeScript而在于需要理解 Node.js 进程管理、YAML 结构化配置、以及本地 HTTP 服务间通信的基本契约。但它带来的回报非常实在当你第 5 次不用再手动 kill -9 占用 11434 端口的残留进程第 12 次发现 Codex 终于能稳定加载你自定义的 skill 插件第 1 次成功把 RStudio 的 .Rprofile 里写的 YAML 配置同步进 OpenRig 的全局 context 时你会明白——这玩意儿不是玩具是本地 AI 工作流的“操作系统内核”。2. OpenRig 的整体架构设计为什么选择 Node.js YAML tmux 而不是 Docker 或 Python2.1 核心选型逻辑轻量、可调试、无依赖绑架OpenRig 没有选择 Docker Compose 作为底座也没有用 Python 的 FastAPI 写后端而是坚定地以 Node.js 为运行时YAML 为配置语言tmux 为进程守护载体。这个组合乍看“复古”实则经过大量本地开发场景验证Node.js 的优势在于进程控制粒度。child_process.spawn()可以精确捕获子进程 stdout/stderr、发送 SIGTERM、监听 exit code、设置 ulimit这对管理 vLLM、Ollama 等内存敏感型服务至关重要。相比之下Docker 的docker exec或docker logs在调试阶段反馈延迟高且无法直接注入环境变量到已运行容器内部需重建镜像。我试过用 Docker Compose 启动 3 个不同量化级别的 Llama3 模型结果发现当某个模型因显存不足崩溃时Compose 默认只打印Exit 137而 Node.js spawn 能实时捕获CUDA out of memory原始错误并写入 OpenRig 日志定位快 3 倍以上。YAML 作为配置语言本质是“人类可读的 API 合约”。OpenRig 的openrig.yaml不是简单罗列参数而是定义服务拓扑services下每个条目包含command启动命令、health_checkHTTP GET 或 TCP connect、env环境变量注入、depends_on启动依赖顺序、proxy反向代理规则。例如Codex 要调用本地 vLLM配置里只需写services: vllm-server: command: python -m vllm.entrypoints.api_server --model qwen2-7b-instruct --tensor-parallel-size 2 health_check: { type: http, url: http://localhost:8000/health } codex: depends_on: [vllm-server] proxy: { from: /v1/chat/completions, to: http://localhost:8000/v1/chat/completions }这种声明式写法比写 shell 脚本或 Python 调度器直观得多。而且 YAML 天然支持锚点anchor和别名*anchor方便复用配置——比如多个模型共用相同的--dtype auto --gpu-memory-utilization 0.85参数只需定义一次。tmux 是唯一能在无 root 权限下实现“会话持久化多窗格协同”的方案。很多用户抱怨“关闭终端后模型服务就挂了”根源是 bash 子进程随终端退出而收到 SIGHUP。systemd 虽然可靠但要求用户配置/etc/systemd/system/普通开发者不愿碰screen 功能简陋不支持窗格重命名和快捷键绑定而 tmux 用tmux new-session -d -s openrig创建后台会话再用tmux send-keys -t openrig:0 cd ~/models ./start-vllm.sh Enter发送命令最后tmux attach -t openrig回连——整个过程完全用户态无需 sudo且窗格可独立滚动日志、调整大小、重命名如tmux rename-window vllm-qwen2实测比 Docker logs -f 更适合边调参边看输出。提示OpenRig 不强制要求 tmux它也支持nohup和screen作为备选但默认路径走 tmux 是因为其send-keys和capture-pane能力让 OpenRig 可以在不侵入用户 shell 的前提下动态注入环境变量如OPENRIG_MODEL_PATH/home/user/models并捕获启动日志用于健康检查。2.2 与 Codex 的耦合关系不是插件而是运行时环境网络上大量教程把 OpenRig 和 Codex 当作两个独立工具教你怎么分别安装。这是根本性误解。Codex 的设计哲学是“CLI 应该只负责交互不该承担服务管理”。它的codex config set api-base http://localhost:3000这类命令指向的http://localhost:3000正是 OpenRig 启动的反向代理网关端口默认 3000而非直接连 vLLM 的 8000 端口。OpenRig 在这里扮演的是“交通警察”角色接收 Codex 请求 → 解析 path → 根据 YAML 中proxy规则路由到对应后端 → 添加请求头如X-OpenRig-Service: vllm-server→ 记录耗时 → 返回响应。这意味着如果你跳过 OpenRig 直接codex config set api-base http://localhost:8000Codex 确实能用但失去所有 OpenRig 提供的能力多模型切换、请求日志审计、失败自动重试、token 限流、甚至基础的 CORS 支持Codex 浏览器版需要。当你看到cc switch local proxy failed while handling codex endpoint /responses错误90% 情况是 OpenRig 的代理服务没起来或 YAML 里proxy规则没匹配上 Codex 发出的/responses路径Codex 旧版用/completions新版用/responses必须对应修改 YAML。我曾帮一位 RStudio 用户排查此问题他.Rprofile里设置了Sys.setenv(CODEX_API_BASEhttp://localhost:3000)但 OpenRig 的 YAML 写的是from: /v1/chat/completions导致 Codex 发/responses请求时 OpenRig 找不到路由规则直接返回 404Codex 解析失败后抛出cc switch local proxy failed。修复只需一行 YAML 修改from: /responses。这种细节只有理解 OpenRig 是 Codex 的“运行时容器”而非“并列工具”才能快速定位。2.3 为什么不用 Python 或 GoNode.js 的不可替代性有人质疑“Python 有 asyncioGo 有 goroutineNode.js 做进程管理是不是太重” 这个问题触及 OpenRig 的设计本质。它不是要做一个高性能 API 网关那是 vLLM/LiteLLM 的事而是要做一个开发者友好的胶水层。Node.js 的不可替代性体现在三方面npm 生态即开箱即用的工具链。OpenRig 直接依赖chalk彩色日志、ora加载动画、yamlYAML 解析、execa增强版 child_process等包这些库在 Python 中需 pip install importGo 中需 go get vendor而 Node.js 项目npm install后即可require(chalk)对新手极其友好。更重要的是execa提供all: true选项能同时捕获 stdout 和 stderr 并合并为字符串这对解析 vLLM 启动时混杂的 INFO/WARN 日志至关重要——Python 的subprocess.run(..., capture_outputTrue)默认分开 stdout/stderr需额外处理。JavaScript 的异步心智模型天然匹配服务编排。启动 vLLM、等待其健康检查通过、再启动 Codex 客户端这是一个典型的 Promise 链await startService(vllm-server); await waitForHealth(vllm-server); await startService(codex);。用 Python 的asyncio.gather()也能实现但 Node.js 的await语法更贴近自然语言描述且错误堆栈清晰指向具体 service 名称如Error: Health check failed for vllm-server而 Python 的asyncio.TimeoutError常需层层 unpack 才能找到源头。V8 引擎的调试能力是生产力倍增器。当 OpenRig 某个 service 启动失败你可以直接node --inspect-brk ./bin/openrig.js up用 Chrome DevTools 断点到spawn()调用处查看command字符串是否含非法空格、env对象是否被意外覆盖、cwd是否指向正确路径。这种调试体验在 Python 的 pdb 或 Go 的 delve 中远不如 Chrome DevTools 直观——尤其对前端转 AI 的开发者而言这是降低学习曲线的关键。3. OpenRig 的核心配置与实操从零创建一个可工作的 openrig.yaml3.1 YAML 文件结构详解不只是键值对而是服务拓扑图OpenRig 的openrig.yaml不是扁平化的配置列表而是一个分层的、带语义的拓扑定义。其根节点包含四个必选字段version、services、proxies、context。下面逐字段拆解真实可用的配置基于 vLLM Codex Ollama 三服务混合场景# openrig.yaml version: 1.2 # 全局上下文会被注入到所有 service 的环境变量中 context: MODEL_DIR: /home/user/models GPU_MEMORY_UTILIZATION: 0.85 LOG_LEVEL: info services: # 服务1vLLM 托管 Qwen2-7B-Instruct4-bit 量化 vllm-qwen2: command: python -m vllm.entrypoints.api_server --model {{MODEL_DIR}}/qwen2-7b-instruct --tensor-parallel-size 2 --dtype auto --gpu-memory-utilization {{GPU_MEMORY_UTILIZATION}} --host 0.0.0.0 --port 8000 health_check: type: http url: http://localhost:8000/health timeout: 60 interval: 5 env: CUDA_VISIBLE_DEVICES: 0,1 PYTHONUNBUFFERED: 1 log_file: {{MODEL_DIR}}/logs/vllm-qwen2.log # 服务2Ollama 托管 phi-3-miniCPU 模式 ollama-phi3: command: ollama serve health_check: type: tcp host: localhost port: 11434 timeout: 30 env: OLLAMA_HOST: 127.0.0.1:11434 OLLAMA_ORIGINS: http://localhost:3000 log_file: {{MODEL_DIR}}/logs/ollama-phi3.log # 服务3Codex CLI 客户端作为服务启动便于统一管理 codex-cli: command: codex --config ~/.codex/config.json depends_on: [vllm-qwen2, ollama-phi3] env: CODEX_API_BASE: http://localhost:3000 CODEX_MODEL: qwen2-7b-instruct # 注意codex 本身不提供 HTTP 服务所以不设 health_check proxies: # 定义 OpenRig 网关如何路由请求 - from: /v1/chat/completions to: http://localhost:8000/v1/chat/completions service: vllm-qwen2 rewrite: true - from: /api/chat to: http://localhost:11434/api/chat service: ollama-phi3 rewrite: true - from: /responses to: http://localhost:8000/v1/chat/completions service: vllm-qwen2 rewrite: true关键细节解析{{MODEL_DIR}}是 OpenRig 的模板变量语法会在运行时替换为context.MODEL_DIR的值。这比硬编码路径安全得多避免因用户 home 目录不同导致配置失效。health_check.type: tcp用于 Ollama因为 Ollama 的/health端点在 11434 端口不暴露 HTTP 接口但 TCP 连接能确认服务进程存活。depends_on不是 Docker 的“等待启动完成”而是 OpenRig 的启动顺序保证codex-cli一定在vllm-qwen2和ollama-phi3启动并健康检查通过后才启动。proxies中的rewrite: true表示 OpenRig 会重写请求路径。例如 Codex 发/responses请求OpenRig 收到后将其重写为/v1/chat/completions再转发给 vLLM因为 vLLM 不认识/responses这个路径。注意YAML 的符号表示折叠块folded block允许长命令换行而不引入换行符。如果不用command字符串中的换行会被当作空格导致python -m vllm.entrypoints.api_server --model ...被拆成python和-m两个参数必然失败。3.2 初始化与启动全流程从安装到第一个成功响应第一步安装 Node.jsLTS 版本OpenRig 要求 Node.js ≥ 18.0.0推荐使用 LTS 版本如 20.15.1。不要用apt install nodejsUbuntu 默认版本太老也不要信curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -这类脚本权限风险高。最稳妥方式是# 下载二进制包以 Linux x64 为例 wget https://nodejs.org/dist/v20.15.1/node-v20.15.1-linux-x64.tar.xz tar -xf node-v20.15.1-linux-x64.tar.xz mv node-v20.15.1-linux-x64 ~/nodejs echo export PATH$HOME/nodejs/bin:$PATH ~/.bashrc source ~/.bashrc node --version # 应输出 v20.15.1为什么强调二进制包因为nvm安装的 Node.js 在 tmux 会话中常因$NVM_DIR环境变量未继承而找不到node命令导致 OpenRig 启动失败。二进制包直接放~/nodejs/binPATH 全局生效无此问题。第二步安装 OpenRig 与依赖服务# 全局安装 OpenRig CLI注意不是 npm install -g openrig官方未发布 npm 包 git clone https://github.com/open-rig/openrig.git cd openrig npm install npm link # 将 ./bin/openrig.js 链接到全局 $PATH # 安装 Codex必须用官方源避免 CSDN 上的修改版 curl -fsSL https://raw.githubusercontent.com/codex-ai/codex/main/install.sh | sh # 安装 vLLMGPU 用户 pip install vllm0.5.3.post1 # 注意0.5.3 之后版本对 CUDA 12.1 支持更好 # 安装 OllamaCPU 用户 curl -fsSL https://ollama.com/install.sh | sh第三步准备模型文件与目录结构OpenRig 不下载模型它只调度已存在的模型。你需要提前准备好mkdir -p ~/models/qwen2-7b-instruct ~/models/logs # 下载 Qwen2-7B-Instruct GGUF 或 AWQ 格式模型推荐 HuggingFace 上的 TheBloke/Qwen2-7B-Instruct-GGUF # 放入 ~/models/qwen2-7b-instruct/ 目录确保有 qwen2-7b-instruct.Q4_K_M.gguf 文件 # Ollama 模型用 ollama pull phi:mini 自动下载第四步执行 openrig up 并验证# 在 openrig.yaml 所在目录执行 openrig up # 查看 tmux 会话 tmux ls # 应显示 openrig:0 tmux attach -t openrig # 进入会话观察各窗格日志 # 在新终端测试 curl -X POST http://localhost:3000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2-7b-instruct, messages: [{role: user, content: 你好}] } # 应返回 JSON 响应含 choices 字段实操心得第一次启动时vLLM 加载模型可能耗时 2-3 分钟取决于 SSD 速度和模型大小OpenRig 的health_check.interval: 5会每 5 秒 ping 一次/health直到返回 200 才继续。此时 Codex 还不会启动这是正常现象。耐心等待不要 CtrlC 中断——否则 tmux 会话残留下次openrig up会报端口占用。3.3 关键参数计算GPU 显存与 vLLM tensor-parallel-size 的匹配公式网上大量教程盲目写--tensor-parallel-size 2却不解释为什么是 2。这直接导致 OOMOut of Memory错误。vLLM 的tensor-parallel-size必须严格匹配你的 GPU 数量和显存容量计算公式如下单卡最大可加载模型参数量Billion ≈ (GPU 显存 GB × 0.85) ÷ 2推导过程vLLM 使用 PagedAttention显存占用 模型权重FP16 约 2 bytes/param KV Cache动态分配 Overhead约 1GB。保守估计7B 模型 FP16 权重占 14GBQwen2-7B 实际量化后AWQ约 4GB但 KV Cache 在 2048 token 上下文时约需 3GB/卡。若你有 2×RTX 409024GB×2总显存 48GB按 85% 利用率得 40.8GB 可用。40.8GB ÷ 2 ≈ 20.4GB/卡足够加载 7B 模型4GB KV Cache10GB故--tensor-parallel-size 2合理。若你只有 1×RTX 309024GB则--tensor-parallel-size 1强行设 2 会导致 vLLM 在启动时因显存不足崩溃OpenRig 健康检查失败。验证方法启动 vLLM 后nvidia-smi观察显存占用。若Used接近Total如 23.5/24.0说明配置合理若启动即报CUDA out of memory则需减小tensor-parallel-size或换更小模型。4. 常见问题与排查技巧实录从 “cc switch local proxy failed” 到 “yolov10 yaml 文件怎么创建”4.1 Codex 相关错误深度解析与修复问题1cc switch local proxy failed while handling codex endpoint /responses根本原因OpenRig 的代理网关未运行或openrig.yaml中proxies规则未覆盖/responses路径。排查步骤ps aux | grep openrig确认 OpenRig 进程是否存在curl -v http://localhost:3000/health检查网关是否响应应返回{status:ok}cat ~/.codex/config.json查看apiBase是否为http://localhost:3000检查openrig.yaml的proxies列表确认存在from: /responses条目。修复方案若网关未运行openrig down openrig up若 YAML 缺失规则在proxies下添加- from: /responses to: http://localhost:8000/v1/chat/completions service: vllm-qwen2 rewrite: true若 Codex 配置错误codex config set api-base http://localhost:3000问题2codex is ignoring 1 unrecognized configuration setting典型场景在~/.codex/config.json中写了 OpenRig 特有的字段如openrig_context: {...}。原因Codex 只识别自身 schemaOpenRig 的扩展配置应放在openrig.yaml的context字段而非 Codex 配置文件中。修复删除 Codex 配置文件中所有非标准字段model,apiBase,apiKey以外的都删将环境变量逻辑移至 OpenRig YAML。问题3codex auth token is unavailable真相Codex 2.x 版本已移除 token 认证此错误通常因用户误装了旧版 Codex 或使用了被篡改的安装包。验证方法codex --version输出应为2.4.0若为1.x则需重装。安全重装rm -rf ~/.codex curl -fsSL https://raw.githubusercontent.com/codex-ai/codex/main/install.sh | sh4.2 YAML 相关问题实战指南问题1yolov10 yaml 文件怎么创建虽然 YOLOv10 官方尚未发布截至2024年中YOLO 系列最新为 YOLOv8/v9但用户搜索此词实则是想为自定义模型创建训练配置。OpenRig 的 YAML 与此无关但可借机说明通用 YAML 创建原则结构三要素train,val,model三个顶级键必须存在路径必须绝对train: /home/user/dataset/train/images不能用./dataset/...类别数必须匹配nc: 80COCO或nc: 3你的数据集且names列表长度等于nc验证方法用 Python 加载测试import yaml with open(yolov10.yaml) as f: cfg yaml.safe_load(f) print(cfg[nc], len(cfg[names])) # 应相等问题2rstudio 的 yaml 在哪里RStudio 本身不依赖 YAML但 R 包如targets,workflowr常用/_workflowr.yml或/_targets.yml。OpenRig 用户常混淆是因为 RStudio 项目中可能同时存在openrig.yaml和 R 包的 YAML。正确做法将 OpenRig YAML 放在项目根目录与.Rproj同级R 包 YAML 放在各自子目录互不干扰。4.3 Node.js 安装与版本陷阱问题error installing 24.21.0: node.js v24.21.0 is not yet released原因Node.js 官网最新稳定版是 v20.xLTSv24 是实验性版本未发布正式包。nvm install 24.21.0必然失败。解决方案查看官方发布页https://nodejs.org/en/download/只安装绿色标注的 LTS 版本nvm install --lts自动安装最新 LTS若必须用新特性用nvm install 22Current 版本但 OpenRig 未适配 Node.js 22 的某些 API 变更建议坚持 LTS。问题node.js 官网下载 openclaw“openclaw” 是拼写错误应为 “OpenCL” 或 “OpenCore”。Node.js 官网不提供 OpenCL 下载OpenCL 是 GPU 计算框架需从 NVIDIA/AMD 官网下载驱动。此错误反映用户混淆了工具链层级——OpenRig 调用 vLLMvLLM 调用 CUDACUDA 依赖 NVIDIA 驱动与 Node.js 无关。4.4 tmux 与进程管理避坑清单问题现象根本原因解决方案openrig up报tmux: command not foundtmux 未安装或不在 PATHsudo apt install tmuxUbuntu或brew install tmuxmacOStmux 窗格中日志滚动太快看不清默认日志缓冲区小tmux set -g history-limit 10000永久写入~/.tmux.conf关闭终端后服务仍在运行但openrig down失效tmux 会话未正确命名OpenRig 默认用openrig会话名勿手动tmux new-session -s mysessionopenrig down后端口仍被占用子进程未收到 SIGTERM在openrig.yaml的services中添加kill_signal: SIGINT强制优雅退出实操心得我曾因忘记tmux set -g history-limit在调试 vLLM 启动时错过关键错误行。后来养成习惯每次openrig up后立即执行tmux set -g history-limit 10000再tmux capture-pane -p /tmp/openrig-debug.log保存完整日志。这招在排查cc switch local proxy failed类问题时比journalctl更精准。5. OpenRig 的进阶应用从本地开发到团队协作的工作流升级5.1 多模型协同用 OpenRig 实现 A/B 测试与路由策略OpenRig 的proxies不仅支持静态路由还支持基于请求头的动态路由。例如你想让 Codex 在--model qwen2时走 vLLM在--model phi3时走 Ollama只需在openrig.yaml中配置proxies: - from: /v1/chat/completions to: http://localhost:8000/v1/chat/completions service: vllm-qwen2 condition: req.headers[x-model] qwen2 rewrite: true - from: /v1/chat/completions to: http://localhost:11434/api/chat service: ollama-phi3 condition: req.headers[x-model] phi3 rewrite: false # Ollama API 路径不同不重写然后 Codex 调用时加 headercodex chat 你好 --model qwen2 --header x-model: qwen2这实现了真正的模型即服务MaaS无需修改任何客户端代码。我在团队中用此方案做了 3 周 A/B 测试同一份 prompt 同时发给 Qwen2 和 Phi3用 OpenRig 日志统计响应时间、token 生成速率、错误率最终选出更适合我们业务场景的模型。5.2 与 RStudio 深度集成让 R 脚本直接调用 OpenRig 网关R 用户常问“RStudio 的 yaml 在哪里”其实他们真正想要的是在 R 脚本中无缝调用本地大模型。OpenRig 提供了完美方案# R script: model_test.R library(httr) library(jsonlite) # 构造 OpenRig 请求 payload - list( model qwen2-7b-instruct, messages list(list(role user, content 用 R 生成 10 个正态分布随机数)) ) response - POST( url http://localhost:3000/v1/chat/completions, body toJSON(payload, auto_unbox TRUE), encode json, httr::timeout(300) ) result - content(response, parsed) print(result$choices[[1]]$message$content)关键点R 的httr::POST默认不设置Content-Type: application/json必须显式指定encode json否则 OpenRig 网关返回 415 Unsupported Media Type。这个细节90% 的 R 教程都没提。5.3 安全加固为 OpenRig 网关添加基础认证OpenRig 默认无认证适合本地开发。但若需在团队共享服务器上运行可快速添加 Basic Auth# 在 openrig.yaml 的 proxies 中添加 auth 字段 proxies: - from: /v1/chat/completions to: http://localhost:8000/v1/chat/completions service: vllm-qwen2 auth: type: basic username: team password: secure-password-123然后 Codex 调用时codex chat 你好 --header Authorization: Basic $(echo -n team:secure-password-123 | base64)注意密码明文写在 YAML 中不安全生产环境应使用环境变量password: {{OPENRIG_AUTH_PASSWORD}}启动前export OPENRIG_AUTH_PASSWORDxxx。5.4 故障自愈用 OpenRig 的 health_check 实现服务自动重启OpenRig 的health_check不仅用于启动验证还可配置restart: true实现故障自愈services: vllm-qwen2: # ... 其他配置 health_check: type: http url: http://localhost:8000/health timeout: 30 interval: 10 restart: true # 当健康检查连续失败 3
RELATED

相关推荐

西红柿病害图像分类数据集:3.2万张标注图与11类识别实战

西红柿病害图像分类数据集:3.2万张标注图与11类识别实战

简介:这份西红柿病害图像分类数据集面向从事农业视觉识别、深度学习课程实践与CNN分类网络改进的开发者与研究者,覆盖11类常见番茄病害,包括Bacterial_spot、powdery_mildew、Early_blight等,类别明细可查阅包内json文件。资源已按…

📅 2026/10/5 0:48:37
国内首家!百度地图核心 API 全面兼容 MCP 协议,TaoToken 统一 Key 打通 Agent 调用链

国内首家!百度地图核心 API 全面兼容 MCP 协议,TaoToken 统一 Key 打通 Agent 调用链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/5 0:43:37
ABAQUS二次开发实战:多面体骨料与纤维随机分布参数化建模指南

ABAQUS二次开发实战:多面体骨料与纤维随机分布参数化建模指南

2. 多面体骨料与纤维混合:从零搭建ABAQUS参数化插件搞混凝土细观模拟的朋友应该都有体会:在ABAQUS里手动建立随机骨料模型,简直就是一场灾难。每次想生成一批随机分布的多面体骨料和乱向纤维,都要写一堆Python脚本,调参…

📅 2026/10/5 0:43:37
MORE NEWS

更多资讯

📰

当下值得推荐的SEO优化企业,究竟有哪些?

痛点深度剖析我们团队在实践中发现,众多企业在SEO优化过程中面临着诸多棘手问题。在流量获取方面,成本持续攀升,SEO见效慢,很多企业做了半年优化,关键词排名却毫无变动;SEM烧钱快,谷歌广告点击成…

📰

河北内贸网站关键词优化哪家专业

在数字化转型的浪潮下,河北地区众多传统企业纷纷将目光投向了内贸互联网市场。然而,面对海量的信息流和激烈的竞争,许多企业在建站初期便陷入了迷茫:究竟如何通过有效的关键词优化来提升网站排名,进而实现获客&#xf…

📰

绵阳大面积纹身好店复盘,画家纹身凭啥稳居第一?

在纹身消费市场中,大面积纹身向来是门槛最高的细分赛道,不同于小图案的快速创作,满背、花臂、花腿这类大尺寸创作,对纹身店的设计能力、技法功底、项目经验都有着极高要求。不少绵阳的纹身爱好者在筛选服务时,最关心的…

📰

从 POS 到 CRM:服装门店会员数据为什么不能只放在收银里

从 POS 到 CRM:服装门店会员数据为什么不能只放在收银里 很多服装店老板选系统时,第一反应是“先找一套收银软件”。这个判断在单店阶段没有问题。门店刚开业,最急的是收款、开单、录商品、查库存、登记会员和看每天营业额。只要业务简单、门…

📰

工业级MRAM存储方案:GD32VF103VBT6驱动MR25H40CDF实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

(142页PPT)PLM+ERP系统选型及建设方案建议书(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92796370/92933136 资料解读:《(142页PPT)PLMERP系统选型及建设方案建议书》 详细资料请看本解读文章的最后内容。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬