Clash Verge Rev 中的 Sidecar 管理系统负责下载、配置和管理提供核心代理功能的 Mihomo(前身为 Clash Meta)二进制可执行文件。这些可执行文件作为“sidecars”运行——应用程序通过与它们通信来处理实际的代理操作。
Sidecar 管理处理多个关键功能
支持两种主要的 Mihomo 核心版本
verge-mihomo): 生产就绪版本verge-mihomo-alpha): 包含最新功能的预发布版本来源: scripts/check.mjs1-568 src/components/setting/mods/clash-core-viewer.tsx1-138
该系统使用映射系统来确定每个目标平台和架构的正确二进制文件。此映射定义在 check.mjs 脚本中
来源: scripts/check.mjs17-42 scripts/check.mjs64-75 scripts/check.mjs110-122
该脚本支持多种平台组合,包括
对于稳定版和 Alpha 版,系统会
来源: scripts/check.mjs58-149 scripts/check.mjs205-280
下载过程处理不同的包格式
解压后,脚本会设置适当的执行权限(这对类 Unix 系统尤其重要)。
Sidecar 管理系统已集成到 CI/CD 工作流程中,以确保将正确的二进制文件包含在应用程序包中。
release 和 alpha 构建工作流程都调用 check.mjs 脚本来下载和准备必要的二进制文件
来源: .github/workflows/alpha.yml246-266 .github/workflows/release.yml65-69
除了核心二进制文件之外,该脚本还会下载和准备其他资源
这些资源被放置在应用程序包的 resources 目录中。
来源: scripts/check.mjs448-476 scripts/check.mjs489-544
在运行时,应用程序通过 Core Manager 组件管理 sidecar 进程,允许用户
Clash Core Viewer 组件提供了管理核心的界面
来源: src/components/setting/mods/clash-core-viewer.tsx23-79
当用户选择不同的核心时
来源: src/components/setting/mods/clash-core-viewer.tsx43-58
升级过程
来源: src/components/setting/mods/clash-core-viewer.tsx69-79
对于便携式构建,sidecar 二进制文件与主可执行文件一起直接包含在包中
便携式包包括
来源: scripts/portable.mjs19-50 scripts/portable-fixed-webview2.mjs22-64
Sidecar 遵循一致的命名模式
verge-mihomo-{target-platform}[.exe]verge-mihomo-alpha-{target-platform}[.exe]其中 {target-platform} 是 Rust 目标三元组(例如,x86_64-pc-windows-msvc)。
该系统实现了资源下载的重试机制
这确保了暂时的网络问题不会导致构建失败。
该应用程序包含更新应用程序本身和 sidecar 二进制文件的机制。
updater.mjs 脚本为自动更新系统生成更新信息
Sidecar 二进制文件会在以下情况更新
来源: src/components/setting/mods/clash-core-viewer.tsx69-79
Sidecar 管理系统为处理跨不同平台和架构的 Mihomo 核心二进制文件提供了一个强大的机制。它确保了在开发/构建时间和运行时都能获得适当的二进制文件,并为用户提供了根据需求选择稳定版和 Alpha 版的灵活性。
该系统设计为可扩展的,允许将来根据需要添加其他核心类型,并提供全面的错误处理以确保流畅的用户体验。