Expand description
§clash-prism-extension — UI Extension 通用接口
三层架构中的 Layer 2(Host Bridge),提供 GUI 客户端接入 Prism Engine 的统一接口。
§概述
clash-prism-extension 是 Prism Engine 的 GUI 集成层。任何 Mihomo GUI 客户端
只需实现 PrismHost trait(约 80-120 行 Rust 代码),即可获得完整的
Prism 配置编译、规则管理、文件监听等能力。
§架构
┌───────────────────────────────────────────────────────────────┐
│ Layer 3: Frontend JSON API (Tauri IPC / Electron IPC / HTTP) │
│ ← React/Vue/Svelte 前端调用 │
├───────────────────────────────────────────────────────────────┤
│ Layer 2: Host Bridge (Rust trait PrismHost) ← 本 crate │
│ ← GUI 实现适配层,桥接 Prism 和 GUI 内部 API │
├───────────────────────────────────────────────────────────────┤
│ Layer 1: Prism Core Engine (clash-prism-core / clash-prism-dsl / ...) │
│ ← 纯 Rust 库,无 GUI 依赖 │
└───────────────────────────────────────────────────────────────┘§核心类型
| 类型 | 说明 |
|---|---|
PrismHost | GUI 宿主接口 trait(GUI 必须实现) |
PrismExtension | Extension 主入口(提供高层 API) |
ApplyOptions | 编译选项 |
ApplyResult | 编译结果 |
PrismStatus | Extension 运行状态 |
RuleGroup | 规则分组(供 GUI 展示和管理) |
RuleAnnotation | 规则注解(标记规则归属) |
§模块结构
| 模块 | 说明 |
|---|---|
[host] | PrismHost trait 和宿主相关类型 |
[extension] | PrismExtension 主入口结构 |
[types] | API 数据结构定义 |
[annotation] | 规则注解提取和分组 |
§快速开始
ⓘ
use clash_prism_extension::{PrismHost, PrismExtension, ApplyOptions};
struct MyGuiHost { /* ... */ }
impl PrismHost for MyGuiHost {
fn read_running_config(&self) -> Result<String, String> { /* ... */ }
fn apply_config(&self, config: &str) -> Result<ApplyStatus, String> { /* ... */ }
fn get_prism_workspace(&self) -> Result<std::path::PathBuf, String> { /* ... */ }
fn notify(&self, event: PrismEvent) { /* ... */ }
}
let ext = PrismExtension::new(host);
let result = ext.apply(ApplyOptions::default())?;§主要 API
ⓘ
// 执行编译
let result = ext.apply(ApplyOptions::default())?;
// 查看运行状态
let status = ext.status();
// 列出规则组
let groups = ext.list_rules()?;
// 启用/禁用规则组
ext.toggle_group("ad-filter.prism.yaml", false)?;
// 判断规则归属
let info = ext.is_prism_rule(5)?;§Feature Flags
| Feature | 说明 |
|---|---|
watcher | 启用文件监听功能(依赖 notify crate) |
Structs§
- Apply
Options - Prism 编译选项
- Apply
Result - Prism 编译结果
- Apply
Status - 配置应用结果
- Compile
Stats - 编译统计
- Core
Info - 核心信息
- IsPrism
Rule - 判断规则是否由 Prism 管理的结果
- Patch
Stats - Patch 执行统计
- Prism
Extension - Prism Extension 主入口
- Prism
Status - Extension 运行状态
- Profile
Info - Profile 信息
- Rule
Annotation - 规则注解 — 标记哪些规则由 Prism 管理
- Rule
Diff - 规则变更差异
- Rule
Group - 规则组 — 一组由同一个 Patch 管理的规则
- Trace
View - 执行追踪视图(面向前端的精简版)
Enums§
- Prism
Event - 前端事件通知
- Rule
Insert Position - 规则插入位置
Traits§
- Prism
Host - 通用 Extension 宿主接口