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': '10px', 'nodeBorder': '1px', 'clusterBorder': '1px', 'edgeLabelHeight': '10px'}, 'flowchart': {'curve': 'basis', 'nodeSpacing': 15, 'rankSpacing': 25}}}%%
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/>~30 个 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/>7 步文件名净化"]
    E --> F["供应链安全<br/>SHA256 校验<br/>可信域名白名单"]
    F --> G["CI/CD 扫描<br/>10 个安全 Job<br/>Semgrep + TruffleHog"]
Loading

外部依赖关系

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

%%{init: {'themeVariables': {'fontSize': '10px', 'nodeBorder': '1px', 'clusterBorder': '1px', 'edgeLabelHeight': '10px'}, 'flowchart': {'curve': 'basis', 'nodeSpacing': 15, 'rankSpacing': 25}}}%%
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.80) 内存安全,零 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