# RouteDeck **Repository Path**: cmmuu/routedeck ## Basic Information - **Project Name**: RouteDeck - **Description**: 轻量跨平台 Mihomo 客户端:订阅管理、Codex/OpenAI 分流、系统代理与 TUN,GPL-3.0-only 开源。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-04 - **Last Updated**: 2026-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Serylane — 开源 Mihomo 桌面代理客户端 Serylane 是基于 **Mihomo** 内核、使用 Rust + Tauri 2 构建的开源桌面代理客户端,面向 Windows、macOS 和 Linux。通过中文界面管理 Clash Meta / Mihomo YAML 订阅、节点、分流规则和系统代理,并提供默认关闭的 Codex 本地兼容路由。 **Serylane (formerly RouteDeck) is an open-source Mihomo desktop proxy client for Windows, macOS, and Linux.** Built with Rust and Tauri 2, it provides subscription management, proxy selection, traffic rules, system proxy controls, and optional local routing for Codex. The local router is off by default; Windows TUN support is experimental. 这是独立客户端项目,并非 Mihomo、Clash 或 OpenAI 的官方产品。项目曾用名 `mihomo-codex`、RouteDeck,从 0.7.4 起使用 Serylane 展示品牌。为兼容已安装版本,安装名称暂保留 `RouteDeck`,仓库、主程序与更新包地址保持不变;详见下方「更名与升级兼容」。 ## 主要功能 - **订阅管理**:在「订阅」统一添加远程订阅,明确选择添加后是否选用;本地 YAML 仍在「配置」导入与回滚。用紧凑卡片查看服务商返回的套餐流量、到期时间与更新状态;没有提供的数据会明确标注,不显示成零或不限量。 - **节点与规则**:切换代理组和节点,查看延迟与连接,编辑分流规则,并保留配置版本与回滚入口。 - **系统代理与程序代理**:管理系统代理,或为支持代理参数/环境变量的指定程序提供启动入口;不会强制关闭已有程序实例。 - **可选 Codex 路由**:提供 HTTP/SSE 兼容模式与 WebSocket 原生透传。保存设置、启用本地服务、接入 Codex 是独立操作,接入前备份,恢复时检查冲突。 - **OpenAI 稳定灾备**:支持按近期失败和可确认节点归属的模型流结果选择后备节点,配合节点保持、故障冷却与恢复滞后;已中断的数据流不能靠换节点无缝续接。 - **日常桌面体验**:磨砂玻璃界面、浅色/深色/深紫与跟随系统主题、托盘、流量监控,以及 Gitee 优先、GitHub 备用的签名更新。 ## 源码与下载 - 官网:[Serylane](https://serylane.cmmuu.com/)(已上线,提供安装包下载与使用文档)。 - 源码仓库:[GitHub](https://github.com/CMMUU/routedeck) · [Gitee](https://gitee.com/cmmuu/routedeck) - 版本发布:[GitHub Releases](https://github.com/CMMUU/routedeck/releases) · [Gitee Releases](https://gitee.com/cmmuu/routedeck/releases) - 当前源码版本为 **0.7.6**,将远程订阅新增入口统一到「订阅」,通过「添加后选用」明确控制是否切换当前配置,保留 Serylane 品牌和 S 图标;见 [v0.7.6 发布说明](docs/发布说明-v0.7.6.md)。源码版本不表示对应安装包已公开发布,正式可用版本以两渠道实际 Release 与更新清单为准。 - 安装包、SHA-256 校验文件和更新签名以 Release 页面实际附件为准;应用内自动更新同版本优先 Gitee,GitHub 备用。历史版本附件文件名保持不变。 - Windows 10/11 TUN 为实验性功能,已实现管理员会话运行方式,尚未完成真实 TUN 路由与恢复验收。各平台的安装、构建和网络接管验证范围见 [v0.5.0 发布说明](docs/发布说明-v0.5.0.md)。 - 自 2026-09-04 起,应用源码按 [GNU GPL v3(GPL-3.0-only)](LICENSE) 开源。第三方依赖沿用各自许可证,见 [第三方声明](THIRD_PARTY_NOTICES.md)、[v0.5.0 许可证清单](docs/compliance/v0.5.0/license-inventory.md) 和 [SBOM](docs/compliance/v0.5.0/sbom.cdx.json)。`package.json` 中的 `private: true` 仅防止意外发布到 npm,不限制源码访问或 GPL 授予的权利。 ## 快速开始 1. 从上面的 Release 页面选择与系统和处理器架构匹配的安装包;渠道未提供对应附件时使用另一渠道,以实际发布内容为准。 2. 在「订阅」→「添加订阅」输入自己的 Clash Meta / Mihomo YAML 订阅地址,需要立即选用时勾选「添加后选用」;已有选用配置时默认不勾选,未勾选只保存。概览引导会前往同一入口,本地 YAML 仍在「配置」导入与回滚;本项目不提供代理节点或订阅服务。 3. 选用配置,点击顶部主「启动」会启动 Mihomo 核心并启用系统代理;需要 TUN 时使用明确的「TUN 模式」入口,仍按 TUN 流程处理权限和预检。程序代理中的程序启动与独立路由服务操作仍不自动修改系统代理/TUN;它们不是 Mihomo 核心的启动入口。启用系统代理或 TUN 前先关闭其他客户端的系统代理/TUN,避免相互接管。 4. Codex 本地路由不是普通代理使用的必要步骤,默认保持关闭。需要时先阅读下方「Codex 路由与稳定灾备」中的接入范围、备份与恢复说明。 ## 设计文档 - [v0.7.6 发布说明(统一订阅入口与明确选用)](docs/发布说明-v0.7.6.md) - [v0.7.5 发布说明(主启动默认系统代理)](docs/发布说明-v0.7.5.md) - [v0.7.4 发布说明(Serylane 品牌与升级兼容)](docs/发布说明-v0.7.4.md) - [v0.7.3 发布说明(玻璃界面、订阅流量与可选路由)](docs/发布说明-v0.7.3.md) - [软件设计说明书(SDD)](docs/软件设计说明书.md) - [架构与里程碑](docs/架构与里程碑.md) - [v0.6.0 发布说明草稿(RouteDeck 更名)](docs/发布说明-v0.6.0.md) - [v0.5.0 发布说明](docs/发布说明-v0.5.0.md) - [v0.4.0 发布说明](docs/发布说明-v0.4.0.md) - [规则管理与升级验证](docs/规则管理与升级验证.md) - [当前应用图标](assets/brand/图标说明.md) - [v0.3.2 发布说明](docs/发布说明-v0.3.2.md) - [0.3.1 更名与安装验证](docs/更名与安装验证.md) - [v0.3.1 发布说明](docs/发布说明-v0.3.1.md) - [0.3.0 运行验证记录](docs/运行验证记录.md) - [Figma UI 设计源文件](https://www.figma.com/design/aqVzL0f9upkr8BiYNCy2fu?node-id=8-2) - [Figma 订阅管理界面](https://www.figma.com/design/aqVzL0f9upkr8BiYNCy2fu?node-id=17-70) - [Figma 节点详情弹窗](https://www.figma.com/design/aqVzL0f9upkr8BiYNCy2fu?node-id=24-174) - [Figma 应用内流量组件](https://www.figma.com/design/aqVzL0f9upkr8BiYNCy2fu?node-id=27-3) - [Figma 菜单栏流量组件](https://www.figma.com/design/aqVzL0f9upkr8BiYNCy2fu?node-id=27-15) - [历史 Figma 应用图标设计(0.3.x)](https://www.figma.com/design/aqVzL0f9upkr8BiYNCy2fu?node-id=12-3) - [更新日志](CHANGELOG.md) ## 当前范围 - Clash Meta / Mihomo YAML 订阅和本地文件 - 原始配置与本机控制字段合并 - Mihomo 原生配置校验 - UUID 配置档案、不可变版本、激活和回滚 - 固定版本 Mihomo sidecar 下载、SHA-256 校验和跨平台打包 - Mihomo 生命周期、状态机、端口预检和脱敏日志 - Manual、System Proxy 和 TUN 网络模式 - 代理组、节点切换、延迟、规则、连接和关闭连接 - 独立订阅管理:紧凑卡片、服务商套餐用量与到期时间、检查与采样时间、刷新失败保留旧用量、选用、版本、删除、脱敏来源和导入;未提供数据不显示成零或不限量 - 当前节点详情:实际代理链、Provider、脱敏服务器、协议与健康历史 - OpenAI 自动灾备:最多 10 个候选节点;可启用按近期失败与模型流结果评分的稳定策略、节点保持、故障冷却与恢复滞后 - 可选 Codex 本地路由:默认关闭,HTTP/SSE 兼容模式与 WebSocket 原生透传,独立出站代理、备份接入与冲突保护恢复 - 分层连通性诊断 - System Proxy 接管前后安全预检、活动物理网卡筛选和失败自动恢复 - Windows 系统代理事务恢复、外部客户端接管识别,以及 PAC/代理例外保留 - Windows 10/11 实验性 TUN 管理员会话,核心进程树随停止或退出回收 - 独立于 Mihomo 的 OS 全局实时流量监控,应用内和 macOS 菜单栏均显示纵向上下行速率 - 系统托盘、单实例和登录启动设置 - 独立浅色、深色、深紫与跟随系统外观,点击立即生效并保存,不触发代理接管 - 可视化全局规则管理:增删改、启停、上下排序、备注、草稿校验与热更新 - 高级规则文本导入与可复制导出、独立持久化、最近 20 个历史版本与校验后回滚 ## 自定义规则 1. 打开「规则 → 我的规则」,添加匹配条件,选择 `DIRECT`、`REJECT` 或当前配置中的策略。 2. 使用上移/下移调整优先级;未启用的规则保留在编辑器中,但不加入内核配置。 3. 点击「校验草稿」,通过后「保存并应用」。运行中的内核热更新,不先停止代理进程。 4. 「高级文本」接受逐行规则、YAML 列表或仅含 `rules:` 的 YAML;「导出文本」提供只读文本与复制入口,由用户自行保存文件。 5. 在「历史版本与回滚」选择版本并确认。回滚也会校验并生成新版本。 全局用户规则优先于托管 AI 与订阅规则,更新订阅不会覆盖它们。`DIRECT` 表示进入 Mihomo 的连接从本机直连出口,并非修改系统代理例外列表;不使用系统代理的程序原有直连行为保持不变。规则分流应使用 `Rule` 路由模式。 导出中的 `mihomo-codex-rule` 注释用于本应用恢复启停、备注与顺序。导出内容是规则编辑数据,不是完整代理配置;交给其他客户端前需按其规则格式处理停用条目。 ## Codex 路由与稳定灾备 这些说明对应当前源码功能,不表示对应安装包已经发布。 1. 在「代理」生成 OpenAI 灾备后,在「路由 → OpenAI 稳定灾备」启用稳定策略。已有配置不会因升级自动改变策略;新生成的灾备采用稳定策略。 2. 「路由」默认关闭。选择兼容模式(HTTP/SSE)或原生模式(WebSocket)、官方入口与出站代理后保存;留空出站代理表示使用 Serylane 当前本地代理端口。 3. 「启用路由」只启动本机服务,不改 Codex。再单独确认「接入 Codex」,备份用户级 config.toml 后仅写入模型提供方接入,不修改 auth.json、系统代理,也不关闭 Codex。 4. 在新 Codex 会话核对是否生效;必要时在方便时自行重启 Codex。正在进行的请求不会被迁移。Codex profile 或其他程序可能覆盖接入设置。 5. 「恢复原配置」保留其他设置编辑;遇到其他路由程序修改同一字段时拒绝覆盖。备份保留在页面显示的位置。关闭路由先恢复接入,有进行中请求则拒绝关闭;正常退出 Serylane 会尝试恢复,下次使用请核对并按需重新接入。服务启用状态会保留,异常退出后以页面的接入与恢复提示为准。原接入若是 CC Switch,恢复后仍依赖其服务。 稳定策略每分钟检查基础 API 连通性,以最近 15 分钟的加权结果选后备节点。模型流样本权重更高;当前健康节点不因其他节点测速更快而切换。连续失败后冷却 5 分钟,再连续 3 次恢复检查通过才可成为后备候选;正常节点恢复不触发立即切回。历史统计保存在本次运行内存中,配置版本变化或重启后重新观察。 401 只代表基础 API 可达,不代表 Codex 模型请求成功。模型完成与中断证据仅来自兼容路由,需实际连接的源端口、目标域名、Mihomo 代理链和未变化的托管节点相互吻合;使用其他出站代理、无可用连接元数据、认证/限流错误、主动取消和原生隧道关闭,不据此判定某个节点故障。原生模式不解析 WebSocket 内的模型事件。 灾备只调整后续新连接,不清空现有连接,不自动重放模型请求。**已经断掉的连接不能靠换节点无缝续上原数据流。** 兼容路由仅覆盖支持的模型 API,不接管整个 Codex 应用;登录、遥测和远程控制等独立连接可能仍有不同的代理行为。真实长会话、实时能力及各平台应另行验收,模拟测试通过不等于已验证真实网络稳定性。 提供方接入字段依据 [官方 Codex 配置参考](https://learn.chatgpt.com/docs/config-file/config-reference)。路由仅监听 127.0.0.1,固定转发官方上游,不做 TLS 解密证书安装、不保存提示词或认证头、不跟随上游重定向。 ## 更名与升级兼容 - **0.7.4 是展示品牌更名,不是重新安装一款不同应用。** 窗口、托盘与应用内名称改为 `Serylane`;Tauri `productName` 仍为 `RouteDeck`,主程序仍为 `routedeck.exe`(Windows),安装器、系统卸载列表和登录启动项可能仍显示 RouteDeck。这是有意保留的兼容名称,不是下载了错误软件。 - GitHub/Gitee 仓库、`latest.json`/`latest-gitee.json` 更新入口、`RouteDeck_…` 包名与更新签名公钥均不因展示名改变;继续同版本国内优先、GitHub 备用。旧客户端会严格校验包名及来源,不能仅为统一品牌替换这些地址。历史包、签名和标签保持不变。 - Codex 接入的 `routedeck` 提供方标识、lease 与备份格式保持不变;不会为更名扫描或重写已有 Codex 配置,不改变路由默认关闭及独立接入流程。 - 0.6.0–0.7.3 的展示名称为 `RouteDeck`;项目/仓库、npm/Cargo 包继续使用 `routedeck`。0.3.1–0.5.0 的名称为 `mihomo-codex`。 - 保留 `com.cmmuu.mihomodesktop` bundle identifier 及其原用户数据目录,不因品牌更名迁移或重置订阅、设置和历史版本。 - 保留 `mihomo-tun-helper` 可执行文件和 `com.cmmuu.mihomodesktop.tun-helper` 服务/plist 标识;helper 对主程序的查找随新二进制名更新。 - 规则导出与导入继续使用 `# mihomo-codex-rule:` 元数据前缀,以兼容旧版导出的启停、备注和排序数据。 - 保留上述兼容身份不等于已完成所有安装器与启动项迁移验收。升级前备份数据,在方便结束重要连接时确认安装;不要同时运行旧版与 Serylane,或同时开启多个客户端的系统代理/TUN。各平台覆盖安装、快捷方式、登录启动项及 helper 授权需单独验证。 - 以下注意事项仅针对从 **0.3.1–0.5.0 `mihomo-codex`** 迁移,不是要求现有 RouteDeck 用户为 0.7.4 更名先卸载。Windows NSIS 的卸载项以 `productName` 为键,`RouteDeck` 与旧 `mihomo-codex` 不同,不能仅凭 bundle identifier 保证自动覆盖升级。旧 `mihomo-codex` 用户应先关闭旧版登录启动并退出,备份配置,卸载旧版时不要选择删除应用数据,再安装现有客户端;确认数据正常后按需重新启用登录启动。 - Linux DEB/RPM 的内部包名继续为 `route-deck`,不同于旧 `mihomo-codex`,也不同于主程序名 `routedeck`。从旧 `mihomo-codex` 包迁移时先卸载旧包并保留用户配置,再安装现有包,以免共享文件路径冲突。macOS 从旧 `mihomo-codex` 迁移时,已安装的旧 TUN helper 可能仍按旧主程序名查找,如不可用需重新安装/修复 helper 并验证授权;0.7.4 不改变当前 helper 标识或主程序名。 - 历史验证记录与 Figma 原始证据仍保留旧名称;更名不代表重新完成所有平台网络验收。 - 发布前运行 `npm run test:branding`,检查构建名称与兼容身份一致性。 详细迁移注意事项见 [v0.6.0 发布说明草稿](docs/发布说明-v0.6.0.md)。 ## Windows 使用说明 - Windows TUN 使用管理员会话:先从托盘退出应用,再右键选择「以管理员身份运行」。整个应用会获得管理员权限,不安装常驻 Windows 服务,也不使用 macOS Helper 的安装/授权流程。普通系统代理不要求管理员会话。 - Windows 内核、配置校验和版本探测进程在创建时绑定 Job;停止、退出或应用进程异常终止会关闭受保护的进程树。关闭主窗口仅隐藏到托盘。系统代理在正常停止/退出时按快照恢复,异常终止后在下次启动尝试恢复。 - 系统代理恢复会核对当前代理是否仍由本应用控制,避免覆盖后来切回的 Clash 等客户端;临时接管会保留代理例外、停用 PAC,并在仍持有控制权时还原原有 PAC。切换前应关闭其他客户端的系统代理/TUN。 - 启动预检以 Google/Cloudflare 至少一个返回预期状态为基础联网条件;OpenAI 仍独立检查并显示警告,专项失败不会阻止基础代理启动。两个基础目标都失败时仍会阻止启动。 **Windows TUN 为实验性功能。** 已实现管理员权限检测和会话内核生命周期;真实 TUN 路由、DNS、停止后的网络恢复及异常退出恢复尚未完成整体验收。单元测试、界面模拟检查和构建成功不代表已通过网络接管验收。 ## 开发环境 Windows 10/11 x64/ARM64 使用对应 MSVC 工具链;需要 Microsoft C++ Build Tools、Windows SDK、Node.js/npm 和 WebView2。`npm run core:prepare` 按 Rust host target 下载内核,GNU target 不在当前内核清单中。 ```bash npm install npm run tauri dev ``` `npm run tauri dev` 会根据 `src-tauri/core-manifest.json` 自动下载并校验当前平台的 Mihomo sidecar。 准备全部目标平台核心: ```bash npm run core:prepare:all ``` Mihomo 运行时会先执行 `mihomo -t -d -f ` 配置检查,检查通过后才启动内核。 ## 验证 ```bash npm run test:branding npm run test:licenses npm run test:theme npm run test:rules npm run test:routing npm run build npm run test:rust cargo check --manifest-path src-tauri/Cargo.toml cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings ``` ## 发布架构 Tauri sidecar 为各目标平台提供匹配的 Mihomo 二进制: ```text src-tauri/binaries/mihomo- ``` 构建脚本校验固定压缩资产的 SHA-256,并验证当前平台的 `mihomo -v` 输出。CI 在 macOS、Windows 和 Linux 原生 runner 执行。 推送稳定版本标签 `vX.Y.Z` 后,`Release bundles` 在六个平台全部构建成功后自动创建 GitHub Release。标签必须与 `package.json`、Tauri 和 Cargo 版本一致,并提交对应的 `docs/发布说明-vX.Y.Z.md`。发布作业从该标签的锁文件重新生成依赖 SBOM 与许可证清单,核对输入 SHA-256 和项目许可元数据;收齐 12 个安装包、Mihomo GPL 许可证及上游源码、项目 `RouteDeck-LICENSE.txt`、`sbom.cdx.json`、`license-inventory.md`,加上 `SHA256SUMS.txt` 共 18 个附件,上传及 SHA-256 校验全部通过后才公开草稿。重复运行会复用内容相同的附件,遇到同名不同内容则停止,不覆盖原发布包。此规则适用于后续新发行版,v0.5.0 已发布的 15 个附件保持原样。手动 `workflow_dispatch` 只构建并保留 Actions artifacts,不创建发行版。