Zephyr v2.0.0
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.js、plugins.js、plugins-smart.js、rule-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.js、settings/theme.js、settings/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_execute10 次/10s、rule_import_url5 次/10s) - Capabilities 精简:移除
notification:allow-notify、global-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-latestrunner),同时检查 x86_64 和 aarch64 目标,解决objc2-exception-helper在 Linux 上无法交叉编译的问题 - pkg-config 交叉编译配置:设置
PKG_CONFIG_ALLOW_CROSS=1和PKG_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.