# 云算力平台客户端 - 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 通信和心跳机制 - 挖矿软件管理 - 持续挖矿支持 - 系统信息获取 - 配置管理 - 版本更新