2f201610106f9a39ba015c6c7ed325f0e710a4bc
Thing
一个基于 Tauri 2 + Vue 3 的 Windows 工具集,集成多个实用功能模块。
技术栈
| 层次 | 技术 | 版本 |
|---|---|---|
| 框架 | Tauri | lastest(2.x) |
| 前端 | Vue | latest(3.x) |
| 前端构建 | Vite | latest(6.x) |
| 状态管理 | Pinia | latest(2.x) |
| UI 组件 | shadcn-vue | latest(2.x) |
| 语言 | TypeScript | 5.x |
| 后端 | Rust | latest |
| 包管理 | Bun | latest |
项目结构
Thing/
├── src/
│ ├── components/ # 通用组件
│ │ ├── layout/ # 布局组件(TitleBar、Sidebar、ModuleContainer)
│ │ └── ui/ # shadcn-vue UI 组件
│ ├── lib/ # 工具库(logger、use-module-tabs、calc、constants)
│ ├── modules/ # 功能模块(每个模块含 index.ts 配置 + Vue 组件)
│ │ ├── proxy/ # 代理管理模块
│ │ ├── clipboard/ # 剪贴板增强模块
│ │ ├── screenshot/ # 截图模块
│ │ ├── monitor/ # 硬件监控模块
│ │ ├── downloader/ # 下载器模块
│ │ ├── quickpanel/ # 快速面板模块(含 providers/ 搜索提供器目录)
│ │ ├── settings/ # 通用设置模块
│ │ ├── icons.ts # 模块图标映射
│ │ ├── index.ts # 模块聚合入口
│ │ └── registry.ts # 模块注册表单例
│ ├── stores/ # Pinia 状态管理
│ ├── types/ # TypeScript 类型定义
│ ├── App.vue # 主应用组件
│ ├── main.ts # 入口文件
│ └── style.css # 全局样式
├── src-tauri/
│ ├── binaries/ # 外部内核(mihomo.exe)
│ ├── capabilities/ # Tauri 权限配置
│ ├── icons/ # 应用图标
│ ├── resources/ # 打包资源(浏览器扩展等)
│ ├── src/
│ │ ├── clipboard/ # 剪贴板模块(reader/monitor/storage/popup)
│ │ ├── download_engine/ # 下载引擎(进程内自建,含 engine/storage/http_dl 等)
│ │ ├── mihomo_manager/ # mihomo 内核管理(mod/kernel/profiles/system_proxy/commands 等)
│ │ ├── quickpanel/ # 快速面板后端(commands/file_index/icon_extractor)
│ │ ├── screenshot/ # 截图后端(capture/commands)
│ │ ├── constants.rs # 双端常量(窗口 label / 事件名)
│ │ ├── logger.rs # 日志系统(进程级全局日志器)
│ │ ├── monitor_kernel.rs # 硬件监控内核(SSE 订阅)
│ │ ├── network_monitor.rs # 网速监控
│ │ ├── osd_window.rs # OSD 悬浮窗
│ │ ├── process_manager.rs # 子进程统一管理
│ │ ├── setup.rs # 应用初始化
│ │ ├── tray_menu.rs # 系统托盘
│ │ ├── win32_util.rs # Win32 屏幕/DPI 工具
│ │ ├── main.rs # Rust 入口
│ │ └── lib.rs # Rust 库入口(命令注册、事件循环)
│ ├── Cargo.toml # Rust 依赖配置
│ └── tauri.conf.json # Tauri 配置
├── package.json # 前端依赖配置
├── tsconfig.json # TypeScript 配置
└── vite.config.ts # Vite 配置
开发进程规划
第一阶段:主体架构(当前阶段)
- 项目初始化
- 主界面布局(左侧模块导航 + 右侧内容区域)
- 基础设置模块(主题切换、开机自启)
- 系统托盘基础(Tray)
- 日志系统(Log)
- 进程管理架构(子进程生命周期管理)
- 模块注册机制
第二阶段:核心模块开发
🌐 代理管理
- 下载/内置 mihomo (Clash.Meta) 内核集成
- 系统代理切换
- 规则配置管理
- 延迟测速
- 订阅管理
📋 剪贴板增强
- 剪贴板历史记录(排序,搜索)
- 鼠标位置快携键历史弹窗
- 固定常用条目(快捷输入)
- 多格式预览(文本、图片、文件)
- SQLite 存储
📸 截图
- 截图及相关
- 滚动截图(后续支持)
- 贴图(后续支持)
📊 硬件监控
- 悬浮窗显示
- 硬件监控
- 传感器数据可视化
⬇️ 下载器
- 自建进程内下载引擎(多线程 HTTP/HTTPS,无需外部内核)
- 接管浏览器下载,浏览器扩展(Thing Extension)
- HTTP 下载支持
- BT/磁力链接支持(后续支持)
- 下载任务管理(历史)
- 速度限制
- 断点续传
🔍 快速面板
- 全局弹窗(快捷键触发)
- 全局搜索:拼音模糊匹配,正则表达式支持。支持:程序,文件,文件夹,设置项,最近使用,历史命令
- 快捷命令(例:shutdown, hosts)
- 计算器 / 单位换算(数学表达式、单位/货币换算;时间转换、进制转换后续支持)
第三阶段:优化与完善
- 性能优化(P1/P2:轮询随窗口可见性暂停、批量测速限并发、渲染 memo 化等,见 MODULE_REVIEW.md)
- 错误处理与日志完善(B5 进程级全局日志器、异常兜底)
- 用户体验优化(混合 DPI 定位、rAF 节流、UI 细节)
- 自动更新机制
- 打包发布
模块管理架构
项目采用统一的模块注册机制,每个模块通过 index.ts 自描述其配置,由中央注册表统一管理:
核心文件
| 文件 | 职责 |
|---|---|
src/types/module.ts |
模块配置类型定义(ModuleConfig、ModuleMeta、ModuleProcessConfig 等) |
src/modules/registry.ts |
模块注册表单例,提供注册、查询、组件懒加载等功能 |
src/modules/index.ts |
模块聚合入口,导入并注册所有模块 |
src/modules/icons.ts |
模块图标映射表 |
src/modules/<name>/index.ts |
各模块的配置声明(名称、图标、组件、搜索项、进程配置等) |
模块配置示例
// src/modules/proxy/index.ts
export const moduleConfig: ModuleConfig = {
id: 'proxy',
name: '代理管理',
icon: 'proxy',
description: '系统代理切换、订阅管理与延迟测速',
category: 'network',
loader: () => import('./ProxyModule.vue'),
searchItems: [...],
process: {
name: 'mihomo',
executable: '',
autoStart: false,
restartOnCrash: true,
maxRestarts: 3
},
order: 10
}
进程管理架构
需要管理外部子进程的模块(如代理的 mihomo)通过 ModuleProcessConfig 声明进程配置,由 Rust 端的 ProcessManager 统一管理生命周期。下载器模块使用进程内自建下载引擎,无需外部子进程:
- Rust 端 (
src-tauri/src/process_manager.rs):管理子进程的启动、停止、重启和崩溃检测 - 前端 (
src/stores/processStore.ts):Pinia store,通过 Tauri IPC 调用 Rust 命令,监听进程状态变更事件 - 后台监控线程:每 3 秒检查进程状态,崩溃时自动重启(可配置),并通过 Tauri 事件通知前端
- 应用退出清理:退出时自动停止所有子进程
新增模块流程
- 创建
src/modules/<name>/目录,编写ModuleComponent.vue和index.ts - 在
index.ts中导出moduleConfig: ModuleConfig - 在
src/modules/index.ts中添加导入 - 在
src/modules/icons.ts中添加图标映射 - 如需 Rust 命令,在
src-tauri/src/中创建对应模块
构建与运行
前置依赖
- Node.js >= 18
- Rust >= 1.75
- Bun(推荐)或 npm/yarn
- Windows SDK(用于 Tauri 构建)
开发模式
# 安装依赖
bun install
# 启动开发服务器
bun run tauri dev
生产构建
# 构建前端
bun run build
# 构建应用
bun run tauri build
开发规范
代码风格
- TypeScript 代码遵循 ESLint 规则
- Rust 代码遵循
cargo fmt规范 - 提交信息使用 Conventional Commits 格式
命名规范
- 组件:PascalCase(如
ProxyManager.vue) - 函数:camelCase(如
getSystemProxy()) - 文件:kebab-case(如
proxy-manager.ts) - 常量:UPPER_CASE(如
MAX_HISTORY_COUNT)
分支策略
main:主分支,稳定版本develop:开发分支,整合各模块开发feature/*:功能分支,单个模块开发bugfix/*:修复分支,bug 修复
许可证
MIT License
Releases
6
Thing v26.9.3
Latest
Languages
Vue
39.5%
Rust
39.5%
TypeScript
16.3%
Python
1.7%
C#
1.4%
Other
1.5%