# OmniRoute — Dashboard Features Gallery (中文 (简体)) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/FEATURES.md) · 🇪🇹 [am](../../../am/docs/guides/FEATURES.md) · 🇸🇦 [ar](../../../ar/docs/guides/FEATURES.md) · 🇦🇿 [az](../../../az/docs/guides/FEATURES.md) · 🇧🇬 [bg](../../../bg/docs/guides/FEATURES.md) · 🇧🇩 [bn](../../../bn/docs/guides/FEATURES.md) · 🇧🇦 [bs](../../../bs/docs/guides/FEATURES.md) · 🇨🇿 [cs](../../../cs/docs/guides/FEATURES.md) · 🇩🇰 [da](../../../da/docs/guides/FEATURES.md) · 🇩🇪 [de](../../../de/docs/guides/FEATURES.md) · 🇬🇷 [el](../../../el/docs/guides/FEATURES.md) · 🇪🇸 [es](../../../es/docs/guides/FEATURES.md) · 🇪🇪 [et](../../../et/docs/guides/FEATURES.md) · 🇮🇷 [fa](../../../fa/docs/guides/FEATURES.md) · 🇫🇮 [fi](../../../fi/docs/guides/FEATURES.md) · 🇫🇷 [fr](../../../fr/docs/guides/FEATURES.md) · 🇮🇪 [ga](../../../ga/docs/guides/FEATURES.md) · 🇮🇳 [gu](../../../gu/docs/guides/FEATURES.md) · 🇳🇬 [ha](../../../ha/docs/guides/FEATURES.md) · 🇮🇱 [he](../../../he/docs/guides/FEATURES.md) · 🇮🇳 [hi](../../../hi/docs/guides/FEATURES.md) · 🇭🇷 [hr](../../../hr/docs/guides/FEATURES.md) · 🇭🇺 [hu](../../../hu/docs/guides/FEATURES.md) · 🇦🇲 [hy](../../../hy/docs/guides/FEATURES.md) · 🇮🇩 [id](../../../id/docs/guides/FEATURES.md) · 🇳🇬 [ig](../../../ig/docs/guides/FEATURES.md) · 🇮🇹 [it](../../../it/docs/guides/FEATURES.md) · 🇯🇵 [ja](../../../ja/docs/guides/FEATURES.md) · 🇬🇪 [ka](../../../ka/docs/guides/FEATURES.md) · 🇰🇭 [km](../../../km/docs/guides/FEATURES.md) · 🇮🇳 [kn](../../../kn/docs/guides/FEATURES.md) · 🇰🇷 [ko](../../../ko/docs/guides/FEATURES.md) · 🇱🇹 [lt](../../../lt/docs/guides/FEATURES.md) · 🇱🇻 [lv](../../../lv/docs/guides/FEATURES.md) · 🇮🇳 [ml](../../../ml/docs/guides/FEATURES.md) · 🇮🇳 [mr](../../../mr/docs/guides/FEATURES.md) · 🇲🇾 [ms](../../../ms/docs/guides/FEATURES.md) · 🇲🇹 [mt](../../../mt/docs/guides/FEATURES.md) · 🇲🇲 [my](../../../my/docs/guides/FEATURES.md) · 🇳🇵 [ne](../../../ne/docs/guides/FEATURES.md) · 🇳🇱 [nl](../../../nl/docs/guides/FEATURES.md) · 🇳🇴 [no](../../../no/docs/guides/FEATURES.md) · 🇮🇳 [or](../../../or/docs/guides/FEATURES.md) · 🇮🇳 [pa](../../../pa/docs/guides/FEATURES.md) · 🇵🇭 [phi](../../../phi/docs/guides/FEATURES.md) · 🇵🇱 [pl](../../../pl/docs/guides/FEATURES.md) · 🇵🇹 [pt](../../../pt/docs/guides/FEATURES.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/FEATURES.md) · 🇷🇴 [ro](../../../ro/docs/guides/FEATURES.md) · 🇷🇺 [ru](../../../ru/docs/guides/FEATURES.md) · 🇱🇰 [si](../../../si/docs/guides/FEATURES.md) · 🇸🇰 [sk](../../../sk/docs/guides/FEATURES.md) · 🇸🇮 [sl](../../../sl/docs/guides/FEATURES.md) · 🇷🇸 [sr](../../../sr/docs/guides/FEATURES.md) · 🇸🇪 [sv](../../../sv/docs/guides/FEATURES.md) · 🇰🇪 [sw](../../../sw/docs/guides/FEATURES.md) · 🇮🇳 [ta](../../../ta/docs/guides/FEATURES.md) · 🇮🇳 [te](../../../te/docs/guides/FEATURES.md) · 🇹🇭 [th](../../../th/docs/guides/FEATURES.md) · 🇹🇷 [tr](../../../tr/docs/guides/FEATURES.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/FEATURES.md) · 🇵🇰 [ur](../../../ur/docs/guides/FEATURES.md) · 🇺🇿 [uz](../../../uz/docs/guides/FEATURES.md) · 🇻🇳 [vi](../../../vi/docs/guides/FEATURES.md) · 🇳🇬 [yo](../../../yo/docs/guides/FEATURES.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/FEATURES.md) --- 🌐 **语言:** 🇺🇸 [English](./FEATURES.md) | 🇪🇹 [አማርኛ](../i18n/am/docs/guides/FEATURES.md) | 🇸🇦 [العربية](../i18n/ar/docs/guides/FEATURES.md) | 🇦🇿 [Azərbaycan dili](../i18n/az/docs/guides/FEATURES.md) | 🇧🇬 [Български](../i18n/bg/docs/guides/FEATURES.md) | 🇧🇩 [বাংলা](../i18n/bn/docs/guides/FEATURES.md) | 🇧🇦 [Bosanski](../i18n/bs/docs/guides/FEATURES.md) | 🇨🇿 [Čeština](../i18n/cs/docs/guides/FEATURES.md) | 🇩🇰 [Dansk](../i18n/da/docs/guides/FEATURES.md) | 🇩🇪 [Deutsch](../i18n/de/docs/guides/FEATURES.md) | 🇬🇷 [Ελληνικά](../i18n/el/docs/guides/FEATURES.md) | 🇪🇸 [Español](../i18n/es/docs/guides/FEATURES.md) | 🇪🇪 [Eesti](../i18n/et/docs/guides/FEATURES.md) | 🇮🇷 [فارسی](../i18n/fa/docs/guides/FEATURES.md) | 🇫🇮 [Suomi](../i18n/fi/docs/guides/FEATURES.md) | 🇫🇷 [Français](../i18n/fr/docs/guides/FEATURES.md) | 🇮🇪 [Gaeilge](../i18n/ga/docs/guides/FEATURES.md) | 🇮🇳 [ગુજરાતી](../i18n/gu/docs/guides/FEATURES.md) | 🇳🇬 [Hausa](../i18n/ha/docs/guides/FEATURES.md) | 🇮🇱 [עברית](../i18n/he/docs/guides/FEATURES.md) | 🇮🇳 [हिन्दी](../i18n/hi/docs/guides/FEATURES.md) | 🇭🇷 [Hrvatski](../i18n/hr/docs/guides/FEATURES.md) | 🇭🇺 [Magyar](../i18n/hu/docs/guides/FEATURES.md) | 🇦🇲 [Հայերեն](../i18n/hy/docs/guides/FEATURES.md) | 🇮🇩 [Bahasa Indonesia](../i18n/id/docs/guides/FEATURES.md) | 🇳🇬 [Igbo](../i18n/ig/docs/guides/FEATURES.md) | 🇮🇹 [Italiano](../i18n/it/docs/guides/FEATURES.md) | 🇯🇵 [日本語](../i18n/ja/docs/guides/FEATURES.md) | 🇬🇪 [ქართული](../i18n/ka/docs/guides/FEATURES.md) | 🇰🇭 [ខ្មែរ](../i18n/km/docs/guides/FEATURES.md) | 🇮🇳 [ಕನ್ನಡ](../i18n/kn/docs/guides/FEATURES.md) | 🇰🇷 [한국어](../i18n/ko/docs/guides/FEATURES.md) | 🇱🇹 [Lietuvių](../i18n/lt/docs/guides/FEATURES.md) | 🇱🇻 [Latviešu](../i18n/lv/docs/guides/FEATURES.md) | 🇮🇳 [മലയാളം](../i18n/ml/docs/guides/FEATURES.md) | 🇮🇳 [मराठी](../i18n/mr/docs/guides/FEATURES.md) | 🇲🇾 [Bahasa Melayu](../i18n/ms/docs/guides/FEATURES.md) | 🇲🇹 [Malti](../i18n/mt/docs/guides/FEATURES.md) | 🇲🇲 [မြန်မာ](../i18n/my/docs/guides/FEATURES.md) | 🇳🇵 [नेपाली](../i18n/ne/docs/guides/FEATURES.md) | 🇳🇱 [Nederlands](../i18n/nl/docs/guides/FEATURES.md) | 🇳🇴 [Norsk](../i18n/no/docs/guides/FEATURES.md) | 🇮🇳 [ଓଡ଼ିଆ](../i18n/or/docs/guides/FEATURES.md) | 🇮🇳 [ਪੰਜਾਬੀ](../i18n/pa/docs/guides/FEATURES.md) | 🇵🇭 [Filipino](../i18n/phi/docs/guides/FEATURES.md) | 🇵🇱 [Polski](../i18n/pl/docs/guides/FEATURES.md) | 🇵🇹 [Português (Portugal)](../i18n/pt/docs/guides/FEATURES.md) | 🇧🇷 [Português (Brasil)](../i18n/pt-BR/docs/guides/FEATURES.md) | 🇷🇴 [Română](../i18n/ro/docs/guides/FEATURES.md) | 🇷🇺 [Русский](../i18n/ru/docs/guides/FEATURES.md) | 🇱🇰 [සිංහල](../i18n/si/docs/guides/FEATURES.md) | 🇸🇰 [Slovenčina](../i18n/sk/docs/guides/FEATURES.md) | 🇸🇮 [Slovenščina](../i18n/sl/docs/guides/FEATURES.md) | 🇷🇸 [Српски](../i18n/sr/docs/guides/FEATURES.md) | 🇸🇪 [Svenska](../i18n/sv/docs/guides/FEATURES.md) | 🇰🇪 [Kiswahili](../i18n/sw/docs/guides/FEATURES.md) | 🇮🇳 [தமிழ்](../i18n/ta/docs/guides/FEATURES.md) | 🇮🇳 [తెలుగు](../i18n/te/docs/guides/FEATURES.md) | 🇹🇭 [ไทย](../i18n/th/docs/guides/FEATURES.md) | 🇹🇷 [Türkçe](../i18n/tr/docs/guides/FEATURES.md) | 🇺🇦 [Українська](../i18n/uk-UA/docs/guides/FEATURES.md) | 🇵🇰 [اردو](../i18n/ur/docs/guides/FEATURES.md) | 🇺🇿 [Oʻzbekcha](../i18n/uz/docs/guides/FEATURES.md) | 🇻🇳 [Tiếng Việt](../i18n/vi/docs/guides/FEATURES.md) | 🇳🇬 [Yorùbá](../i18n/yo/docs/guides/FEATURES.md) | 🇨🇳 [中文 (简体)](../i18n/zh-CN/docs/guides/FEATURES.md) | 🇹🇼 [中文 (繁體)](../i18n/zh-TW/docs/guides/FEATURES.md) OmniRoute 控制面板各部分的可视化指南。 > 📅 **最后更新:** 2026-06-28 — **v3.8.40** --- ## ✨ v3.8.0 亮点 v3.7.x → v3.8.0 版本周期新增了零配置自动路由、新提供者、OAuth 流程、更强的韧性,以及功能丰富得多的 CLI 体验。主要功能如下——完整详情请参阅本文档后续内容及链接的规范。 - 🤖 **自动组合 / 零配置自动路由** — 使用前缀 `auto/coding`、`auto/fast`、`auto/cheap`、`auto/offline`、`auto/smart`、`auto/lkgp`、`auto/chaos`。由 16 因子评分引擎和 6 个精选的**模式包**(快速交付、成本节省、质量优先、离线友好、可靠性优先、混沌模式)提供支持 - 🆕 **Command Code 提供者** (#2199) — 支持模型目录和配额跟踪的一等注册机制 - 🆕 **Z.AI 提供者** — 带配额标签的新免费套餐提供者 - 🎬 **KIE 媒体功能扩展** — 扩展了模型目录,包括视频生成模型 - 🔐 **Devin 身份验证** — Desktop 可导入现有的 Devin API 密钥;CLI 使用本地 `devin auth login` 凭据 - 🆓 **8 个新的免费提供者** — LLM7、Lepton、UncloseAI、BazaarLink、Completions、Enally、FreeTheAi、Command Code - 🎯 **感知清单的 W1–W4 分层路由** — 提供者清单驱动加权层级选择 - 🎨 **Cursor 与 OpenAI 功能完全对等** — 端到端支持工具调用、流式传输和会话管理 - 📊 **Cursor Pro 套餐用量** — 在提供者限制仪表板中显示配额和周期数据 - ⚡ **服务层级明细 / Codex 快速层级分析** — 查看各层级的消耗情况 - 📌 **按会话粘性路由** — Codex 会话在多轮交互期间固定使用同一账户 - 🔊 **Inworld TTS 增强** — 改进语音目录、流式传输和延迟 - 🔑 **Kiro 无头身份验证** — 通过本地 `kiro-cli` SQLite 存储登录,无需浏览器 - 📉 **DeepSeek 配额和限制监控** — 通过仪表板显示每日/每月用量 - 🔄 **感知重置时间的路由策略** — 组合现在会优先选择配额窗口最早重置的账户 - ⏱️ **`fallbackDelayMs`** 和**动态工具限制检测** — 更精细的回退时机控制,以及按提供者设置的工具数量限制 - 🔧 **后台模式降级(Responses API)** — 当上游不支持后台轮询时,回退到同步模式并发出结构化警告 - 🚦 **按提供者进行 429 分类** + `useUpstream429BreakerHints` 开关 — 利用上游限流提示实现更精细的断路器行为 - 🩺 **模型冷却仪表板** — 查看各模型的锁定状态,并从 UI 手动重新启用 - 🔒 **MITM 动态 Linux 证书检测** — 适用于 Debian/Ubuntu、Fedora/RHEL、Arch 及其他发行版 - 💻 **CLI 增强套件** — 包含 20 多个命令,包括 `omniroute providers`、`omniroute combos`、`omniroute doctor`、`omniroute setup` - 🔍 **Qdrant 嵌入模型发现** — 自动探测向量存储模型 - 🔑 **具有 `manage` 作用域的 API 密钥 / Bearer 密钥** — 通过 API 以编程方式执行管理操作 - 🏥 **组合目标健康状况分析** + **结构化组合构建器** — 针对每个目标的健康状况,以及用于组装 `(provider, model, connection)` 步骤的 UI 构建器 - 🤝 **GitLab Duo OAuth 提供者** — 使用 GitLab 凭据登录 - 🧠 **推理重放缓存** — 采用内存与 SQLite 混合方式持久化推理轨迹 📚 **相关文档:** [技能框架](../frameworks/SKILLS.md) · [记忆系统](../frameworks/MEMORY.md) · [云端代理](../frameworks/CLOUD_AGENT.md) · [Webhook](../frameworks/WEBHOOKS.md) · [推理重放缓存](../routing/REASONING_REPLAY.md) --- ## 🔌 提供者 管理 AI 提供者连接:OAuth 提供者(Claude Code、Codex)、API 密钥提供者(Groq、DeepSeek、OpenRouter)以及免费提供者(Qoder、Kiro)。Kiro 账户支持额度余额跟踪——可在仪表板 → 使用情况中查看剩余额度、总额度和续期日期。 OpenRouter 连接可以在高级设置中存储每个连接专属的 `preset`。设置后,OmniRoute 会将其作为 OpenRouter 的顶层请求字段发送,例如 `"preset": "email-copywriter"`,除非客户端请求已提供自己的 `preset`。 ![提供者仪表板](../screenshots/01-providers.png) --- ## 🎨 组合 使用 19 种公开策略创建模型路由组合:优先级、加权、轮询、上下文中继、优先填充、p2c(两项随机选择)、随机、最少使用、成本优化、重置感知、重置窗口、余量、严格随机、自动、lkgp(最后已知可用提供者)、上下文优化、缓存优化、**融合**(并行分发至一组模型,然后由评审模型综合生成一个答案)和**流水线**。每个组合可串联多个模型,支持自动回退,并包含快速模板和就绪状态检查。 近期的组合改进: - **结构化组合构建器**——通过选择提供者、模型及确切的账户/连接来创建每个步骤 - **重复提供者支持**——只要 `(provider, model, connection)` 元组唯一,即可在一个组合中多次复用同一提供者 - **组合目标健康状态**——分析和健康状态界面现在会区分各个组合目标/步骤,而不会将所有内容合并为模型字符串 - **复合层级排序**——`defaultTier -> fallbackTier` 现在会影响顶层组合步骤的运行时执行/回退顺序 - **系统提示词模板**——组合的 `system_message` 支持服务端 `{{MODEL_ID}}`、`{{PROVIDER_ID}}`、`{{ACCOUNT}}` 和 `{{FINGERPRINT}}` 占位符;这些占位符会在分发前,根据实际路由到的目标进行展开。 占位符仅限允许列表且不会递归展开;未知占位符保持原样;空值 会展开为空字符串;客户端系统提示词绝不会被重写。`{{FINGERPRINT}}` 仅对具有固定或自动轮换指纹、基于指纹的免费提供者进行解析——在其他情况下会展开为空 (例如,单指纹连接、非指纹提供者)。展开适用于 标准分发循环、轮询和固定的上下文缓存会话; 融合、混沌、流水线和嵌套执行策略目前尚不支持展开 占位符。 ![组合仪表板](../screenshots/02-combos.png) --- ## 📊 分析 全面的使用情况分析,包括令牌消耗、成本估算、活动热力图、每周分布图表以及按提供者细分的数据。 ![分析仪表板](../screenshots/03-analytics.png) --- ## 🏥 系统健康状态 实时监控:运行时间、内存、版本、延迟百分位数(p50/p95/p99)、缓存统计信息、提供者断路器状态、正在进行配额监控的会话,以及组合目标健康状态。 ![健康状态仪表板](../screenshots/04-health.png) --- ## 🔧 翻译器调试平台 提供四种 API 翻译调试模式:**调试平台**(格式转换器)、**聊天测试器**(实时请求)、**测试台**(批量测试)和**实时监控器**(实时数据流)。 ![翻译器调试平台](../screenshots/05-translator.png) --- ## 🎮 模型调试平台 _(v2.0.9+)_ 直接从仪表板测试任意模型。选择提供者、模型和端点,使用 Monaco Editor 编写提示词,实时流式传输响应,可在传输过程中中止,并查看计时指标。 --- ## 🎨 主题 _(v2.0.5+)_ 可自定义整个仪表板的颜色主题。可从 7 种预设颜色(珊瑚色、蓝色、红色、绿色、紫罗兰色、橙色、青色)中选择,也可通过选取任意十六进制颜色来创建自定义主题。支持浅色、深色和跟随系统模式。 --- ## ⚙️ 设置 包含 **7 个选项卡**的综合设置面板: - **常规** — 系统存储、备份管理(导出/导入数据库) - **外观** — 主题选择器(深色/浅色/跟随系统)、颜色主题预设和自定义颜色、健康日志可见性、侧边栏项目和分组分隔符可见性控制、端点隧道可见性控制 - **AI** — AI 助手功能、默认路由预设(Auto Combo `auto/coding`、`auto/fast`、`auto/cheap`、`auto/smart`)、推理重放缓存,以及技能/记忆开关 - **安全** — API 端点保护、自定义提供者阻止、IP 过滤、会话信息 - **路由** — 模型别名、后台任务降级、可感知清单的分层路由(W1–W4)、`fallbackDelayMs`、按会话粘性路由 - **弹性** — 速率限制持久化、断路器调优、自动禁用被封禁的账户、提供者过期监控、**上下文中继**移交阈值和摘要模型配置、按提供者配置的 429 分类与 `useUpstream429BreakerHints` 开关、模型冷却 - **高级** — 配置覆盖、配置审计跟踪、回退降级模式、Responses API 的后台模式降级 ![设置仪表板](../screenshots/06-settings.png) --- ## 🔧 CLI 工具 为 AI 编码工具提供一键配置:Claude Code、Codex CLI、OpenClaw、Kilo Code、Antigravity、Cline、Continue、Cursor 和 Factory Droid。支持自动应用/重置配置、连接配置文件和模型映射。 ![CLI 工具仪表板](../screenshots/07-cli-tools.png) --- ## 🤖 CLI 智能体 _(v2.0.11+)_ 用于发现和管理 CLI 智能体的仪表板。以网格形式展示 16 个内置智能体(Codex、Claude、Goose、OpenClaw、Aider、OpenCode、Cline、ForgeCode、Amazon Q、Open Interpreter、Cursor CLI、Warp、**Windsurf**、**Devin CLI**、**Kimi Coding**、**Command Code**),并提供: - **安装状态** — 已安装/未找到,并支持版本检测 - **协议徽章** — stdio、HTTP 等 - **自定义智能体** — 通过表单注册任意 CLI 工具(名称、二进制文件、版本命令、启动参数) - **CLI 指纹匹配** — 按提供者切换是否匹配原生 CLI 请求签名,在保留代理 IP 的同时降低被封禁风险 - **本地 Devin 身份验证** — Devin CLI 使用 `devin auth login`;无需浏览器 OAuth 流程 --- ## 🔗 上下文接力 _(v3.5.5+)_ 一种组合策略,可在对话中途发生账户轮换时保持会话连续性。在当前活动账户的额度耗尽之前,OmniRoute 会在后台生成结构化的交接摘要。当后续请求被路由到其他账户后,该摘要会作为系统消息注入,使新账户能够在完整上下文的基础上继续对话。 可通过组合级或全局设置进行配置: - **交接阈值** — 触发摘要生成的额度使用百分比(默认 85%) - **摘要最大消息数** — 要压缩的近期历史消息数量 - **摘要模型** — 用于生成交接摘要的可选覆盖模型 目前支持 Codex 账户轮换。请参阅[上下文接力文档](../architecture/ARCHITECTURE.md)。 --- ## 🗜️ 提示词压缩 _(v3.7.9+)_ 上下文与缓存现已为 Caveman、RTK 和压缩组合提供专用页面: - **Caveman** — 语言感知规则包、预览、输出模式控制和分析 - **RTK** — 针对 shell、git、测试、构建、软件包、Docker、基础设施、JSON 和堆栈跟踪输出的命令感知压缩 - **压缩组合** — 分配给路由组合的命名管线,例如 `rtk -> caveman`;当两个引擎均适用时,默认的叠加计算可实现约 `~89%` 的平均节省率,以及 `78-95%` 的有效上下文节省率 - **原始输出恢复** — 可选的、经过脱敏处理的 RTK 原始输出指针,用于调试压缩后的失败 请参阅[压缩指南](../compression/COMPRESSION_GUIDE.md)、[RTK 压缩](../compression/RTK_COMPRESSION.md)和 [压缩引擎](../compression/COMPRESSION_ENGINES.md)。 --- ## 🛡️ 代理强化 _(v3.5.5+)_ 在整个请求管线中全面强制执行代理配置: - **令牌健康检查** — 后台 OAuth 刷新现在会按连接解析代理配置,防止在必须使用代理的环境中发生失败 - **API 密钥验证** — 提供者密钥验证(`POST /api/providers/validate`)通过 `runWithProxyContext` 路由,并遵循提供者级和全局代理设置 - **undici 调度器修复** — 代理调度器使用 undici 自身的 fetch 实现,而不是 Node 的内置 fetch,从而解决 Node.js 22 上的 `invalid onRequestStart method` 错误 - **Node.js 版本检测** — 登录页面会主动检测不兼容的 Node.js 版本(24+),并显示警告横幅,提示使用 Node 22 LTS --- ## 📧 电子邮件隐私遮罩 _(v3.5.6+)_ 默认情况下,OAuth 账户的电子邮件地址会被遮罩(例如 `di*****@g****.com`),以防止在分享屏幕截图或录制演示时意外泄露。可使用“设置 → 外观 → 账户电子邮件可见性”,在所有提供者、组合、日志、额度和演练场页面中全局显示或遮罩完整的账户电子邮件地址。 --- ## 👁️ 模型可见性开关 _(v3.5.6+)_ 提供者页面的模型列表现在包括: - **实时搜索/筛选栏** — 快速查找特定模型 - **每个模型的可见性开关**(👁 图标)— 隐藏的模型将显示为灰色,并从 `/v1/models` 目录中排除 - **已启用数量徽章**(`N/M 已启用`)— 可一目了然地查看已启用模型数与模型总数 --- ## 🔧 OAuth 环境修复 _(v3.6.1+)_ 为 OAuth 提供者提供一键式“修复环境”操作,可恢复缺失的环境变量并修复异常的身份验证状态。可通过 `控制面板 → 提供者 → [OAuth 提供者] → 修复环境` 访问。自动检测并修复: - 缺失的 OAuth 客户端凭据 - 损坏的环境文件条目 - 备份路径清理 --- ## 🗑️ 卸载 / 完全卸载 _(v3.6.2+)_ 适用于所有安装方式的彻底移除脚本: | 命令 | 操作 | | ------------------------ | ------------------------------------------------------------ | | `npm run uninstall` | 移除系统应用,但会在 `~/.omniroute` 中**保留数据库和配置**。 | | `npm run uninstall:full` | 移除应用,并永久**清除所有配置、密钥和数据库**。 | --- ## 🖼️ 媒体 _(v2.0.3+)_ 通过控制面板生成图像、视频和音乐。支持 OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUI、AnimateDiff、Stable Audio Open 和 MusicGen。 --- ## 📝 请求日志 实时记录请求日志,并支持按提供者、模型、账户和 API 密钥进行筛选。显示状态码、令牌使用量、延迟和响应详情。 ![使用日志](../screenshots/08-usage.png) --- ## 🌐 API 端点 统一的 API 端点,并提供功能分类:聊天补全、Responses API、嵌入、图像生成、重排序、音频转录、文本转语音、内容审核以及已注册的 API 密钥。支持通过 Cloudflare Quick Tunnel、Tailscale Funnel、ngrok Tunnel 和云代理进行远程访问。 ![端点控制面板](../screenshots/09-endpoint.png) --- ## 🔑 API 密钥管理 创建、限定范围和撤销 API 密钥。每个密钥均可限制为特定模型/提供者,并可授予完全访问或只读权限。提供可视化密钥管理和使用情况跟踪。 --- ## 📋 审计日志 跟踪管理操作,并支持按操作类型、操作者、目标、IP 地址和时间戳进行筛选。提供完整的安全事件历史记录。 --- ## 🖥️ 桌面应用程序 适用于 Windows、macOS 和 Linux 的原生 Electron 桌面应用。可将 OmniRoute 作为独立应用程序运行,支持系统托盘集成、离线使用、自动更新和一键安装。 主要功能: - 服务器就绪状态轮询(冷启动时不会出现空白屏幕) - 支持端口管理的系统托盘 - 内容安全策略 - 单实例锁 - 重启时自动更新 - 根据平台显示不同的界面(macOS 红绿灯按钮、Windows/Linux 默认标题栏) - 强化的 Electron 构建打包——打包前会检测并拒绝独立软件包中以符号链接形式存在的 `node_modules`,防止运行时依赖构建机器 (v2.5.5+) - **优雅关闭**——Electron `before-quit` 会彻底关闭 Next.js,防止 SQLite WAL 数据库锁定 (v3.6.2+) 📖 完整文档请参阅 [`electron/README.md`](../../electron/README.md)。 --- ## 🌐 V1 WebSocket 桥接器 _(v3.6.6+)_ OmniRoute 现在通过 `/v1/ws` 升级端点支持**兼容 OpenAI 的 WebSocket 客户端**。自定义 `scripts/dev/v1-ws-bridge.mjs` 服务器会封装 Next.js,并将 WS 连接升级为完整的双向流式会话。身份验证使用与 HTTP 请求相同的 API 密钥或会话 Cookie。 主要行为: - 在建立连接之前,由 `src/lib/ws/handshake.ts` 验证 WS 升级 - 会话关闭或上游发生错误时彻底终止流 - 可与现有 HTTP+SSE 流式传输路径同时运行 --- ## 🔑 同步令牌与配置包 _(v3.6.6+)_ 现在可以通过**限定作用域的同步令牌**实现多设备和外部操作方访问: - **`POST /api/sync/tokens`** — 签发新的同步令牌(限定作用域,可选过期时间) - **`DELETE /api/sync/tokens/:id`** — 撤销令牌 - **`GET /api/sync/bundle`** — 下载带版本号并以 ETag 为键的配置 JSON 快照(仅使用同步令牌进行身份验证)。其中会移除仪表板密码等身份验证设置,但会包含提供者凭据和 API 密钥,因此请将该文件视为机密信息 配置包由 `src/lib/sync/bundle.ts` 构建。使用方通过比较 `ETag` 响应头来检测变更,无需重新下载完整的有效载荷。在 CLI 中,使用 `omniroute sync bundle --token `(或 `OMNIROUTE_SYNC_TOKEN`)可将其保存为仅所有者可访问的文件。 --- ## 🧠 GLM 思考预设 _(v3.6.6+)_ **GLM Thinking (`glmt`)** 现已注册为一等提供者:最大输出令牌数为 65 536,思考预算为 24 576,默认超时时间为 900 s,采用 Claude 兼容的 API 格式,并与 GLM 系列共享用量同步。 v3.6.6 还引入了**混合令牌计数**:当 Claude 兼容的提供者公开 `/messages/count_tokens` 时,OmniRoute 会在发送大型请求前调用该接口,并在调用失败时平稳回退到估算方式。 --- ## 🛡️ 安全出站请求与 SSRF 防护 _(v3.6.6+)_ 现在,所有提供者验证和模型发现调用都会经过两层出站防护: 1. **URL 防护** (`src/shared/network/outboundUrlGuard.ts`) — 首先检查按原样提供的目标主机名或 IP 字面量;在仅允许公网的模式下,安全请求封装器还会解析该名称,并拒绝解析到私有地址的结果。默认情况下,它会阻止云元数据端点,包括整个 169.254.0.0/16 网段以及已知的元数据主机名;`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` 还会阻止私有主机和环回主机;`OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`(或旧版的 `OUTBOUND_SSRF_GUARD_ENABLED=false`)会关闭这些检查。通过功能标志的仪表板开关保存的值优先于对应的变量,并且内置本地提供者在密钥验证期间会跳过此防护。请参阅 `docs/reference/ENVIRONMENT.md`。 2. **安全请求封装器** (`src/shared/network/safeOutboundFetch.ts`) — 应用 URL 防护、标准化超时设置,并通过指数退避机制重试暂时性错误。 防护违规会显示为 `URL_GUARD_BLOCKED`——通过 `getSafeOutboundFetchErrorStatus` 返回 HTTP 503(在模型发现路由上返回 400)——而验证期间真正的 SSRF 阻止事件会作为 `provider.validation.ssrf_blocked` 事件写入审计日志。 --- ## 🔄 感知冷却状态的重试 _(v3.6.6+)_ 当上游提供者返回模型级冷却状态时,聊天请求现在会**自动重试**。可通过 `REQUEST_RETRY`(默认值:2)和 `MAX_RETRY_INTERVAL_SEC`(默认值:30 s)进行配置。现已改进对 `x-ratelimit-reset-requests`、`x-ratelimit-reset-tokens` 和 `Retry-After` 等速率限制响应头的解析与学习——可在“弹性”仪表板中查看各模型的冷却状态。 --- ## 📋 合规审计 v2 _(v3.6.6+)_ 审计日志现已扩展,支持基于游标的分页、请求上下文补充(请求 ID、用户代理、IP)、结构化身份验证事件、包含差异上下文的提供者 CRUD 事件,以及 SSRF 拦截验证日志记录。新事件由 `src/lib/compliance/providerAudit.ts` 发出。