Files
windows-application/README.md
2026-01-29 17:11:34 +08:00

191 lines
6.2 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.

# 云算力平台客户端 - Windows / Linux 桌面应用
基于 Flutter 开发的 Windows 桌面客户端应用,实现与云算力平台的通信、挖矿管理等功能。
## 功能特性
### 1. 主界面信息显示
主界面实时显示以下信息:
- **版本号**:从 `bin/version` 文件读取
- **身份信息**:从 `bin/auth` 文件读取
- **GPU 信息**:通过 `nvidia-smi` 命令自动检测(启动时获取一次)
- 显示 GPU索引、品牌、型号、显存大小
- **硬盘身份码**:通过 `wmic diskdrive get serialnumber` 命令获取
- **当前状态**:实时显示客户端连接状态:
- 🔴 **离线**:未连接服务器,红色指示
- 🟢 **在线**:已连接服务器,绿色指示
- 🟡 **挖矿中**:租约挖矿进行中,黄色指示
- 🔵 **持续挖矿中**:持续挖矿任务进行中,蓝色指示
### 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 通信和心跳机制
- 挖矿软件管理
- 持续挖矿支持
- 系统信息获取
- 配置管理
- 版本更新