Skip to content

Tauri IPC 命令参考

本文档整理 src-tauri/src/cmd/*.rs 中所有 #[tauri::command],共 52 个命令,按模块分组说明。

阅读约定

  • 参数表中的 Rust 类型 保留源码签名原样。
  • AppHandletauri::State<'_, ...> 属于 Tauri 注入上下文,不需要前端手动传入;文档仍会列出以保证和源码一致。
  • TypeScript 示例统一对齐项目现有 src/lib/tauri-api.tsinvoke(...) 用法,默认已执行 import { invoke } from "@tauri-apps/api/core";
  • 返回 serde_json::Value 的命令表示“直接透传 JSON”;如果源码没有进一步约束结构,文档不会补造字段。

模块总览

模块源文件命令数主要职责
AI 服务src-tauri/src/cmd/ai.rs16AI sidecar 生命周期、聊天、报告、快照、对话持久化
Mihomo Sidecarsrc-tauri/src/cmd/sidecar.rs6Mihomo 进程启动、重启、配置目录初始化
代理src-tauri/src/cmd/proxy.rs5代理组切换、延迟测试、规则查询
配置src-tauri/src/cmd/config.rs5配置文件读写与 Mihomo 运行时配置读写
系统src-tauri/src/cmd/system.rs7版本、连接管理、系统代理、Mihomo 客户端地址更新
采集器src-tauri/src/cmd/collector.rs5WebSocket 采集器生命周期与实时连接缓存
统计src-tauri/src/cmd/stats.rs8数据库清理、统计总览、流量、域名、规则、Geo 统计

AI 服务命令

源文件:src-tauri/src/cmd/ai.rs

start_ai_service

名称 start_ai_service

参数

参数Rust 类型来源说明
appAppHandleTauri 注入当前应用句柄
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态

返回值

成功时返回 ();失败时返回 AiSidecarError

说明

启动 AI sidecar 进程。

调用示例

rust
pub async fn start_ai_service(
    app: AppHandle,
    state: tauri::State<'_, AiSidecarState>,
) -> Result<(), AiSidecarError>
ts
await invoke("start_ai_service");

:::

stop_ai_service

名称 stop_ai_service

参数

参数Rust 类型来源说明
appAppHandleTauri 注入当前应用句柄
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态

返回值

成功时返回 ();失败时返回 AiSidecarError

说明

停止 AI sidecar 进程。

调用示例

rust
pub fn stop_ai_service(
    app: AppHandle,
    state: tauri::State<'_, AiSidecarState>,
) -> Result<(), AiSidecarError>
ts
await invoke("stop_ai_service");

:::

get_ai_status

名称 get_ai_status

参数

参数Rust 类型来源说明
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态

返回值

成功时返回 bool,表示 sidecar 是否运行;失败时返回 AiSidecarError

说明

查询 AI sidecar 当前是否已启动。

调用示例

rust
pub fn get_ai_status(
    state: tauri::State<'_, AiSidecarState>,
) -> Result<bool, AiSidecarError>
ts
const running = await invoke<boolean>("get_ai_status");

:::

get_ai_settings

名称 get_ai_settings

参数

参数Rust 类型来源说明
appAppHandleTauri 注入用于解析应用数据目录并读取 ai-settings.json

返回值

成功时返回 AiSettings;失败时返回 AiSettingsError

说明

读取 AI 设置文件。字段见文末 通用类型 中的 AiSettings

调用示例

rust
pub async fn get_ai_settings(app: AppHandle) -> Result<AiSettings, AiSettingsError>
ts
const settings = await invoke<AiSettings>("get_ai_settings");

:::

set_ai_settings

名称 set_ai_settings

参数

参数Rust 类型来源说明
appAppHandleTauri 注入用于解析应用数据目录并写入设置文件
settingsAiSettings前端传入AI 设置对象,写入前会执行 normalized()

返回值

成功时返回 ();失败时返回 AiSettingsError

说明

保存 AI 设置到 ai-settings.json。空白字符串会被 trim()temperature 会被限制到 0.0..=1.0max_tokens 至少为 1

调用示例

rust
pub async fn set_ai_settings(
    app: AppHandle,
    settings: AiSettings,
) -> Result<(), AiSettingsError>
ts
await invoke("set_ai_settings", {
  settings: {
    provider: "openai",
    model: "gpt-4o-mini",
    apiKey: "sk-...",
    baseUrl: "",
    temperature: 0.3,
    maxTokens: 4096,
    autoStart: false,
  },
});

:::

ai_ping

名称 ai_ping

参数

参数Rust 类型来源说明
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态

返回值

成功时返回 serde_json::Value,当前实现结构为 { pong: true, timestamp: number };失败时返回 AiSidecarError

说明

向 AI sidecar 发送 ping JSON-RPC 请求。

调用示例

rust
pub async fn ai_ping(
    state: tauri::State<'_, AiSidecarState>,
) -> Result<serde_json::Value, AiSidecarError>
ts
const ping = await invoke<{ pong: boolean; timestamp: number }>("ai_ping");

:::

test_ai_connection

名称 test_ai_connection

参数

参数Rust 类型来源说明
appAppHandleTauri 注入用于在 sidecar 未启动时自动启动
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态
settingsAiSettings前端传入连通性测试使用的 Provider 配置

返回值

成功时返回 AiConnectionTestResult;失败时返回 AiSettingsError

说明

测试当前 Provider 是否可连通。调用前会先校验 modelapiKeybaseUrl 是否满足所选 Provider 要求。

调用示例

rust
pub async fn test_ai_connection(
    app: AppHandle,
    state: tauri::State<'_, AiSidecarState>,
    settings: AiSettings,
) -> Result<AiConnectionTestResult, AiSettingsError>
ts
const result = await invoke<AiConnectionTestResult>("test_ai_connection", {
  settings,
});

:::

fetch_ai_models

名称 fetch_ai_models

参数

参数Rust 类型来源说明
appAppHandleTauri 注入用于在 sidecar 未启动时自动启动
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态
settingsAiSettings前端传入模型列表查询使用的 Provider 配置

返回值

成功时返回 AiModelCatalog;失败时返回 AiSettingsError

说明

向 AI sidecar 请求模型列表。返回值中的 source 可能是 remotefallbackempty

调用示例

rust
pub async fn fetch_ai_models(
    app: AppHandle,
    state: tauri::State<'_, AiSidecarState>,
    settings: AiSettings,
) -> Result<AiModelCatalog, AiSettingsError>
ts
const catalog = await invoke<AiModelCatalog>("fetch_ai_models", {
  settings,
});

:::

ai_chat

名称 ai_chat

参数

参数Rust 类型来源说明
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态
paramsAiChatParams前端传入聊天消息、上下文和 Provider 设置

返回值

成功时返回 ();失败时返回 AiSidecarError

说明

发起流式聊天请求。messages 不能为空,且 params.settings.model 不能为空。真正的文本和工具事件通过流式事件通道返回,而不是命令同步返回值。

调用示例

rust
pub fn ai_chat(
    state: tauri::State<'_, AiSidecarState>,
    params: AiChatParams,
) -> Result<(), AiSidecarError>
ts
await invoke("ai_chat", {
  params: {
    messages: [{ role: "user", content: "请分析最近一周流量" }],
    context: {
      availableProxies: ["DIRECT", "Proxy"],
    },
    settings: {
      provider: "openai",
      model: "gpt-4o-mini",
      apiKey: "sk-...",
    },
  },
});

:::

ai_generate_report

名称 ai_generate_report

参数

参数Rust 类型来源说明
appAppHandleTauri 注入用于在 sidecar 未启动时自动启动
statetauri::State<'_, AiSidecarState>Tauri 注入AI sidecar 生命周期状态
report_typeReportType前端传入报告类型,枚举值见文末
dateOption<String>前端传入报告结束日期,格式 YYYY-MM-DD;可选
settingsAiProviderSettings前端传入报告生成使用的 Provider 配置

返回值

成功时返回 ReportResult;失败时返回 AiReportError

说明

生成日报或周报。内部会先通过回调拿到统计数据,再调用 AI sidecar 的 generate_report 方法。

调用示例

rust
pub async fn ai_generate_report(
    app: AppHandle,
    state: tauri::State<'_, AiSidecarState>,
    report_type: ReportType,
    date: Option<String>,
    settings: AiProviderSettings,
) -> Result<ReportResult, AiReportError>
ts
const report = await invoke<ReportResult>("ai_generate_report", {
  reportType: "weekly",
  date: "2026-04-08",
  settings: {
    provider: "openai",
    model: "gpt-4o-mini",
    apiKey: "sk-...",
    temperature: 0.35,
    maxTokens: 4096,
  },
});

:::

apply_config_change

名称 apply_config_change

参数

参数Rust 类型来源说明
app_handleAppHandleTauri 注入用于访问数据库和应用状态
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入当前活动配置目录状态
mihomo_statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
original_configString前端传入用户确认前看到的原始配置 YAML
modified_configString前端传入待应用的修改后 YAML

返回值

成功时返回 ();失败时返回 AiConfigChangeError

说明

在真正写文件前会比对当前运行时配置是否仍等于 original_config,防止基线过期;随后创建 AI 自动快照、写入文件并触发热重载,若热重载失败会自动回滚。

调用示例

rust
pub async fn apply_config_change(
    app_handle: AppHandle,
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    mihomo_state: tauri::State<'_, MihomoState>,
    original_config: String,
    modified_config: String,
) -> Result<(), AiConfigChangeError>
ts
await invoke("apply_config_change", {
  originalConfig,
  modifiedConfig,
});

:::

reject_config_change

名称 reject_config_change

参数

无。

返回值

成功时返回 ();失败时返回 AiConfigChangeError

说明

当前实现为显式 no-op,用于确认“用户拒绝本次配置变更”这一动作。

调用示例

rust
pub fn reject_config_change() -> Result<(), AiConfigChangeError>
ts
await invoke("reject_config_change");

:::

list_snapshots

名称 list_snapshots

参数

参数Rust 类型来源说明
app_handleAppHandleTauri 注入用于访问快照数据库
limiti32前端传入最大返回条数

返回值

成功时返回 Vec<ConfigSnapshot>;失败时返回 AiConfigChangeError

说明

按创建时间倒序返回配置快照列表。

调用示例

rust
pub async fn list_snapshots(
    app_handle: AppHandle,
    limit: i32,
) -> Result<Vec<ConfigSnapshot>, AiConfigChangeError>
ts
const snapshots = await invoke<ConfigSnapshot[]>("list_snapshots", {
  limit: 20,
});

:::

create_snapshot

名称 create_snapshot

参数

参数Rust 类型来源说明
app_handleAppHandleTauri 注入用于访问快照数据库
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入当前活动配置目录状态
descriptionOption<String>前端传入快照描述;为空时默认 "手动快照"
file_pathOption<String>前端传入指定快照目标文件;为空时使用当前活动配置文件

返回值

成功时返回 i64(新快照 ID);失败时返回 AiConfigChangeError

说明

读取目标配置文件当前内容并创建手动快照。

调用示例

rust
pub async fn create_snapshot(
    app_handle: AppHandle,
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    description: Option<String>,
    file_path: Option<String>,
) -> Result<i64, AiConfigChangeError>
ts
const snapshotId = await invoke<number>("create_snapshot", {
  description: "调整前备份",
  filePath: "C:/Users/no525/.config/mihomo/config.yaml",
});

:::

restore_snapshot

名称 restore_snapshot

参数

参数Rust 类型来源说明
app_handleAppHandleTauri 注入用于访问快照数据库
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入当前活动配置目录状态
mihomo_statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
idi64前端传入快照 ID

返回值

成功时返回 ();失败时返回 AiConfigChangeError

说明

恢复指定快照前会先验证快照文件路径必须和当前活动配置文件一致,并自动创建一份“恢复前备份”快照。

调用示例

rust
pub async fn restore_snapshot(
    app_handle: AppHandle,
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    mihomo_state: tauri::State<'_, MihomoState>,
    id: i64,
) -> Result<(), AiConfigChangeError>
ts
await invoke("restore_snapshot", { id: 42 });

:::

save_conversation_message

名称 save_conversation_message

参数

参数Rust 类型来源说明
app_handleAppHandleTauri 注入用于访问会话数据库
paramsSaveConversationMessageParams前端传入单条会话消息及元数据

返回值

成功时返回 i64(消息 ID);失败时返回 AiConfigChangeError

说明

持久化一条聊天消息,并在写入后触发历史清理。

调用示例

rust
pub async fn save_conversation_message(
    app_handle: AppHandle,
    params: SaveConversationMessageParams,
) -> Result<i64, AiConfigChangeError>
ts
const messageId = await invoke<number>("save_conversation_message", {
  params: {
    role: "assistant",
    content: "建议切换到自动测速代理组。",
    tokensUsed: 284,
    model: "gpt-4o-mini",
  },
});

:::

Mihomo Sidecar 命令

源文件:src-tauri/src/cmd/sidecar.rs

start_mihomo

名称 start_mihomo

参数

参数Rust 类型来源说明
appAppHandleTauri 注入当前应用句柄
statetauri::State<'_, SidecarState>Tauri 注入Mihomo sidecar 生命周期状态
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入当前配置目录状态
config_pathString前端传入Mihomo 配置目录路径

返回值

成功时返回 ();失败时返回 SidecarError

说明

设置当前配置目录后启动 Mihomo,并重启日志订阅与流量订阅任务。

调用示例

rust
pub fn start_mihomo(
    app: AppHandle,
    state: tauri::State<'_, SidecarState>,
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    config_path: String,
) -> Result<(), SidecarError>
ts
await invoke("start_mihomo", {
  configPath: "C:/Users/no525/.config/mihomo",
});

:::

stop_mihomo

名称 stop_mihomo

参数

参数Rust 类型来源说明
statetauri::State<'_, SidecarState>Tauri 注入Mihomo sidecar 生命周期状态

返回值

成功时返回 ();失败时返回 SidecarError

说明

停止 Mihomo sidecar。

调用示例

rust
pub fn stop_mihomo(
    state: tauri::State<'_, SidecarState>,
) -> Result<(), SidecarError>
ts
await invoke("stop_mihomo");

:::

restart_mihomo

名称 restart_mihomo

参数

参数Rust 类型来源说明
appAppHandleTauri 注入当前应用句柄
statetauri::State<'_, SidecarState>Tauri 注入Mihomo sidecar 生命周期状态
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入当前配置目录状态
config_pathString前端传入Mihomo 配置目录路径

返回值

成功时返回 ();失败时返回 SidecarError

说明

重启 Mihomo,并重新建立日志与流量订阅。

调用示例

rust
pub fn restart_mihomo(
    app: AppHandle,
    state: tauri::State<'_, SidecarState>,
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    config_path: String,
) -> Result<(), SidecarError>
ts
await invoke("restart_mihomo", {
  configPath: "C:/Users/no525/.config/mihomo",
});

:::

get_mihomo_status

名称 get_mihomo_status

参数

参数Rust 类型来源说明
statetauri::State<'_, SidecarState>Tauri 注入Mihomo sidecar 生命周期状态

返回值

成功时返回 bool;失败时返回 SidecarError

说明

查询 Mihomo 进程是否正在运行。

调用示例

rust
pub fn get_mihomo_status(
    state: tauri::State<'_, SidecarState>,
) -> Result<bool, SidecarError>
ts
const running = await invoke<boolean>("get_mihomo_status");

:::

check_config_exists

名称 check_config_exists

参数

参数Rust 类型来源说明
config_pathString前端传入Mihomo 配置目录路径

返回值

成功时返回 bool;失败时返回 SidecarError

说明

检查目录下是否存在 config.yaml,并且文件内容包含 external-controller

调用示例

rust
pub fn check_config_exists(config_path: String) -> Result<bool, SidecarError>
ts
const ok = await invoke<boolean>("check_config_exists", {
  configPath: "C:/Users/no525/.config/mihomo",
});

:::

ensure_default_config

名称 ensure_default_config

参数

参数Rust 类型来源说明
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入当前配置目录状态
config_pathString前端传入Mihomo 配置目录路径

返回值

成功时返回 ();失败时返回 SidecarError

说明

确保配置目录存在,并在缺少有效 config.yaml 时写入默认内容。

调用示例

rust
pub fn ensure_default_config(
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    config_path: String,
) -> Result<(), SidecarError>
ts
await invoke("ensure_default_config", {
  configPath: "C:/Users/no525/.config/mihomo",
});

:::

代理命令

源文件:src-tauri/src/cmd/proxy.rs

get_proxies

名称 get_proxies

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 serde_json::Value,即 Mihomo /proxies 原始 JSON;失败时返回 MihomoError

说明

获取当前所有代理组和节点信息。

调用示例

rust
pub async fn get_proxies(
    state: tauri::State<'_, MihomoState>,
) -> Result<serde_json::Value, MihomoError>
ts
const proxies = await invoke<Record<string, unknown>>("get_proxies");

:::

switch_proxy

名称 switch_proxy

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
groupString前端传入代理组名称
nameString前端传入目标节点名称

返回值

成功时返回 ();失败时返回 MihomoError

说明

切换代理组的当前节点。

调用示例

rust
pub async fn switch_proxy(
    state: tauri::State<'_, MihomoState>,
    group: String,
    name: String,
) -> Result<(), MihomoError>
ts
await invoke("switch_proxy", {
  group: "Proxy",
  name: "HK-01",
});

:::

test_delay

名称 test_delay

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
nameString前端传入节点名称
urlString前端传入延迟测试 URL
timeoutu32前端传入超时时间,单位毫秒

返回值

成功时返回 u32(延迟毫秒值);失败时返回 MihomoError

说明

对单个代理节点执行延迟测试。

调用示例

rust
pub async fn test_delay(
    state: tauri::State<'_, MihomoState>,
    name: String,
    url: String,
    timeout: u32,
) -> Result<u32, MihomoError>
ts
const delay = await invoke<number>("test_delay", {
  name: "HK-01",
  url: "http://www.gstatic.com/generate_204",
  timeout: 5000,
});

:::

test_group_delay

名称 test_group_delay

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
groupString前端传入代理组名称
urlString前端传入延迟测试 URL
timeoutu32前端传入超时时间,单位毫秒

返回值

成功时返回 HashMap<String, u32>,键为节点名、值为延迟毫秒值;失败时返回 MihomoError

说明

对整个代理组执行延迟测试。

调用示例

rust
pub async fn test_group_delay(
    state: tauri::State<'_, MihomoState>,
    group: String,
    url: String,
    timeout: u32,
) -> Result<HashMap<String, u32>, MihomoError>
ts
const delays = await invoke<Record<string, number>>("test_group_delay", {
  group: "Auto",
  url: "http://www.gstatic.com/generate_204",
  timeout: 5000,
});

:::

get_rules

名称 get_rules

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 serde_json::Value,即 Mihomo /rules 原始 JSON;失败时返回 MihomoError

说明

获取当前规则列表。

调用示例

rust
pub async fn get_rules(
    state: tauri::State<'_, MihomoState>,
) -> Result<serde_json::Value, MihomoError>
ts
const rules = await invoke<Record<string, unknown>>("get_rules");

:::

配置命令

源文件:src-tauri/src/cmd/config.rs

read_config

名称 read_config

参数

参数Rust 类型来源说明
pathString前端传入配置文件路径,内部会执行 expand_tilde

返回值

成功时返回 String(文件全文);失败时返回 ConfigError

说明

读取指定配置文件内容。

调用示例

rust
pub async fn read_config(path: String) -> Result<String, ConfigError>
ts
const content = await invoke<string>("read_config", {
  path: "~/mihomo/config.yaml",
});

:::

write_config

名称 write_config

参数

参数Rust 类型来源说明
pathString前端传入配置文件路径,内部会执行 expand_tilde
contentString前端传入要写入的完整文件内容

返回值

成功时返回 ();失败时返回 ConfigError

说明

覆写指定配置文件内容。

调用示例

rust
pub async fn write_config(
    path: String,
    content: String,
) -> Result<(), ConfigError>
ts
await invoke("write_config", {
  path: "~/mihomo/config.yaml",
  content,
});

:::

reload_config

名称 reload_config

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 ();失败时返回 ConfigError

说明

调用 Mihomo reload_configs() 热重载当前配置。

调用示例

rust
pub async fn reload_config(
    state: tauri::State<'_, MihomoState>,
) -> Result<(), ConfigError>
ts
await invoke("reload_config");

:::

get_configs

名称 get_configs

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 serde_json::Value,即 Mihomo 当前运行时配置 JSON;失败时返回 MihomoError

说明

获取 Mihomo 运行时配置快照。

调用示例

rust
pub async fn get_configs(
    state: tauri::State<'_, MihomoState>,
) -> Result<serde_json::Value, MihomoError>
ts
const runtimeConfig = await invoke<Record<string, unknown>>("get_configs");

:::

patch_configs

名称 patch_configs

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
payloadserde_json::Value前端传入发送给 Mihomo 的部分配置补丁

返回值

成功时返回 ();失败时返回 MihomoError

说明

向 Mihomo 运行时配置发送 JSON patch。

调用示例

rust
pub async fn patch_configs(
    state: tauri::State<'_, MihomoState>,
    payload: serde_json::Value,
) -> Result<(), MihomoError>
ts
await invoke("patch_configs", {
  payload: {
    mode: "rule",
  },
});

:::

系统命令

源文件:src-tauri/src/cmd/system.rs

get_version

名称 get_version

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 serde_json::Value,即 Mihomo /version 原始 JSON;失败时返回 MihomoError

说明

获取 Mihomo 版本信息。

调用示例

rust
pub async fn get_version(
    state: tauri::State<'_, MihomoState>,
) -> Result<serde_json::Value, MihomoError>
ts
const version = await invoke<Record<string, unknown>>("get_version");

:::

close_connection

名称 close_connection

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
idString前端传入连接 ID

返回值

成功时返回 ();失败时返回 MihomoError

说明

关闭指定连接。

调用示例

rust
pub async fn close_connection(
    state: tauri::State<'_, MihomoState>,
    id: String,
) -> Result<(), MihomoError>
ts
await invoke("close_connection", { id: "conn-123" });

:::

close_all_connections

名称 close_all_connections

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 ();失败时返回 MihomoError

说明

关闭当前所有连接。

调用示例

rust
pub async fn close_all_connections(
    state: tauri::State<'_, MihomoState>,
) -> Result<(), MihomoError>
ts
await invoke("close_all_connections");

:::

get_connections

名称 get_connections

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态

返回值

成功时返回 serde_json::Value,即 Mihomo /connections 原始 JSON;失败时返回 MihomoError

说明

获取当前连接列表和总流量信息。

调用示例

rust
pub async fn get_connections(
    state: tauri::State<'_, MihomoState>,
) -> Result<serde_json::Value, MihomoError>
ts
const connections = await invoke<Record<string, unknown>>("get_connections");

:::

set_system_proxy

名称 set_system_proxy

参数

参数Rust 类型来源说明
enablebool前端传入是否启用系统代理
portu16前端传入代理端口;host 固定为 127.0.0.1

返回值

成功时返回 ();失败时返回 SysproxyError

说明

设置系统代理状态,实际调用 sysproxy::set_system_proxy(enable, "127.0.0.1", port)

调用示例

rust
pub fn set_system_proxy(enable: bool, port: u16) -> Result<(), SysproxyError>
ts
await invoke("set_system_proxy", {
  enable: true,
  port: 7890,
});

:::

get_system_proxy

名称 get_system_proxy

参数

无。

返回值

成功时返回对象 { enable: boolean, host: string, port: number };失败时返回 SysproxyError

说明

读取当前系统代理状态。

调用示例

rust
pub fn get_system_proxy() -> Result<serde_json::Value, SysproxyError>
ts
const proxy = await invoke<{ enable: boolean; host: string; port: number }>(
  "get_system_proxy",
);

:::

update_mihomo_client

名称 update_mihomo_client

参数

参数Rust 类型来源说明
statetauri::State<'_, MihomoState>Tauri 注入Mihomo 客户端状态
base_urlString前端传入Mihomo API Base URL
secretString前端传入Mihomo API Secret

返回值

成功时返回 ();失败时返回 MihomoError

说明

更新内存中的 Mihomo 客户端连接地址和 secret。

调用示例

rust
pub async fn update_mihomo_client(
    state: tauri::State<'_, MihomoState>,
    base_url: String,
    secret: String,
) -> Result<(), MihomoError>
ts
await invoke("update_mihomo_client", {
  baseUrl: "http://127.0.0.1:9090",
  secret: "",
});

:::

采集器命令

源文件:src-tauri/src/cmd/collector.rs

start_collector

名称 start_collector

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入当前应用句柄
statetauri::State<'_, CollectorState>Tauri 注入采集器生命周期状态
mihomo_statetauri::State<'_, MihomoState>Tauri 注入提供 Mihomo API 地址与 secret

返回值

成功时返回 ();失败时返回 CollectorError

说明

启动 WebSocket 连接采集器,重置实时缓存并在后台启动采集任务。

调用示例

rust
pub async fn start_collector(
    app_handle: tauri::AppHandle,
    state: tauri::State<'_, CollectorState>,
    mihomo_state: tauri::State<'_, MihomoState>,
) -> Result<(), CollectorError>
ts
await invoke("start_collector");

:::

stop_collector

名称 stop_collector

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入当前应用句柄
statetauri::State<'_, CollectorState>Tauri 注入采集器生命周期状态

返回值

成功时返回 ();失败时返回 CollectorError

说明

停止采集器运行时,并清空实时缓存。

调用示例

rust
pub async fn stop_collector(
    app_handle: tauri::AppHandle,
    state: tauri::State<'_, CollectorState>,
) -> Result<(), CollectorError>
ts
await invoke("stop_collector");

:::

get_collector_status

名称 get_collector_status

参数

参数Rust 类型来源说明
statetauri::State<'_, CollectorState>Tauri 注入采集器生命周期状态

返回值

成功时返回 bool;失败时返回 CollectorError

说明

查询采集器是否正在运行。

调用示例

rust
pub async fn get_collector_status(
    state: tauri::State<'_, CollectorState>,
) -> Result<bool, CollectorError>
ts
const running = await invoke<boolean>("get_collector_status");

:::

get_realtime_connections

名称 get_realtime_connections

参数

参数Rust 类型来源说明
storetauri::State<'_, RealtimeStore>Tauri 注入实时连接缓存

返回值

成功时返回 Vec<ConnectionRecord>;失败时返回 CollectorError

说明

返回当前活动连接列表,字段见文末 ConnectionRecord

调用示例

rust
pub async fn get_realtime_connections(
    store: tauri::State<'_, RealtimeStore>,
) -> Result<Vec<ConnectionRecord>, CollectorError>
ts
const connections = await invoke<ConnectionRecord[]>("get_realtime_connections");

:::

get_realtime_summary

名称 get_realtime_summary

参数

参数Rust 类型来源说明
storetauri::State<'_, RealtimeStore>Tauri 注入实时连接缓存

返回值

成功时返回 RealtimeSummary;失败时返回 CollectorError

说明

返回活动连接数、总上传下载、热点域名和热点规则摘要。

调用示例

rust
pub async fn get_realtime_summary(
    store: tauri::State<'_, RealtimeStore>,
) -> Result<RealtimeSummary, CollectorError>
ts
const summary = await invoke<RealtimeSummary>("get_realtime_summary");

:::

统计命令

源文件:src-tauri/src/cmd/stats.rs

manual_cleanup

名称 manual_cleanup

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库

返回值

成功时返回 cleanup::CleanupReport;失败时返回 DbError

说明

手动执行一轮数据库清理,包含连接、小时聚合、域名统计和 GeoIP 缓存。

调用示例

rust
pub async fn manual_cleanup(
    app_handle: tauri::AppHandle,
) -> Result<cleanup::CleanupReport, DbError>
ts
const report = await invoke<CleanupReport>("manual_cleanup");

:::

get_db_stats

名称 get_db_stats

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库

返回值

成功时返回 DbStats;失败时返回 DbError

说明

返回数据库表行数、文件大小和最早连接时间。

调用示例

rust
pub async fn get_db_stats(
    app_handle: tauri::AppHandle,
) -> Result<DbStats, DbError>
ts
const stats = await invoke<DbStats>("get_db_stats");

:::

get_domain_stats

名称 get_domain_stats

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库
daysi32前端传入统计窗口天数
limiti32前端传入返回条数上限

返回值

成功时返回 Vec<DomainStat>;失败时返回 DbError

说明

查询指定时间窗口内的热点域名统计。

调用示例

rust
pub async fn get_domain_stats(
    app_handle: tauri::AppHandle,
    days: i32,
    limit: i32,
) -> Result<Vec<DomainStat>, DbError>
ts
const domains = await invoke<DomainStat[]>("get_domain_stats", {
  days: 7,
  limit: 20,
});

:::

get_traffic_hourly

名称 get_traffic_hourly

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库
startString前端传入起始时间字符串
endString前端传入结束时间字符串

返回值

成功时返回 Vec<TrafficPoint>;失败时返回 DbError

说明

查询小时粒度流量与连接数时间序列。

调用示例

rust
pub async fn get_traffic_hourly(
    app_handle: tauri::AppHandle,
    start: String,
    end: String,
) -> Result<Vec<TrafficPoint>, DbError>
ts
const points = await invoke<TrafficPoint[]>("get_traffic_hourly", {
  start: "2026-04-01T00:00:00Z",
  end: "2026-04-08T00:00:00Z",
});

:::

get_traffic_daily

名称 get_traffic_daily

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库
startString前端传入起始时间字符串
endString前端传入结束时间字符串

返回值

成功时返回 Vec<TrafficPoint>;失败时返回 DbError

说明

查询天粒度流量与连接数时间序列。

调用示例

rust
pub async fn get_traffic_daily(
    app_handle: tauri::AppHandle,
    start: String,
    end: String,
) -> Result<Vec<TrafficPoint>, DbError>
ts
const points = await invoke<TrafficPoint[]>("get_traffic_daily", {
  start: "2026-04-01T00:00:00Z",
  end: "2026-04-08T00:00:00Z",
});

:::

get_stats_overview

名称 get_stats_overview

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库
daysi32前端传入统计窗口天数

返回值

成功时返回 StatsOverview;失败时返回 DbError

说明

返回总连接数、总上传、总下载、活动连接数和唯一域名数。

调用示例

rust
pub async fn get_stats_overview(
    app_handle: tauri::AppHandle,
    days: i32,
) -> Result<StatsOverview, DbError>
ts
const overview = await invoke<StatsOverview>("get_stats_overview", {
  days: 7,
});

:::

get_rule_stats

名称 get_rule_stats

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库
daysi32前端传入统计窗口天数
limiti32前端传入返回条数上限

返回值

成功时返回 Vec<RuleStat>;失败时返回 DbError

说明

查询规则命中统计。

调用示例

rust
pub async fn get_rule_stats(
    app_handle: tauri::AppHandle,
    days: i32,
    limit: i32,
) -> Result<Vec<RuleStat>, DbError>
ts
const rules = await invoke<RuleStat[]>("get_rule_stats", {
  days: 7,
  limit: 20,
});

:::

get_geo_stats

名称 get_geo_stats

参数

参数Rust 类型来源说明
app_handletauri::AppHandleTauri 注入用于访问数据库
geoip_configtauri::State<'_, GeoIpConfigState>Tauri 注入提供 MMDB 文件路径
geoip_lookuptauri::State<'_, GeoIpLookup>Tauri 注入GeoIP 查询与缓存能力
daysi32前端传入统计窗口天数

返回值

成功时返回 Vec<GeoStat>;失败时返回 DbError

说明

按国家聚合指定时间窗口内的连接数与总流量。内部会先按目标 IP 聚合,再通过 GeoIP 解析国家信息。

调用示例

rust
pub async fn get_geo_stats(
    app_handle: tauri::AppHandle,
    geoip_config: tauri::State<'_, GeoIpConfigState>,
    geoip_lookup: tauri::State<'_, GeoIpLookup>,
    days: i32,
) -> Result<Vec<GeoStat>, DbError>
ts
const stats = await invoke<GeoStat[]>("get_geo_stats", {
  days: 7,
});

:::

通用类型

以下类型直接出自 src-tauri/src/cmd/ai.rssrc-tauri/src/cmd/stats.rssrc-tauri/src/collector/*src-tauri/src/db/*

枚举值

类型可选值
AiProviderKindopenaiopenai_compatibleclaudegemini
AiChatRoleuserassistantsystem
ReportTypedailyweekly
AiModelCatalogSourceremotefallbackempty

AiProviderSettings

字段类型说明
providerAiProviderKindProvider 类型
modelString模型名称
apiKeyOption<String>API Key,可选
baseUrlOption<String>Base URL,可选
temperatureOption<f64>采样温度,可选
maxTokensOption<u32>最大输出 token 数,可选

AiSettings

字段类型说明
providerAiProviderKindProvider 类型
modelString模型名称
apiKeyStringAPI Key
baseUrlStringBase URL
temperaturef64采样温度
maxTokensu32最大输出 token 数
autoStartbool是否自动启动 AI sidecar

AiChatMessage

字段类型说明
roleAiChatRole消息角色
contentString消息内容

AiChatContext

字段类型说明
currentConfigOption<String>当前配置文本,可选
recentStatsOption<serde_json::Value>最近统计信息,可选
availableProxiesOption<Vec<String>>当前可用代理名称列表,可选

AiChatParams

字段类型说明
messagesVec<AiChatMessage>聊天消息数组
contextOption<AiChatContext>补充上下文,可选
settingsAiProviderSettings对话使用的 Provider 设置

SaveConversationMessageParams

字段类型说明
roleAiChatRole消息角色
contentString消息正文
toolCallsOption<serde_json::Value>工具调用结果,可选
tokensUsedOption<i32>token 使用量,可选
modelOption<String>模型名称,可选

AiConnectionTestResult

字段类型说明
successbool是否连接成功
latencyMsu64耗时毫秒数
messageString结果消息

AiModelCatalog

字段类型说明
modelsVec<String>模型名称列表
sourceAiModelCatalogSource模型来源
messageString返回消息

ReportPeriod

字段类型说明
startString统计起始日期
endString统计结束日期

ReportTrafficSummary

字段类型说明
uploadi64上传字节数
downloadi64下载字节数

ReportDomainStat

字段类型说明
domainString域名
traffici64总流量

ReportRuleStat

字段类型说明
ruleString规则名称
hitCounti64命中次数

ReportComparison

字段类型说明
trafficChangef64相比上一周期的流量变化
connectionChangef64相比上一周期的连接数变化

ReportDailyTrendPoint

字段类型说明
dateString日期
uploadi64上传字节数
downloadi64下载字节数
totalTraffici64总流量
connCounti64连接数

ReportStats

字段类型说明
totalTrafficReportTrafficSummary总流量摘要
totalConnectionsi64总连接数
topDomainsVec<ReportDomainStat>热门域名
topRulesVec<ReportRuleStat>热门规则
peakHourOption<String>峰值小时,可选
comparisonOption<ReportComparison>环比变化,可选
dailyTrendOption<Vec<ReportDailyTrendPoint>>日趋势,可选
matchRateOption<f64>命中率,可选

ReportResult

字段类型说明
typeReportType报告类型
periodReportPeriod报告周期
contentStringAI 生成的正文
statsReportStats统计摘要
generatedAtString生成时间

ConfigSnapshot

字段类型说明
idi64快照 ID
contentString快照内容
sourceString快照来源,例如 manualai
descriptionOption<String>快照描述
filePathOption<String>关联配置文件路径
createdAtString创建时间

CleanupReport

字段类型说明
connectionsDeletedusize删除的连接记录数
hourlyDeletedusize删除的小时聚合数
domainStatsDeletedusize删除的域名统计数
geoipDeletedusize删除的 GeoIP 缓存数
executedAtString执行时间

DomainStat

字段类型说明
domainString域名
hitCounti64命中次数
uploadi64上传字节数
downloadi64下载字节数

TrafficPoint

字段类型说明
timeString时间桶
uploadi64上传字节数
downloadi64下载字节数
connCounti64连接数

StatsOverview

字段类型说明
totalConnectionsi64总连接数
totalUploadi64总上传字节数
totalDownloadi64总下载字节数
activeConnectionsi64当前活动连接数
uniqueDomainsi64唯一域名数

RuleStat

字段类型说明
ruleString规则名称
hitCounti64命中次数
uploadi64上传字节数
downloadi64下载字节数

GeoStat

字段类型说明
countryCodeString国家代码
countryString国家名称
connCounti64连接数
totalTraffici64总流量

DbStats

字段类型说明
connectionCounti64connections 表记录数
hourlyCounti64traffic_hourly 表记录数
dailyCounti64traffic_daily 表记录数
domainCounti64domain_stats 表记录数
geoipCounti64geoip_cache 表记录数
dbSizeBytesi64数据库文件大小
oldestConnectionOption<String>最早连接时间

ConnectionRecord

字段类型说明
idString连接 ID
hostString目标主机名
dstIpOption<String>目标 IP
dstPortOption<i32>目标端口
srcIpOption<String>源 IP
srcPortOption<i32>源端口
networkString网络协议
connTypeString连接类型
ruleString命中规则
rulePayloadOption<String>规则载荷
proxyChainString代理链
uploadi64上传字节数
downloadi64下载字节数
startTimeString开始时间

RealtimeSummary

字段类型说明
activeCountusize当前活动连接数
totalUploadi64总上传字节数
totalDownloadi64总下载字节数
topDomainsVec<(String, i64)>热门域名与流量
topRulesVec<(String, usize)>热门规则与命中次数

MIT License