Files
Thing/README.md
T
2026-07-20 18:28:34 +08:00

240 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/
├── public/ # 静态资源
├── src/
│ ├── assets/ # 前端资源
│ ├── components/ # 通用组件
│ │ ├── layout/ # 布局组件
│ │ └── ui/ # shadcn-vue UI 组件
│ ├── composables/ # Vue 组合式函数
│ ├── lib/ # 工具库(cn 等)
│ ├── modules/ # 功能模块
│ │ ├── proxy/ # 代理管理模块
│ │ ├── clipboard/ # 剪贴板增强模块
│ │ ├── screenshot/ # 截图模块
│ │ ├── monitor/ # 硬件监控模块
│ │ ├── downloader/ # 下载器模块
│ │ └── finder/ # 文件搜索模块
│ ├── stores/ # Pinia 状态管理
│ ├── types/ # TypeScript 类型定义
│ ├── App.vue # 主应用组件
│ ├── main.ts # 入口文件
│ └── assets/main.css # 全局样式
├── src-tauri/
│ ├── capabilities/ # Tauri 权限配置
│ ├── icons/ # 应用图标
│ ├── src/
│ │ ├── commands/ # Rust 命令
│ │ │ ├── proxy.rs # 代理相关命令
│ │ │ ├── clipboard.rs # 剪贴板相关命令
│ │ │ ├── screenshot.rs # 截图相关命令
│ │ │ ├── monitor.rs # 监控相关命令
│ │ │ ├── downloader.rs # 下载器相关命令
│ │ │ └── finder.rs # 文件搜索相关命令
│ │ ├── modules/ # Rust 模块逻辑
│ │ ├── utils/ # Rust 工具函数
│ │ ├── main.rs # Rust 入口
│ │ └── lib.rs # Rust 库入口
│ ├── Cargo.toml # Rust 依赖配置
│ └── tauri.conf.json # Tauri 配置
├── package.json # 前端依赖配置
├── tsconfig.json # TypeScript 配置
└── vite.config.ts # Vite 配置
```
## 开发进程规划
### 第一阶段:主体架构(当前阶段)
- [x] 项目初始化
- [x] 主界面布局(左侧模块导航 + 右侧内容区域)
- [x] 基础设置模块(主题切换、开机自启)
- [x] 系统托盘基础(Tray
- [x] 日志系统(Log
- [x] 进程管理架构(子进程生命周期管理)
- [x] 模块注册机制
### 第二阶段:核心模块开发
#### 🌐 代理管理
- [x] 下载/内置 mihomo (Clash.Meta) 内核集成
- [x] 系统代理切换
- [x] 规则配置管理
- [x] 延迟测速
- [x] 订阅管理
#### 📋 剪贴板增强
- [ ] 剪贴板历史记录
- [ ] 搜索功能
- [ ] 固定常用条目
- [ ] 多格式预览(文本、图片、文件)
- [ ] SQLite 存储
#### 📸 截图
- [ ] 区域截图
- [ ] 窗口截图
- [ ] 全屏截图
- [ ] 滚动截图
- [ ] 图片编辑工具
#### 📊 硬件监控
- [ ] 任务栏快捷显示
- [ ] CPU 使用率监控
- [ ] GPU 使用率监控
- [ ] 内存使用率监控
- [ ] 硬盘温度及使用率
- [ ] 传感器数据可视化
- [ ] 网速监控
#### ⬇️ 下载器
- [ ] 下载/内置 aria2 内核集成
- [ ] 接管浏览器下载,创建edge插件(Thing Extension)?
- [ ] HTTP 下载支持
- [ ] BT/磁力链接支持
- [ ] 下载任务管理(历史)
- [ ] 速度限制
- [ ] 断点续传
#### 🔍 文件 / 程序搜索
- [ ] 快速搜索弹窗(快捷键触发)
- [ ] 文件搜索(Everything SDK
- [ ] 应用程序搜索
- [ ] 拼音模糊匹配
- [ ] 正则表达式支持
### 第三阶段:优化与完善
- [ ] 性能优化
- [ ] 错误处理与日志完善
- [ ] 用户体验优化
- [ ] 自动更新机制
- [ ] 打包发布
## 模块管理架构
项目采用统一的模块注册机制,每个模块通过 `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` | 各模块的配置声明(名称、图标、组件、搜索项、进程配置等) |
### 模块配置示例
```typescript
// 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、下载器的 aria2)通过 `ModuleProcessConfig` 声明进程配置,由 Rust 端的 `ProcessManager` 统一管理生命周期:
- **Rust 端** (`src-tauri/src/process_manager.rs`):管理子进程的启动、停止、重启和崩溃检测
- **前端** (`src/stores/processStore.ts`)Pinia store,通过 Tauri IPC 调用 Rust 命令,监听进程状态变更事件
- **后台监控线程**:每 3 秒检查进程状态,崩溃时自动重启(可配置),并通过 Tauri 事件通知前端
- **应用退出清理**:退出时自动停止所有子进程
### 新增模块流程
1. 创建 `src/modules/<name>/` 目录,编写 `ModuleComponent.vue``index.ts`
2.`index.ts` 中导出 `moduleConfig: ModuleConfig`
3.`src/modules/index.ts` 中添加导入
4.`src/modules/icons.ts` 中添加图标映射
5. 如需 Rust 命令,在 `src-tauri/src/` 中创建对应模块
## 构建与运行
### 前置依赖
- Node.js >= 18
- Rust >= 1.75
- Bun(推荐)或 npm/yarn
- Windows SDK(用于 Tauri 构建)
### 开发模式
```bash
# 安装依赖
bun install
# 启动开发服务器
bun run tauri dev
```
### 生产构建
```bash
# 构建前端
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