187 lines
6.2 KiB
Markdown
187 lines
6.2 KiB
Markdown
# 云算力平台客户端 - Windows / Linux 桌面应用
|
||
|
||
基于 Flutter 开发的 Windows 桌面客户端应用,实现与云算力平台的通信、挖矿管理等功能。
|
||
|
||
## 功能特性
|
||
|
||
### 1. 主界面信息显示
|
||
|
||
主界面实时显示以下信息:
|
||
|
||
- **版本号**:从 `bin/version` 文件读取
|
||
- **身份信息**:从 `bin/auth` 文件读取
|
||
- **GPU 信息**:通过 `nvidia-smi` 命令自动检测(启动时获取一次)
|
||
- 显示 GPU索引、品牌、型号、显存大小
|
||
- **硬盘身份码**:通过 `wmic diskdrive get serialnumber` 命令获取
|
||
- **当前状态**:实时显示客户端连接状态:\n - 🔴 **离线**:未连接服务器,红色指示\n - 🟢 **在线**:已连接服务器,绿色指示\n - 🟡 **挖矿中**:租约挖矿进行中,黄色指示\n - 🔵 **持续挖矿中**:持续挖矿任务进行中,蓝色指示\n
|
||
|
||
### 2. 版本更新功能
|
||
|
||
- 自动检查远程版本(从配置的 `update_url` 获取)
|
||
- 发现新版本时显示更新提示卡片
|
||
- 支持一键下载并更新客户端
|
||
- 更新完成后在下次启动时自动应用
|
||
|
||
### 3. 主要功能按钮
|
||
|
||
#### 3.1 查看日志
|
||
- 实时动态显示客户端日志
|
||
- 支持自动滚动和手动滚动
|
||
- 可刷新和清空日志
|
||
- 日志文件位置:`bin/logs/client.log`
|
||
|
||
#### 3.2 查看/修改配置
|
||
- **表单式配置编辑**:采用输入框形式,而非直接文本编辑
|
||
- 每个配置项都有复选框,勾选后才能编辑
|
||
- 按配置节分组显示:
|
||
- 客户端配置(server_url, update_url)
|
||
- LolMiner 配置
|
||
- Rigel 配置
|
||
- BzMiner 配置
|
||
- 代理配置
|
||
- 持续挖矿配置
|
||
- 配置文件位置:`bin/mining.windows.conf`
|
||
- 修改后需点击保存按钮保存更改
|
||
|
||
#### 3.3 挖矿信息
|
||
- **按钮状态**:一直显示,但只有在挖矿中状态时才能点击
|
||
- 显示当前挖矿任务的详细信息:
|
||
- 币种、算法、矿池、矿池地址
|
||
- 钱包地址、矿工号
|
||
- 挖矿软件、进程ID
|
||
- 任务结束时间、剩余时间
|
||
- **实时日志显示**:
|
||
- 显示挖矿软件的标准输出和错误输出
|
||
- 支持自动滚动和手动滚动
|
||
- 可清空日志
|
||
- 日志格式与外部查看日志布局相似
|
||
|
||
#### 3.4 重启
|
||
- 点击后显示确认对话框
|
||
- 重启过程中显示加载动画,禁用所有操作
|
||
- 重启完成后显示成功/失败结果提示
|
||
- 自动重新初始化所有服务
|
||
|
||
#### 3.5 退出程序
|
||
- 点击后显示确认对话框
|
||
- 确认后安全退出应用程序
|
||
|
||
## 技术架构
|
||
|
||
### 核心模块
|
||
|
||
- **ClientCore**:TCP 通信核心,处理与服务器的连接、心跳、消息收发
|
||
- **MiningManager**:挖矿软件管理,支持 lolminer、rigel、bzminer
|
||
- **SustainMiner**:持续挖矿管理,在无租约期间自动挖矿
|
||
- **SystemInfoService**:系统信息获取(GPU、硬盘序列号等)
|
||
- **ConfigService**:配置文件管理(INI 格式)
|
||
- **UpdateService**:版本检查和更新管理
|
||
- **DatabaseService**:挖矿任务日志管理(基于 `bin/mining_tasks.log` 的 JSON 行记录,用于保存 / 恢复当前或最近一次挖矿任务)
|
||
- **LogService**:客户端日志文件管理
|
||
|
||
### 数据存储
|
||
|
||
- **配置文件**:`bin/mining.windows.conf`(INI 格式)
|
||
- **身份文件**:`bin/auth`
|
||
- **版本文件**:`bin/version`
|
||
- **挖矿任务日志**:`bin/mining_tasks.log`(JSON 行格式,仅记录当前 / 最近任务,用于断线恢复)
|
||
- **日志文件**:`bin/logs/client.log`
|
||
|
||
### 通信协议
|
||
|
||
- **协议**:TCP Socket
|
||
- **消息格式**:JSON,每行一条消息
|
||
- **心跳机制**:服务器发送 ping,客户端回复 pong
|
||
- **身份认证**:格式为 `身份信息::硬盘身份码`
|
||
|
||
## 配置文件说明
|
||
|
||
配置文件 `bin/mining.windows.conf` 采用 INI 格式,包含以下配置节:
|
||
|
||
### [client]
|
||
- `server_url`:服务器地址(RabbitMQ 通信目标)
|
||
- `update_url`:更新服务器地址(用于版本检查和更新)
|
||
|
||
### [lolminer] / [rigel] / [bzminer]
|
||
- `path`:挖矿软件路径(使用双反斜杠 `\\`)
|
||
|
||
### [proxy]
|
||
- `proxy`:是否启用代理(true/false)
|
||
|
||
### [sustain]
|
||
- `enabled`:是否启用持续挖矿
|
||
- `algo`:算法
|
||
- `coin`:币种
|
||
- `miner`:挖矿软件名
|
||
- `pool_url`:矿池地址
|
||
- `wallet`:钱包地址
|
||
- `worker_id`:矿工号
|
||
- `pool_user`:矿池用户名(可选)
|
||
- `wallet_mining`:是否使用钱包挖矿
|
||
|
||
## 部署说明
|
||
|
||
### 开发环境
|
||
|
||
1. 确保已安装 Flutter SDK 并启用 Windows 桌面支持
|
||
2. 在 `windows` 目录下运行:
|
||
```bash
|
||
flutter pub get
|
||
flutter run -d windows
|
||
```
|
||
|
||
### 发布版本
|
||
|
||
1. 构建发布版本:
|
||
```bash
|
||
flutter build windows --release
|
||
```
|
||
|
||
2. 部署文件结构:
|
||
```
|
||
cloud_client_gui.exe
|
||
bin/
|
||
├── version # 版本文件(必需)
|
||
├── auth # 身份信息文件(必需)
|
||
├── mining.windows.conf # 配置文件(必需)
|
||
├── logs/
|
||
│ └── client.log # 日志文件(自动创建)
|
||
└── mining_task.db # 数据库文件(自动创建)
|
||
```
|
||
|
||
3. **重要**:`bin` 文件夹必须与 `.exe` 文件在同一目录下
|
||
|
||
## 路径说明
|
||
|
||
- **开发模式**:程序会自动检测并定位到 `windows/bin` 目录
|
||
- **发布模式**:`bin` 文件夹应与可执行文件在同一目录
|
||
- 所有文件路径都基于可执行文件所在目录自动计算
|
||
|
||
## 依赖项
|
||
|
||
主要依赖包:
|
||
- `provider`:状态管理
|
||
- `sqflite_common_ffi`:SQLite 数据库(Windows 桌面)
|
||
- `ini`:INI 文件解析
|
||
- `http`:HTTP 请求(版本更新)
|
||
- `logging`:日志系统
|
||
- `path`:路径处理
|
||
|
||
## 注意事项
|
||
|
||
1. 首次运行需要确保 `bin` 目录下存在 `version` 和 `auth` 文件
|
||
2. GPU 信息只在程序启动时获取一次,避免频繁调用系统命令
|
||
3. 配置文件修改后需要保存才能生效
|
||
4. 重启功能会重新初始化所有服务,可能需要几秒钟时间
|
||
5. 挖矿信息按钮在非挖矿状态下会显示为灰色且不可点击
|
||
|
||
## 开发说明
|
||
|
||
本项目是基于 Go 客户端功能完全重新实现的 Flutter Windows 桌面应用,实现了与 Go 版本相同的所有核心功能,包括:
|
||
- TCP 通信和心跳机制
|
||
- 挖矿软件管理
|
||
- 持续挖矿支持
|
||
- 系统信息获取
|
||
- 配置管理
|
||
- 版本更新
|