Skip to content

Zephyr v2.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Apr 08:47

Zephyr v2.0.0 — Prism Engine 集成 & 规则引擎 & 安全加固 & 可靠性提升

这是 Zephyr 迄今为止最大的一次功能更新。新增 Prism Engine 规则引擎(81 个 IPC 命令)、脚本沙箱、智能节点选择、规则库管理、插件系统,以及全面的供应链安全加固和原子更新机制。

⚡ Prism Engine

Zephyr 内置了基于 clash-prism-* crate 的声明式规则引擎,通过 5 个独立 crate 实现模块化架构:

  • 声明式规则补丁.prism.yaml 支持 $prepend$append$filter$override__when__ 条件,无需手动编辑 Mihomo 配置
  • 规则库管理:内置规则文件 CRUD、分组、从 URL 订阅导入(自动 YAML 安全清洗)、文件监听自动应用
  • 智能节点选择:基于延迟、成功率、稳定性的 EMA 评分与自适应调度,自动选择最优节点
  • 自动故障转移(Failover):节点失败时自动切换,支持阈值、冷却时间和回退策略
  • 脚本沙箱:QuickJS 执行环境,九维资源限制(执行时间/内存/输出/日志/脚本大小/字符串长度/循环/递归)+ 四维权限控制(network/filesystem/child_process/workers),默认全部关闭
  • 插件系统:插件发现、加载、生命周期钩子和细粒度权限控制
  • KV 存储:持久化键值存储能力
  • 配置热重载:通过 Mihomo REST API 实现配置无缝热重载
  • 配置验证:通过 mihomo -t -f 验证配置有效性,应用前预检

🏗️ 架构变更

  • Prism Engine 后端:新增 prism.rs(290 行)+ prism/ 模块(12 个子文件,2504 行),包含命令核心、规则库、智能路由、插件、脚本沙箱、速率限制、故障转移、KV 存储、配置 trace 等子模块
  • Prism Engine 前端:新增 prism.jsplugins.jsplugins-smart.jsrule-library.js 四个 UI 模块
  • CodeMirror 6 编辑器:新增 editor/ 目录(cm6-entry、prism-completion、prism-highlight、prism-editor),支持 Prism DSL 语法高亮与自动补全
  • CoreData 封装改进CoreData 字段从 pub 改为私有,通过 getter/setter 方法访问,增强信息隐藏
  • 设置模块拆分settings.js 拆分为 settings/subscriptions.jssettings/theme.jssettings/tunnels.js 三个子模块
  • 新增工具模块virtual-scroll.js(虚拟滚动)、context-menu.js(右键菜单)、rule-utils.js(规则工具)
  • IPC 命令:从 49 个增至 128 个(+79 个,含 81 个 Prism 命令和 rename_config

🔒 安全加固

  • Prism 输入验证sanitize_filename(URL 解码 + 拒绝路径分隔符/空字节/保留名)、validate_plugin_id(128 字符限制)、check_input_size(10MB 硬上限)
  • YAML 清洗:导入规则时通过 remove_dangerous_keys 递归移除危险 key
  • URL 验证validate_subscription_url_with_ip — DNS 解析 + IP Pinning 防止 DNS 重绑定
  • 双重速率限制:原有命令(rate_limit! 宏,固定冷却时间)+ Prism 命令(滑动窗口速率限制器:script_execute 10 次/10s、rule_import_url 5 次/10s)
  • Capabilities 精简:移除 notification:allow-notifyglobal-shortcut:allow-register/unregister(改为 Rust 内部直接调用),新增 core:window:allow-set-title,权限从 23 项减至 21 项
  • 新增 escapeAttr()sanitize.js 新增 HTML 属性值转义函数
  • 许可证白名单deny.toml 新增 CC0-1.0(notify crate 依赖)

🛠️ 可靠性提升

  • 核心更新原子回滚update_core 改为原子替换序列(旧二进制 → 备份 → 新二进制 → 验证),失败时自动回滚到上一版本
  • Geo 数据原子更新update_geo_data 改为原子交换模式,两个 geo 文件必须同时成功或同时回滚
  • 配置文件原子写入:订阅更新采用 temp → backup → target 顺序,metadata 写入失败时自动回滚配置
  • Mihomo 启动健康检查core_process 新增 health_check(),启动后通过 HTTP 请求验证 API 可用性(最多 20 次,间隔 1 秒)
  • 端口等待:macOS 上新增 wait_for_port_free(),等待端口释放(最多 50 次,间隔 100ms)

🧪 测试

  • Prism Engine 测试:新增 prism_tests.rs(1361 行,119 个单元测试)
  • 集成测试:新增 integration.test.js(687 行)
  • Rust 测试总数:181 → 304(+123)
  • Clippy deny 规则:100+ → 165

🔧 CI / CD

  • macOS 编译检查:新增独立 Job(macos-latest runner),同时检查 x86_64 和 aarch64 目标,解决 objc2-exception-helper 在 Linux 上无法交叉编译的问题
  • pkg-config 交叉编译配置:设置 PKG_CONFIG_ALLOW_CROSS=1PKG_CONFIG_SYSROOT_DIR,与 release.yml 保持一致
  • ESLint 集成:Build Verification Job 新增 ESLint 静态分析步骤
  • 安全扫描 Job:10 → 11 个
  • test-badges workflow:新增动态测试数量徽章(Gist + shields.io)

📦 下载说明

请根据您的操作系统选择对应版本(full 版本含所有依赖,lite 版本体积更小):

平台 Full 版本 Lite 版本
Windows (x64) Zephyr_2.0.0_x64-setup-full.exe Zephyr_2.0.0_x64-setup-lite.exe
Windows (x64 MSI) Zephyr_2.0.0_x64_zh-CN-full.msi Zephyr_2.0.0_x64_zh-CN-lite.msi
macOS (Apple Silicon) Zephyr_2.0.0_aarch64-full.dmg Zephyr_2.0.0_aarch64-lite.dmg
macOS (Intel x64) Zephyr_2.0.0_x64-full.dmg Zephyr_2.0.0_x64-lite.dmg
Linux (deb, amd64) Zephyr_2.0.0_amd64-full.deb Zephyr_2.0.0_amd64-lite.deb
Linux (AppImage, amd64) Zephyr_2.0.0_amd64-full.AppImage Zephyr_2.0.0_amd64-lite.AppImage
Linux (RPM, x86_64) Zephyr-2.0.0-1.x86_64-full.rpm Zephyr-2.0.0-1.x86_64-lite.rpm

⚠️免责声明:本项目由 AI 开发,安全性和性能尚未经充分验证,请自行评估使用风险。如发现安全问题或 Bug,欢迎提交 Issue。
this version.