菜单

Sidecar 管理

相关源文件

Clash Verge Rev 中的 Sidecar 管理系统负责下载、配置和管理提供核心代理功能的 Mihomo(前身为 Clash Meta)二进制可执行文件。这些可执行文件作为“sidecars”运行——应用程序通过与它们通信来处理实际的代理操作。

概述

Sidecar 管理处理多个关键功能

  1. 确定每个平台/架构组合的正确二进制文件
  2. 在构建时下载相应的版本
  3. 确保二进制文件的正确权限和放置
  4. 方便在不同核心版本之间进行运行时切换
  5. 提供核心二进制文件的升级机制

支持两种主要的 Mihomo 核心版本

  • 稳定版 (verge-mihomo): 生产就绪版本
  • Alpha 版 (verge-mihomo-alpha): 包含最新功能的预发布版本

来源: scripts/check.mjs1-568 src/components/setting/mods/clash-core-viewer.tsx1-138

Sidecar 二进制文件确定与下载

平台和架构检测

该系统使用映射系统来确定每个目标平台和架构的正确二进制文件。此映射定义在 check.mjs 脚本中

来源: scripts/check.mjs17-42 scripts/check.mjs64-75 scripts/check.mjs110-122

该脚本支持多种平台组合,包括

  • Windows: x64, ia32, arm64
  • macOS: x64 (Intel), arm64 (Apple Silicon)
  • Linux: x64, ia32, arm64, armv7, riscv64, loong64

版本确定与下载

对于稳定版和 Alpha 版,系统会

  1. 从 Mihomo GitHub 仓库获取最新版本信息
  2. 根据平台、架构和版本构建下载 URL
  3. 下载并处理二进制文件

来源: scripts/check.mjs58-149 scripts/check.mjs205-280

二进制文件处理

下载过程处理不同的包格式

  1. ZIP 文件 (Windows): 解压后将可执行文件移动到 sidecar 目录
  2. GZ 文件 (macOS/Linux): 直接解压到 sidecar 目录

解压后,脚本会设置适当的执行权限(这对类 Unix 系统尤其重要)。

来源: scripts/check.mjs225-271

构建集成

Sidecar 管理系统已集成到 CI/CD 工作流程中,以确保将正确的二进制文件包含在应用程序包中。

工作流集成

release 和 alpha 构建工作流程都调用 check.mjs 脚本来下载和准备必要的二进制文件

来源: .github/workflows/alpha.yml246-266 .github/workflows/release.yml65-69

资源管理

除了核心二进制文件之外,该脚本还会下载和准备其他资源

  1. Country.mmdb: 地理位置数据库
  2. geosite.datgeoip.dat: 用于路由规则
  3. 服务可执行文件: 用于系统服务功能
  4. 其他特定于平台的实用程序: 例如 Windows 的 sysproxy.exe

这些资源被放置在应用程序包的 resources 目录中。

来源: scripts/check.mjs448-476 scripts/check.mjs489-544

运行时管理

在运行时,应用程序通过 Core Manager 组件管理 sidecar 进程,允许用户

  1. 选择要使用的核心
  2. 在需要时重新启动核心
  3. 升级到最新版本

用户界面

Clash Core Viewer 组件提供了管理核心的界面

来源: src/components/setting/mods/clash-core-viewer.tsx23-79

核心切换

当用户选择不同的核心时

  1. 所有现有连接都会被关闭
  2. Core Manager 会切换到选定的二进制文件
  3. UI 会更新以反映更改

来源: src/components/setting/mods/clash-core-viewer.tsx43-58

核心升级

升级过程

  1. 下载所选核心的最新版本
  2. 替换现有二进制文件
  3. 重启核心进程

来源: src/components/setting/mods/clash-core-viewer.tsx69-79

便携式包生成

对于便携式构建,sidecar 二进制文件与主可执行文件一起直接包含在包中

便携式包包括

  • 主要的 Clash Verge 可执行文件
  • 稳定版和 Alpha 版的 Mihomo 二进制文件
  • 资源目录,包含所有必需的数据文件
  • 一个被标记为便携式的配置目录

来源: scripts/portable.mjs19-50 scripts/portable-fixed-webview2.mjs22-64

实现细节

Sidecar 命名约定

Sidecar 遵循一致的命名模式

  • 稳定版: verge-mihomo-{target-platform}[.exe]
  • Alpha 版: verge-mihomo-alpha-{target-platform}[.exe]

其中 {target-platform} 是 Rust 目标三元组(例如,x86_64-pc-windows-msvc)。

来源: scripts/check.mjs176-200

下载错误处理

该系统实现了资源下载的重试机制

  1. 每个资源都有定义的重试次数
  2. 如果下载失败,系统将重试直到达到指定限制
  3. 如果所有重试都失败,构建过程将失败

这确保了暂时的网络问题不会导致构建失败。

来源: scripts/check.mjs555-565

更新管理

该应用程序包含更新应用程序本身和 sidecar 二进制文件的机制。

应用程序更新

updater.mjs 脚本为自动更新系统生成更新信息

来源: scripts/updater.mjs14-301

Sidecar 二进制文件更新

Sidecar 二进制文件会在以下情况更新

  1. 用户通过 UI 触发升级
  2. 应用程序更新到包含更新二进制文件的新版本

来源: src/components/setting/mods/clash-core-viewer.tsx69-79

结论

Sidecar 管理系统为处理跨不同平台和架构的 Mihomo 核心二进制文件提供了一个强大的机制。它确保了在开发/构建时间和运行时都能获得适当的二进制文件,并为用户提供了根据需求选择稳定版和 Alpha 版的灵活性。

该系统设计为可扩展的,允许将来根据需要添加其他核心类型,并提供全面的错误处理以确保流畅的用户体验。