Skip to content
Juwan-Hwang edited this page Apr 11, 2026 · 27 revisions

Zephyr

基于 Tauri v2 的现代化 Mihomo GUI 客户端 -- 轻量、安全、跨平台

Zephyr 是一款基于 Tauri v2 框架与原生 Web 技术构建的跨平台桌面代理管理客户端,专为 Mihomo(Clash Meta)内核设计。项目采用 Rust 后端 + 原生 JavaScript 前端的极简架构,在保持功能完备的同时实现了极低的资源占用与卓越的运行时性能。


截图预览

主页

更多截图
设置页面 深色模式
设置 深色模式

技术栈架构

%%{init: {'themeVariables': {'fontSize': '9px', 'nodeBorder': '1px', 'clusterBorder': '1px', 'edgeLabelHeight': '8px'}}}%%
graph TB
    subgraph Frontend["前端层 (UI Layer)"]
        JS["原生 JavaScript<br/>ES Modules"]
        TW["Tailwind CSS v4<br/>原子化样式"]
        CV["Canvas 2D API<br/>流量图表渲染"]
    end

    subgraph IPC["Tauri IPC 桥接层"]
        CMD["Command Registry<br/>35 个 Tauri Commands"]
        EVT["Event System<br/>后端 → 前端推送"]
        STATE["State Management<br/>MihomoState / TrayState / RateLimiter"]
    end

    subgraph Backend["Rust 后端层"]
        TAURI["Tauri v2<br/>应用框架"]
        REQ["reqwest<br/>HTTP 客户端"]
        AES["aes-gcm<br/>AES-256-GCM 加密"]
    end

    subgraph Core["Mihomo 内核层"]
        MIHOMO["Mihomo (Clash Meta)<br/>代理引擎"]
        REST["RESTful API :9090"]
        STREAM["HTTP Streaming /traffic"]
        TUN["TUN 虚拟网卡"]
    end

    Frontend -->|invoke / emit| IPC
    IPC -->|Rust Command Handlers| Backend
    Backend -->|Process spawn / REST API| Core
Loading

安全纵深防御

%%{init: {'themeVariables': {'fontSize': '10px', 'nodeBorder': '1px', 'clusterBorder': '1px', 'edgeLabelHeight': '10px'}, 'flowchart': {'curve': 'basis', 'nodeSpacing': 15, 'rankSpacing': 25}}}%%
graph LR
    A["CSP<br/>内容安全策略<br/>script-src 'self'"] --> B["Tauri 权限<br/>最小权限原则<br/>无 fs / shell / http"]
    B --> C["SSRF 防护<br/>DNS 预解析 + IP 校验<br/>DNS Pinning + 重定向链校验"]
    C --> D["加密存储<br/>AES-256-GCM<br/>PBKDF2 100K 迭代"]
    D --> E["路径遍历防护<br/>5 轮 URL 解码<br/>9 步文件名净化"]
    E --> F["供应链安全<br/>SHA256 校验<br/>可信域名白名单"]
    F --> G["CI/CD 扫描<br/>10 个安全 Job<br/>Semgrep + 自定义密钥检测脚本"]
Loading

外部依赖关系

下图展示了 Zephyr 各层级的外部依赖及其之间的关系:

%%{init: {'themeVariables': {'fontSize': '9px', 'nodeBorder': '1px', 'clusterBorder': '1px', 'edgeLabelHeight': '8px'}}}%%
graph TB
    subgraph 前端依赖["前端依赖"]
        TW["Tailwind CSS v4<br/>原子化样式"]
    end

    subgraph 后端依赖["后端依赖 (Rust Crates)"]
        TAURI["Tauri v2<br/>应用框架"]
        REQ["reqwest<br/>HTTP 客户端"]
        AES["aes-gcm<br/>AES-256-GCM 加密"]
        SERDE["serde / serde_yaml<br/>序列化"]
        TOKIO["tokio<br/>异步运行时"]
        B64["base64<br/>Base64 编解码"]
        UUID["uuid<br/>唯一标识符"]
        HEX["hex<br/>十六进制编解码"]
        RAND["rand<br/>随机数生成"]
    end

    subgraph 系统依赖["系统依赖"]
        WV["WebView2 / WebKit2GTK<br/>Web 渲染引擎"]
        CORE["Mihomo Core<br/>代理引擎"]
    end

    TAURI --> WV
    TAURI --> CORE
    REQ --> AES
    AES --> B64
    AES --> RAND
    SERDE --> HEX
    TAURI --> TOKIO
    TAURI --> SERDE
    TAURI --> UUID
    TAURI --> REQ

    style 前端依赖 fill:#f39c12,stroke:#e67e22,color:#fff
    style 后端依赖 fill:#3498db,stroke:#2980b9,color:#fff
    style 系统依赖 fill:#2ecc71,stroke:#27ae60,color:#fff
Loading

设计理念

  • 安全优先 -- 多层纵深防御体系,从 CSP 策略到 CI/CD 自动化扫描,覆盖全攻击面。Fail-closed 设计:所有安全检查失败时拒绝操作,而非降级放行
  • 极简依赖 -- 零前端框架(无 React/Vue/Svelte),零图表库(原生 Canvas 2D),极致轻量。整个前端仅 7 个 ES Module 文件
  • 跨平台一致 -- Windows / macOS / Linux 三平台统一代码库,差异化能力精准适配(Windows 注册表代理、macOS osascript 提权、Linux 多桌面环境检测)
  • 配置即代码 -- 所有安全策略通过 CI/CD 流水线强制执行,10 层自动化安全扫描确保策略不会被意外绕过

技术栈

层级 技术选型 说明
应用框架 Tauri v2 Rust 驱动的跨平台桌面框架
后端语言 Rust 2021 (Edition 2021, MSRV 1.70+) 内存安全,零 GC,高性能
前端语言 原生 JavaScript (ES Modules) 无框架依赖,直接 DOM 操作
样式系统 Tailwind CSS v4.2 原子化 CSS,@import "tailwindcss"
流量图表 原生 Canvas 2D API 贝塞尔曲线面积图,requestAnimationFrame 节流
代理内核 Mihomo (Clash Meta) RESTful API + HTTP Streaming
加密方案 AES-256-GCM + PBKDF2-HMAC-SHA256 100,000 次迭代密钥派生

目录

Clone this wiki locally