2026-01-29 16:51:06 +08:00
|
|
|
|
# 云算力平台客户端 - Windows / Linux 桌面应用
|
2026-01-22 15:14:27 +08:00
|
|
|
|
|
|
|
|
|
|
基于 Flutter 开发的 Windows 桌面客户端应用,实现与云算力平台的通信、挖矿管理等功能。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 主界面信息显示
|
|
|
|
|
|
|
|
|
|
|
|
主界面实时显示以下信息:
|
|
|
|
|
|
|
|
|
|
|
|
- **版本号**:从 `bin/version` 文件读取
|
2026-01-29 17:10:12 +08:00
|
|
|
|
- **身份信息**:从 `bin/auth` 文件读取
|
2026-01-22 15:14:27 +08:00
|
|
|
|
- **GPU 信息**:通过 `nvidia-smi` 命令自动检测(启动时获取一次)
|
2026-01-29 16:51:06 +08:00
|
|
|
|
- 显示 GPU索引、品牌、型号、显存大小
|
2026-01-22 15:14:27 +08:00
|
|
|
|
- **硬盘身份码**:通过 `wmic diskdrive get serialnumber` 命令获取
|
2026-01-29 17:11:34 +08:00
|
|
|
|
- **当前状态**:实时显示客户端连接状态:
|
|
|
|
|
|
- 🔴 **离线**:未连接服务器,红色指示
|
|
|
|
|
|
- 🟢 **在线**:已连接服务器,绿色指示
|
|
|
|
|
|
- 🟡 **挖矿中**:租约挖矿进行中,黄色指示
|
|
|
|
|
|
- 🔵 **持续挖矿中**:持续挖矿任务进行中,蓝色指示
|
2026-01-22 15:14:27 +08:00
|
|
|
|
|
|
|
|
|
|
### 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**:版本检查和更新管理
|
2026-01-29 17:10:12 +08:00
|
|
|
|
- **DatabaseService**:挖矿任务日志管理(基于 `bin/mining_tasks.log` 的 JSON 行记录,用于保存 / 恢复当前或最近一次挖矿任务)
|
|
|
|
|
|
- **LogService**:客户端日志文件管理
|
2026-01-22 15:14:27 +08:00
|
|
|
|
|
|
|
|
|
|
### 数据存储
|
|
|
|
|
|
|
|
|
|
|
|
- **配置文件**:`bin/mining.windows.conf`(INI 格式)
|
|
|
|
|
|
- **身份文件**:`bin/auth`
|
|
|
|
|
|
- **版本文件**:`bin/version`
|
2026-01-29 17:10:12 +08:00
|
|
|
|
- **挖矿任务日志**:`bin/mining_tasks.log`(JSON 行格式,仅记录当前 / 最近任务,用于断线恢复)
|
2026-01-22 15:14:27 +08:00
|
|
|
|
- **日志文件**:`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 通信和心跳机制
|
|
|
|
|
|
- 挖矿软件管理
|
|
|
|
|
|
- 持续挖矿支持
|
|
|
|
|
|
- 系统信息获取
|
|
|
|
|
|
- 配置管理
|
|
|
|
|
|
- 版本更新
|