跳转至

P3-6-2:官方 OmniRoute 模型核心接入

计划状态

  • 计划编号:P3-6-2
  • 所属阶段:阶段三:通用 AI Runtime MVP / P3-6 AI 免费层与来源目录
  • 当前状态:已完成(root 官方默认原生迁移、Provider 恢复、薄 Runtime、全链路和旧容器清理均已验收)
  • 前置记录:P3-6-1:AI 免费渠道发现器与免费池 已完成初始来源发现、Registry 基线、101 目录同步、80 个候选登记和两条短请求证据;其余候选试用保持暂停。
  • 本页职责:P3-6 的当前官方 OmniRoute 接入计划。只研究、部署和使用上游官方能力,不修改 OmniRoute 源码、不维护私有 Fork 或私有镜像。它不覆盖 P3-6-1 的历史事实;所有状态变化先追加计划历史,再更新本页和当前执行摘要。
  • 已完成研究入口:P3-6-2.0 OmniRoute 产品解剖与适配专题 已完成完整产品能力地图和匹配矩阵。当前只使用官方 npm 包、官方 Node 和官方 CLI/API,不修改源码、不维护 Fork、不构建私有镜像。

目标与架构决定

本计划采用一个正式运行方向,而非两套并行路由:当前生产使用官方 omniroute@3.8.49 原生 systemd 安装承接全部通用 Provider 模型核心;AgentMeshOS 只保留用户入口、Agent 协作、任务执行、业务闭环和全局可观测性外壳。

AgentMeshOS 外壳
  ├── Benson Console
  ├── AI Boss / Worker / Task Graph
  ├── Nomad / Storage / Evidence / Revenue / Alerts
  └── 系统级可观测性
          ↓ 私有内部接口
当前正式运行:官方 OmniRoute 模型核心
  ├── Provider / Model / Protocol / Auth
  ├── OAuth / API Key / connection management
  ├── quota / health / cooldown / fallback
  ├── upstream call events / usage / costs
  └── upstream sync

OmniRoute 不替代 AI Boss、Worker、任务图、Nomad 调度器或业务账本;其完整原版 UI 通过 omni.yohan.fun 的 admin-only 入口访问。Console 只展示非敏感概览和官方 Dashboard 入口,Nomad 仍是唯一调度器。

本次原生迁移状态

阶段 状态 证据
0 备份复核 已完成 本机完整未脱敏 TAR /backup/agentmeshos/omniroute-full-backup-20260802T123538Z.tar34,723,840 bytes、SHA-256 f612b4edec5d395ba9e37417c17eb4f743ae6e87e64eac0720735dcbe6a5e3d6;Cloudreve AgentMeshOS-长期/OmniRoute-Full-Raw-20260802T123538Z/ 公网 WebDAV 回读 TAR、TAR.GZ 和校验文件均与本机逐字节一致
1 101 原生隔离恢复 已完成并清理 官方 Node 24.18.0omniroute@3.8.49、包 SHA-256 7dc1ac03139dbf5652c2ddb878726ef7b9724404ca070f2b61e16f193461c58b;53/52、2 Combo、2 API Key、迁移 133、Live WS、SQLite 均通过
2 主节点原生安装 已完成 root 使用官方全局 npm 默认安装,系统 Node 22.23.0,正式数据目录 /root/.omniroute,loopback 与 systemd 均已落地;不使用专用用户、自定义版本软链接或容器兼容目录
3 生产 Provider 恢复 已完成 53 条连接、52 个 Provider、2 个 Combo、1 个高权限 API Key、633 项模型目录、aes-256-gcm、迁移 133、真实 Combo HTTP 200
4 Runtime 减法 已完成 Runtime v0.3.1 生产镜像 sha256:a524dea9c6b79d671292684f1dd28fc25e7c670d488a240f78b2b8986a13cda3 已部署;第二套 Provider Router、凭据/CRUD、模型目录、健康/冷却、Direct Provider 与 S3 依赖已删除,Runtime SQLite 迁移和回归通过
5 全链路 已完成 生产任务 14cba090339f4136 在 103 完成 Nomad、SQLite Artifact、Combo 回退、usage/latency/USD 成本、Boss 审核和清理;Runtime/OmniRoute 重启、只读 Console、受控失败告警和 101/103 凭据边界均通过
6 观察期 已取消 项目负责人确认无需等待 7 天;53/52、解密、重启、真实调用、Runtime 和公网入口均已完成即时验收
7 最终清理 已完成 旧 OmniRoute/Redis 容器、镜像、网络、兼容数据目录、自定义版本目录、旧环境和专用用户已删除;根分区实际释放约 4 GiB

Provider 正式数据位于 /root/.omniroute,不得随容器清理删除。完整迁移备份 /backup/agentmeshos/omniroute-root-native-20260802T191113Z 继续作为正式数据备份保留;旧容器资产与正式 Provider 数据是两个不同边界。

阶段 5 生产验收证据

  • 任务与 Artifact:任务 14cba090339f4136pcdell-103 完成;273 bytes JSON 写入 Runtime SQLite 独立 BLOB,数据库与导出回读 SHA-256 均为 86fa1c922d47171da3d561c67f5fd906744ec45b79316a9190dd4354480cee99;任务为 completed,执行状态为 cleaned
  • Combo 回退:OmniRoute call_logs 的同一 correlation_id=4055a917-dd39-4f05-8d31-dc5696591c63 先记录 AgentRouter 403,再记录 Mistral 200;两条记录分别带对应 combo_step_idcombo_execution_key,因此回退来自 OmniRoute 原始调用事实,不由 Runtime 推断。
  • 模型与成本:批处理分析使用 mistral / devstral-latest99/98/197 tokens、USD 0.0002356000、Runtime latency 6655ms;Boss 自动审核记录 105/644/749 tokens、USD 0.0013300000。Runtime 没有精确人民币换算时保持 cost_precision_recorded=false
  • 失败与告警:受控不存在模型请求 controlled_failure_20260802T171802Z 返回 Runtime HTTP 502;Runtime 只持久化 OmniRouteError 类型,HMAC 告警进入全局告警库后以事件 de52a730-48dd-4c40-8ccb-be4170af0fe2 完成测试收口,未保存凭据或上游正文,生产健康和 53/52 基线未变化。
  • 重启与入口:OmniRoute 和 Runtime 重启后分别恢复 healthy / ok;OmniRoute API/UI 只监听 127.0.0.1:39180,Live WS 只监听 127.0.0.1:39182,Runtime 仅经 UFW 限制的 172.30.70.1:39181 私有 socket 访问;omni.yohan.funconsole.yohan.fun 的未认证公网请求继续进入登录保护。
  • Worker 边界:101/103 当前均持有同一固定 Worker 镜像 sha256:844da7948f2a777f75ffa78166e6e0d46ad93323273e43103b668afea7fa7329,运行用户为 10001:10001,镜像环境不含 Runtime、OmniRoute、Provider、Nomad 或 Storage 凭据。103 镜像漂移已通过 101 到 103 的有线 LAN 直传恢复,Tailnet 只承担控制命令。
  • Console 与发布:只读 Console 镜像为 sha256:a66dc9c43708e88423fa74ae314ab46efc83c1ab60d5d8572d281451c2452c6c,Docs 上一生产镜像为 sha256:f5019624404b3bebf36df22468981f5f209693f6ef7578687fdc6a7d3fe6a1b6;桌面与手机 Playwright 验收无横向/关键内容溢出,Provider 写控件为 0。

分布式底座接入声明

  • 接入结论:接入。
  • 使用层:主节点运行 AgentMeshOS Runtime Docker 和官方 OmniRoute 原生 systemd 服务;101/103 继续仅由 Nomad 执行已注册的无状态抓取、解析、去重、测试或计算 Job;最大 1 MiB 的 Worker JSON 回调证据进入 Runtime SQLite;Cloudreve 承载系统云盘与受限 WebDAV,Runtime 长期 Artifact 已由主节点 StorageAdapter 写入 AgentMeshOS-长期,Worker 不取得 WebDAV 凭据;Console 只承载非敏感状态和官方入口。
  • Adapter 归属:OmniRouteAdapter 位于主节点 Runtime 内部,负责受控请求、事件、用量、成本、健康和错误桥接;NomadAdapterStorageAdapterToolAdapterFeedbackAdapter 继续属于 Runtime,不能被 OmniRoute 或浏览器直接调用。
  • 执行映射:完整 OmniRoute 的模型连接、认证、路由、Provider 健康、Dashboard、API、Live WS 和调用事件在主节点原生服务中运行;nomad-batch 只运行注册的公开数据或隔离计算任务,不能传入任意 Shell、内网 URL 或外部写入动作。
  • 数据路径:Benson 会话、任务图、业务结果、最大 1 MiB 的 Worker JSON 回调证据和全局告警留在 AgentMeshOS;OmniRoute 只保存模型核心所需的受控连接、调用和健康状态。临时文件只在任务目录或 Cloudreve 的 临时目录,任务结束后清理;长期目录不自动删除已有内容。外部长期 Runtime Artifact 必须等待独立 WebDAV StorageAdapter 验收。
  • 凭据路径:OmniRoute 的 Provider/OAuth/连接凭据只在主节点 root-only .env 受控边界;Agent、Worker、MCP、Codex、浏览器和 Nomad Job 均不可读取。Console 通过既有 A-Auth 管理入口访问 UI,OmniRoute 的原生登录与其独立 SQLite 凭据继续保留;Runtime 只持有 runtime-call.env 中不含 admin/manage scope 的调用 Key,并只记录官方返回的脱敏路由事实。
  • 生命周期:Runtime 创建任务快照并调用模型核心;模型核心返回结构化事件;Runtime 记录任务、SQLite 回调证据、成本和告警。Nomad Job、任务临时文件和一次性回传凭据由 Runtime 清理,SQLite 任务证据保留;不使用审批、Run lease、epoch、fencing 或普通 TTL。
  • 验收证据:官方版本与 npm 包 SHA-256、原生 systemd、Dashboard/API/Live WS/CLI 健康、Console 可见性、Provider 数量、调用事件、用量/成本、健康/冷却、Nomad 回收、数据快照回滚和旧容器清理均须有真实证据。

上游依据与边界

固定研究基线为 OmniRoute release/v3.8.49 的提交 3b515d90b3848cfa49ce7d8f0f718bcde59cf507,许可证为 MIT。其 open-sse 包含 Provider Registry、Executor、Translator、Credential Gate、Cooldown 与 Plugin Manifest;完整静态元数据、可执行 Adapter 能力和实际运行资格必须分层保存,不能因当前 Runtime 只支持某一种协议而丢弃元数据。

2026-08-03 已完成 101 官方 npm 隔离恢复和主节点 root 官方默认原生迁移。当前版本为 3.8.49,系统 Node 为 22.23.0,数据目录为 /root/.omniroute;基线为 53 条连接、52 个 Provider、2 个 Combo、1 个高权限 API Key、迁移 133、SQLite quick_check=ok。公网 Dashboard、健康接口、Live WS、真实 Combo 调用、重启恢复和旧容器清理均已通过。

P3-6-2.1 官方版本评估与升级策略

结论与命名

P3-6-2.1 固定采用官方 npm 包、官方 Node 与官方发布说明作为唯一升级来源。每次升级先在隔离环境比较版本、迁移说明、Provider/模型清单、配置兼容性与回滚路径;通过完整数据副本恢复、既有入口和真实调用回归后,才更新生产全局 npm 包。发现上游更新不等于自动升级。

方案 可维护性 部署复杂度 上游同步 私有性 结论
官方 npm 原生安装 与上游发布一致,可使用 CLI 与宿主机能力 依据官方 release、npm 版本和包 SHA-256 评估 不维护源码副本 当前采用
官方镜像固定版本 回滚直接,但部分宿主机能力受容器边界限制 依据官方镜像 digest 评估 不维护源码副本 仅用于隔离评估,不是生产回滚路径
自建源码 Fork 或镜像 需要持续解决合并、构建与安全更新 容易漂移 增加维护面 排除

所有权、版本与分支契约

  1. 来源:只使用 OmniRoute 官方发布、官方 npm 包、官方 Node 和官方文档;Provider Token、OAuth、运行数据、.env、SQLite 和日志不得进入 Git。
  2. 固定版本:生产不使用浮动 latest 或无版本 npm 安装;每次部署记录官方版本与包 SHA-256。
  3. 评估:先记录升级候选的版本、迁移、依赖、Manifest 与配置差异,再在隔离环境完成构建或拉取、无凭据 Smoke、入口回归和回滚验证。
  4. 回滚:升级前对 /root/.omniroute 做一致性快照并记录当前 npm 版本;新版本未通过迁移或 Smoke 时停止服务、恢复已验证数据快照和上一官方 npm 版本,不修改 Provider 内容。

执行边界与 P3-6-2.1 验收

  • 本工作包只定义官方升级评估、版本固定、验证与回滚边界;不创建私有仓库、不改写上游源码、不接入 Token 或真实 Provider。
  • 完成证据是:官方来源、版本记录、升级差异检查、无凭据 Smoke、入口回归和回滚规则均已明确。

P3-6-2.2 最小运行基线(已完成历史)

选型与范围

方案 可维护性 部署与资源影响 结论
上游完整 Compose 与完整运行目标 与上游主线一致,更新和问题复现直接 需要容器网络并限制部分宿主机能力 历史生产形态,现仅作回滚
历史 runner-base 最小构建 曾用于验证基础启动、非 root、SQLite 与健康端点 不能证明完整产品能力,且不再是维护路径 仅保留历史证据
重写为 Python 模型网关 与现有 Runtime 同语言 重做上游 Translator/Executor/Manifest,维护成本与协议漂移风险高 排除

本工作包的历史基线为 101 runner-base 无凭据 Smoke,不是当前完整服务的最终部署形态。当前完整服务为官方 npm 原生 systemd,Dashboard/API/Live WS 只绑定主节点 loopback,并由既有 BaoTa 路径反代;不增加公网监听。

数据、凭据与资源

  • 以下 runner-base 约束仅是 2026-07-28 的历史隔离构建证据,不再用于后续部署:固定 Node/Next、SQLite、/api/monitoring/health 与非 root node 运行方式,禁止 runner-web、runner-cli、Redis、Qdrant、Bifrost、MITM、浏览器、CLI、Docker Socket、host 挂载和 Live WS。
  • 当时容器使用 PORT=39180DATA_DIR=/app/data/var/lib/agentmeshos/omniroute-core/data 挂载;该历史容器定义已退役,不能作为当前原生 systemd 配置恢复。
  • 当时 Docker 使用 /etc/agentmeshos/omniroute-core.env 注入 STORAGE_ENCRYPTION_KEY;当前原生服务使用官方默认 /root/.omniroute/.env,保持 root:root 0600。Token、OAuth、密钥、SQLite 和配置内容不得进入 Git、日志、任务事件或 Console 响应。
  • 当时容量快照只用于解释历史隔离构建条件,不代表当前资源。后续升级必须重新审计实时内存、Swap、磁盘和回滚材料,资源不足时停止安装,不得省略官方可选依赖。

生命周期、健康、备份与回滚

  1. 历史隔离构建曾固定 lockfile、源码 commit、镜像 digest 和依赖摘要;当前升级只评估官方 npm 发布、Node 支持范围和官方发布说明。
  2. 升级后必须同时使用本机健康探针、认证 Provider 数量、SQLite 完整性、真实协议 Smoke 和公网入口回归;不以 Dashboard 可打开作为唯一健康证据。
  3. SQLite 迁移前先停止原生服务、对 /root/.omniroute 做受控一致性备份并记录版本;迁移、启动、健康和协议 Smoke 通过后才完成切换。隔离测试不得导入未知 Provider Token。
  4. 失败时停止新服务、恢复上一官方 npm 版本与已验证数据快照,并核对 Runtime 仍使用 OmniRouteAdapter。回滚不修改 Provider 配置、任务图或 Nomad。
  5. P3-6-2.2 的历史证据为:固定基线、Dockerfile/启动定义、端口与数据卷检查、root-only 密钥文件形状、空 SQLite 迁移、健康检查、回滚镜像和无凭据协议 Smoke。当前不得据此恢复私有镜像或源码维护。

四态清单

工作包 当前状态 完成口径
P3-6-2.0 OmniRoute 产品解剖与适配专题 已完成(只读研究) 专题档案 已完成完整能力地图、源码/文档证据、AgentMeshOS 匹配矩阵和实施输入;不修改 OmniRoute 源码。
P3-6-2.1 官方版本评估与升级策略 已完成(策略与契约) 已明确官方 npm/Node 来源、固定版本、差异评估、完整副本恢复、入口回归与数据快照回滚边界。
P3-6-2.2 最小运行基线 已完成(历史隔离构建与无凭据烟测) 历史 101 runner-base 隔离构建和 /api/monitoring/health 无凭据烟测通过。该证据不构成当前私有镜像、源码 Fork 或部署路径。
P3-6-2.3 官方原生服务与 Provider 恢复 已完成 101 使用官方 Node 24.18.0 与 omniroute@3.8.49 完成隔离恢复并清理;主节点原生 systemd 生产切换通过。当前为 53 条连接、52 个 Provider、2 个 Combo、1 个高权限 API Key、迁移 133、SQLite quick_check=ok,公网入口、Live WS 与真实 Combo 调用均正常。
P3-6-2.4 薄 Runtime 与 OmniRouteAdapter 已完成 已删除通用 ProviderRouter、Provider 凭据/CRUD、模型目录、健康/冷却、Direct Provider 和 S3 依赖;Boss/Worker 统一使用三个官方端点,Runtime v0.3.1 已完成生产部署、SQLite 迁移和全链路验收。
P3-6-2.5 Console 与候选目录收敛 已完成 Console 已删除 Provider 管理、密钥预览、模型刷新和免费池写操作,只展示非敏感 OmniRoute 概览与官方 Dashboard 入口;生产页面与桌面/手机 Playwright 已验收。
P3-6-2.6 官方升级与观察 已完成 官方升级与备份契约已固定;项目负责人取消 7 天等待,生产基线、解密、重启、真实调用、Runtime 和公网入口完成即时验收。
P3-6-2.7 Direct Provider 补充路径 已取消 通用模型调用统一进入官方 OmniRoute,不保留 Premium/Local 第二套 Router;未来真正不被官方覆盖的本地能力必须另立独立 Adapter 评估。
P3-6-2.8 全链路与最终清理 已完成 Boss/Worker/Combo/任务快照/usage/latency/业务成本/告警/重启/Console/凭据边界均已验证;旧容器资产已清理并释放约 4 GiB,Provider 正式数据和完整迁移备份保留。最大 1 MiB 的 Worker JSON 回调证据进入 Runtime SQLite,外部长期 Artifact 仍属独立工作包。

实施顺序与验收门槛

  1. P3-6-2.0、P3-6-2.1 和 P3-6-2.2 的研究、官方升级策略与历史最小烟测已完成;P3-6-2.3 已完成 101 官方 npm 隔离恢复和主节点原生生产切换。
  2. P3-6-2.4 至 P3-6-2.5 的薄 Runtime、官方响应事实桥接、只读 Console 和远程镜像已完成。
  3. P3-6-2.8 的 Boss/Worker/Combo/任务快照/usage/latency/成本/告警/重启/Console/凭据边界全链路已通过。
  4. P3-6-2.6 的升级契约已固定,7 天等待按项目负责人决定取消;生产即时验收已经通过。
  5. P3-6-2.8 的旧容器清理已完成;P3-6-2.7 已取消,不得恢复第二套 Direct Provider Router。

每一项进入“已完成”必须具备代码、测试和运行态证据。任何 Provider 失败只记录错误和告警,不自动篡改模型、密钥或 Provider 配置;没有已验证恢复 Handler 时,AI Boss 只诊断并给出文字化下一步建议。

明确不做

  • P3-6-2.3 不裁剪官方包内的 Dashboard、API、Live WS、CLI、Provider 或协议能力,也不重写为第二个 Router;当前官方默认原生运行不依赖独立 Redis 容器。
  • 不新增公网端口、第二调度器、审批中心或独立的对外 Console;完整 OmniRoute UI 只作为既有 console.yohan.fun 的 admin-only 工作区视图。
  • 不将 OmniRoute SQLite 或任务机制替换为 Benson Console、AgentMeshOS 任务图、全局告警或业务账本;两者在完整运行验证期间并存。
  • 不允许 Worker、MCP、Codex、模型上下文或浏览器读取 Provider、Nomad、Storage、Docker、SSH 或主机凭据。
  • 不自动合并上游、自动部署更新或把上游声明当作 AgentMeshOS 已验证能力。

计划出口

P3-6-2 的出口不是拥有源码副本,而是官方 OmniRoute 在不破坏 AgentMeshOS 外壳边界的前提下,完成 root 官方默认原生部署、薄 Runtime、统一事件与成本桥接、官方升级评估、真实端到端验收和旧容器清理。该出口已经达到,阶段三可继续 P3-7 多 Agent 编排。

薄 Runtime 减法清单(架构目标)

OmniRoute 是唯一 Provider/模型核心后,Runtime 的实现按以下顺序减法,所有删除都必须先有真实回归证据:

Runtime 现有能力 目标归属 处理方式
ProviderRouter 的 Provider/Combo/回退实现 OmniRoute 已从 Runtime 删除,Boss/Worker 统一调用 RuntimeModelGateway
provider_configsprovider_modelsprovider_role_routes OmniRoute + Runtime 任务快照 Runtime 启动迁移删除旧表;任务只保存 OmniRoute 模型策略
free_ai_sources 的运行时健康/冷却/路由状态 OmniRoute 健康/用量 + Runtime 候选目录 已删除密钥、部署、健康、冷却、优先级和回退字段,只保留研究元数据与检查证据
Runtime secret box 与 Provider OAuth/Token 刷新 OmniRoute 已删除 secret box、密钥 CRUD 和 cryptography 依赖
Runtime 模型目录请求 OmniRoute /v1/models 已删除按 Provider Base URL 的目录探针,只保留官方目录读取
Runtime Provider 成本账本 Runtime 业务成本 输入改为 OmniRoute usage/route facts;保留人民币成本、任务成本、收入和净收益,不保存第二份 Provider 原始账本
OpenAIAgentsProvider 通用 Direct Provider 路径 OmniRoute 已删除实现与 openai-agents 依赖,不再保留默认 Direct 路径

迁移门槛

  1. OmniRoute Provider API、Manifest、usage、健康和 Combo 能力先形成只读桥接。
  2. Boss/Worker 全部切换到 OmniRouteAdapter,完成任务快照、事件、成本和告警回归。
  3. 连续回归确认无 Runtime 自有 Provider 凭据读写和通用回退调用后,才删除重复表、Router 分支和 Direct Provider 默认路径。
  4. 任何删除前保留 Runtime 数据库备份和可回滚版本;不得因架构目标直接删除生产数据。