1050 lines
32 KiB
Markdown
1050 lines
32 KiB
Markdown
# Agent Client 任务分解文档
|
||
|
||
> 版本:v1.1.0
|
||
> 创建日期:2026-01-29
|
||
> 基于文档:
|
||
> - `agent-client-spec.md`(技术设计规格)
|
||
> - `agent-client-plan.md`(深度实现计划)
|
||
|
||
---
|
||
|
||
## 开发阶段
|
||
|
||
### 阶段一:核心通信与 UI(当前优先级)
|
||
|
||
**目标**:验证 `agent-server-admin` 与 `agent-client` 之间的双向通信能力,确保 `data-server` 的 P2P/TCP/WebSocket 通信正常工作。
|
||
|
||
**包含任务**:
|
||
- Phase 1:基础框架(P0-1.x)- 脚手架、UI、托盘、自启动、协议版本、安全存储
|
||
- Phase 2:核心功能(P0-2.x)- 连接管理、业务通道、设置界面、安全机制
|
||
- Phase 3:依赖管理(P0-3.x)- Node.js 检测安装、npm 工具
|
||
- Phase 3.5:管理端最小实现(P0-3.5.x)- agent-server-admin 用于验证通信
|
||
- Phase 3.6:跨平台打包(P0-3.6.x)- cargo-packager、CI/CD
|
||
|
||
**验证指标**:
|
||
- [ ] 客户端可在 macOS/Windows/Linux 打包安装
|
||
- [ ] 客户端能连接 data-server(获取 ID)
|
||
- [ ] 管理端能发现并连接客户端
|
||
- [ ] 双向消息通信正常(P2P/Relay)
|
||
- [ ] 端到端集成测试全部通过
|
||
- [ ] 单元测试覆盖率 >= 75%
|
||
|
||
### 阶段二:Agent 运行时集成(后续开发)
|
||
|
||
**目标**:集成 agent_runner,实现 Agent 任务执行等功能。
|
||
|
||
**包含任务**:
|
||
- Phase 4:Agent 运行时(P1-4.x)
|
||
- Phase 5:增强功能(P1-5.x)
|
||
- Phase 6:收尾完善(P2-6.x)
|
||
|
||
---
|
||
|
||
## 文档说明
|
||
|
||
本文档是 agent-client 项目的任务分解文档,专注于回答"AI 需要完成哪些步骤"的问题。
|
||
|
||
### 任务 ID 规则
|
||
|
||
```
|
||
P-M.T
|
||
| | |
|
||
| | └── 任务序号 (1, 2, 3...)
|
||
| └──── 模块序号 (1=基础框架, 2=核心功能, 3=依赖管理...)
|
||
└────── 阶段序号 (P0=必须, P1=应该, P2=可选)
|
||
```
|
||
|
||
### 优先级说明
|
||
|
||
| 优先级 | 说明 | 含义 |
|
||
|--------|------|------|
|
||
| P0 | 必须实现 | MVP 必备功能,阻塞发布 |
|
||
| P1 | 应该实现 | 重要功能,影响体验 |
|
||
| P2 | 可选实现 | 锦上添花,不阻塞发布 |
|
||
|
||
---
|
||
|
||
## 任务清单总览
|
||
|
||
> **说明**:
|
||
> - **阶段一(当前优先级)**:Phase 1-3.6,目标是验证通信能力和基础 UI,包含测试和打包
|
||
> - **阶段二(后续开发)**:Phase 4-6,集成 agent_runner 和增强功能
|
||
|
||
### Phase 1:基础框架(P0) *阶段一*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P0-1.1.1 | 创建 Workspace 配置 | 1h | P0 | ☐ |
|
||
| P0-1.1.2 | 创建 agent-protocol 协议模块 | 2h | P0 | ☐ |
|
||
| P0-1.1.3 | 配置 Feature Flags | 0.5h | P0 | ☐ |
|
||
| P0-1.1.4 | 配置 vendors 路径依赖 | 0.5h | P0 | ☐ |
|
||
| P0-1.2.1 | 实现 main.rs 程序入口 | 2h | P0 | ☐ |
|
||
| P0-1.2.2 | 实现 lib.rs 库入口 | 1h | P0 | ☐ |
|
||
| P0-1.2.3 | 实现 App 应用状态管理 | 3h | P0 | ☐ |
|
||
| P0-1.2.4 | 实现 Root 根组件 | 4h | P0 | ☐ |
|
||
| P0-1.2.5 | 实现 StatusBar 状态栏 | 3h | P0 | ☐ |
|
||
| P0-1.3.1 | 实现 TrayManager 托盘管理器 | 4h | P0 | ☐ |
|
||
| P0-1.3.2 | 实现托盘菜单 | 2h | P0 | ☐ |
|
||
| P0-1.4.1 | 实现 AutoLaunchManager | 3h | P0 | ☐ |
|
||
| P0-1.4.2 | 集成自启动到设置界面 | 2h | P0 | ☐ |
|
||
| P0-1.5.1 | 实现协议版本协商机制 | 2h | P0 | ☐ |
|
||
| P0-1.5.2 | 实现配置文件加密存储 | 3h | P0 | ☐ |
|
||
| P0-1.6.1 | Phase 1 单元测试 | 4h | P0 | ☐ |
|
||
| P0-1.6.2 | Phase 1 集成测试脚手架 | 2h | P0 | ☐ |
|
||
|
||
**Phase 1 预估总工时:39h**
|
||
|
||
### Phase 2:核心功能(P0) *阶段一*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P0-2.1.1 | 集成 qiming-rustdesk ConnectionManager | 6h | P0 | ☐ |
|
||
| P0-2.1.2 | 实现连接状态管理 | 3h | P0 | ☐ |
|
||
| P0-2.1.3 | 实现心跳保活机制 | 2h | P0 | ☐ |
|
||
| P0-2.1.4 | 实现重连逻辑 | 3h | P0 | ☐ |
|
||
| P0-2.2.1 | 实现 BusinessChannel 模块 | 4h | P0 | ☐ |
|
||
| P0-2.2.2 | 修改 qiming-rustdesk 导出模块 | 2h | P0 | ☐ |
|
||
| P0-2.3.1 | 实现 Settings 主组件 | 4h | P0 | ☐ |
|
||
| P0-2.3.2 | 实现服务器配置子页面 | 3h | P0 | ☐ |
|
||
| P0-2.3.3 | 实现安全设置子页面(密码修改) | 3h | P0 | ☐ |
|
||
| P0-2.3.4 | 实现常规/外观/日志子页面 | 3h | P0 | ☐ |
|
||
| P0-2.4.1 | 实现 ClientInfo 组件(ID/密码) | 4h | P0 | ☐ |
|
||
| P0-2.4.2 | 实现剪贴板复制功能 | 1h | P0 | ☐ |
|
||
| P0-2.5.1 | 实现密码 bcrypt 加密存储 | 2h | P0 | ☐ |
|
||
| P0-2.5.2 | 实现离线消息队列 | 3h | P0 | ☐ |
|
||
| P0-2.5.3 | 实现大消息分片传输 | 4h | P0 | ☐ |
|
||
| P0-2.6.1 | Phase 2 单元测试 | 4h | P0 | ☐ |
|
||
| P0-2.6.2 | 协议兼容性测试 | 2h | P0 | ☐ |
|
||
|
||
**Phase 2 预估总工时:53h**
|
||
|
||
### Phase 3:依赖管理(P0) *阶段一*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P0-3.1.1 | 实现跨平台目录管理(dirs) | 2h | P0 | ☐ |
|
||
| P0-3.1.2 | 实现 NodeDetector 系统检测 | 4h | P0 | ☐ |
|
||
| P0-3.1.3 | 实现 NodeInstaller 下载安装 | 6h | P0 | ☐ |
|
||
| P0-3.1.4 | 实现 npm 工具安装器 | 4h | P0 | ☐ |
|
||
| P0-3.2.1 | 实现 DependencyManager 核心 | 3h | P0 | ☐ |
|
||
| P0-3.2.2 | 实现依赖状态 UI 组件 | 4h | P0 | ☐ |
|
||
| P0-3.2.3 | 实现手动安装指引界面 | 2h | P0 | ☐ |
|
||
| P0-3.2.4 | 实现安装进度显示 | 2h | P0 | ☐ |
|
||
| P0-3.3.1 | Phase 3 单元测试 | 3h | P0 | ☐ |
|
||
| P0-3.3.2 | 依赖安装集成测试 | 2h | P0 | ☐ |
|
||
|
||
**Phase 3 预估总工时:32h**
|
||
|
||
### Phase 3.5:agent-server-admin 最小实现(P0) *阶段一*
|
||
|
||
> **说明**:阶段一验证通信需要管理端配合,此 Phase 实现最小可用的 agent-server-admin
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P0-3.5.1 | 创建 agent-server-admin crate 脚手架 | 1h | P0 | ☐ |
|
||
| P0-3.5.2 | 实现 HTTP API 基础框架 (axum) | 3h | P0 | ☐ |
|
||
| P0-3.5.3 | 实现客户端列表 API | 2h | P0 | ☐ |
|
||
| P0-3.5.4 | 实现连接客户端 API | 3h | P0 | ☐ |
|
||
| P0-3.5.5 | 实现双向消息发送 API | 3h | P0 | ☐ |
|
||
| P0-3.5.6 | 实现 SSE 消息推送 | 3h | P0 | ☐ |
|
||
| P0-3.5.7 | 集成 qiming-rustdesk 通信 | 4h | P0 | ☐ |
|
||
| P0-3.5.8 | 创建 data-server crate(封装 rustdesk-server) | 3h | P0 | ☐ |
|
||
| P0-3.5.9 | data-server 本地部署配置 | 2h | P0 | ☐ |
|
||
| P0-3.5.10 | 端到端通信集成测试 | 4h | P0 | ☐ |
|
||
|
||
**Phase 3.5 预估总工时:28h**
|
||
|
||
### Phase 3.6:跨平台打包(P0) *阶段一*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P0-3.6.1 | 配置 cargo-packager | 2h | P0 | ☐ |
|
||
| P0-3.6.2 | macOS 打包配置 (.dmg/.app) | 3h | P0 | ☐ |
|
||
| P0-3.6.3 | Windows 打包配置 (.msi/.exe) | 3h | P0 | ☐ |
|
||
| P0-3.6.4 | Linux 打包配置 (.deb/.AppImage) | 3h | P0 | ☐ |
|
||
| P0-3.6.5 | CI/CD 打包脚本 (GitHub Actions) | 4h | P0 | ☐ |
|
||
| P0-3.6.6 | 打包产物验证测试 | 2h | P0 | ☐ |
|
||
|
||
**Phase 3.6 预估总工时:17h**
|
||
|
||
### Phase 4:Agent 运行时(P1) *阶段二(后续开发)*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P1-4.1.1 | 集成 agent_runner 依赖 | 2h | P1 | ☐ |
|
||
| P1-4.1.2 | 实现 AgentManager 核心 | 4h | P1 | ☐ |
|
||
| P1-4.1.3 | 实现消息转换层 | 3h | P1 | ☐ |
|
||
| P1-4.1.4 | 实现任务执行流程 | 4h | P1 | ☐ |
|
||
| P1-4.1.5 | 实现进度回传机制 | 3h | P1 | ☐ |
|
||
| P1-4.1.6 | 实现任务取消功能 | 2h | P1 | ☐ |
|
||
| P1-4.2.1 | 实现状态栏 Agent 状态显示 | 2h | P1 | ☐ |
|
||
| P1-4.3.1 | Phase 4 单元测试 | 3h | P1 | ☐ |
|
||
| P1-4.3.2 | Agent 执行集成测试 | 3h | P1 | ☐ |
|
||
|
||
**Phase 4 预估总工时:26h**
|
||
|
||
### Phase 5:增强功能(P1) *阶段二(后续开发)*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P1-5.1.1 | 实现 PermissionManager 核心 | 4h | P1 | ☐ |
|
||
| P1-5.1.2 | 实现 macOS 权限检测 | 3h | P1 | ☐ |
|
||
| P1-5.1.3 | 实现 Windows 权限检测 | 3h | P1 | ☐ |
|
||
| P1-5.1.4 | 实现权限设置 UI | 3h | P1 | ☐ |
|
||
| P1-5.2.1 | 实现日志系统(tracing) | 3h | P1 | ☐ |
|
||
| P1-5.2.2 | 实现日志导出功能 | 2h | P1 | ☐ |
|
||
| P1-5.3.1 | 实现文件传输核心 | 4h | P1 | ☐ |
|
||
| P1-5.3.2 | 实现文件发送 UI | 3h | P1 | ☐ |
|
||
| P1-5.3.3 | 实现文件接收提示 | 2h | P1 | ☐ |
|
||
| P1-5.4.1 | 实现 RemoteDesktop 组件 | 6h | P1 | ☐ |
|
||
| P1-5.4.2 | 集成 enigo 输入模拟 | 3h | P1 | ☐ |
|
||
| P1-5.5.1 | Phase 5 单元测试 | 4h | P1 | ☐ |
|
||
| P1-5.5.2 | 文件传输集成测试 | 3h | P1 | ☐ |
|
||
| P1-5.5.3 | 远程桌面集成测试 | 3h | P1 | ☐ |
|
||
|
||
**Phase 5 预估总工时:46h**
|
||
|
||
### Phase 6:收尾完善(P2) *阶段二(后续开发)*
|
||
|
||
| ID | 任务名称 | 预估工时 | 优先级 | 状态 |
|
||
|----|----------|----------|--------|------|
|
||
| P2-6.1.1 | 实现 About 组件 | 2h | P2 | ☐ |
|
||
| P2-6.1.2 | 实现版本信息显示 | 1h | P2 | ☐ |
|
||
| P2-6.2.1 | 实现 Chat 聊天界面 | 6h | P2 | ☐ |
|
||
| P2-6.2.2 | 实现聊天记录管理 | 3h | P2 | ☐ |
|
||
| P2-6.3.1 | 实现客户端升级检查 | 4h | P2 | ☐ |
|
||
| P2-6.3.2 | 实现升级下载安装 | 4h | P2 | ☐ |
|
||
| P2-6.4.1 | 国际化支持(中/英) | 4h | P2 | ☐ |
|
||
| P2-6.4.2 | 主题切换功能 | 2h | P2 | ☐ |
|
||
| P2-6.5.1 | Phase 6 单元测试 | 3h | P2 | ☐ |
|
||
| P2-6.5.2 | 全量回归测试 | 4h | P2 | ☐ |
|
||
|
||
**Phase 6 预估总工时:33h**
|
||
|
||
---
|
||
|
||
## 详细任务说明
|
||
|
||
## Phase 1:基础框架(P0)
|
||
|
||
### P0-1.1.1 创建 Workspace 配置
|
||
|
||
**任务描述**:创建项目根目录的 Cargo.toml,配置 workspace 成员和共享依赖
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/Cargo.toml`
|
||
|
||
**验收标准**:
|
||
- [ ] workspace 包含 `crates/agent-client` 和 `crates/agent-protocol` 等成员
|
||
- [ ] 共享依赖版本在 workspace.dependencies 中统一定义
|
||
- [ ] `cargo check --workspace` 通过
|
||
|
||
**相关文档**:
|
||
- spec: 7. 目录结构
|
||
- plan: 1.2 Workspace Cargo.toml 完整配置
|
||
|
||
---
|
||
|
||
### P0-1.1.2 创建 agent-protocol 协议模块
|
||
|
||
**任务描述**:创建协议定义 crate,包含 protobuf 消息定义和编译脚本
|
||
|
||
**实现文件**:
|
||
- `crates/agent-protocol/Cargo.toml`
|
||
- `crates/agent-protocol/build.rs`
|
||
- `crates/agent-protocol/src/lib.rs`
|
||
- `crates/agent-protocol/src/proto/message.proto`
|
||
|
||
**验收标准**:
|
||
- [ ] proto 文件包含 HandshakeRequest/Response, AgentTaskRequest/Response 等消息定义
|
||
- [ ] build.rs 正确编译 proto 文件
|
||
- [ ] 生成的 Rust 代码可被 agent-client 引用
|
||
- [ ] 单元测试通过
|
||
|
||
**相关文档**:
|
||
- spec: 5. 通信协议设计
|
||
- plan: 1.4 agent-protocol/Cargo.toml 完整配置
|
||
|
||
---
|
||
|
||
### P0-1.2.1 实现 main.rs 程序入口
|
||
|
||
**任务描述**:实现应用入口,包含日志初始化、配置加载、信号处理、主循环
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/main.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 程序启动时初始化日志系统
|
||
- [ ] 加载配置文件
|
||
- [ ] 处理 Ctrl+C 和 terminate 信号
|
||
- [ ] 正确创建 App 实例并运行
|
||
- [ ] 优雅关闭(清理资源)
|
||
|
||
**代码参考**:
|
||
- plan: 1.6 项目脚手架
|
||
|
||
---
|
||
|
||
### P0-1.2.4 实现 Root 根组件
|
||
|
||
**任务描述**:实现主窗口根组件,包含标题栏、Tab 面板、内容区、状态栏
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/components/root.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 顶部显示应用名称和图标
|
||
- [ ] Tab 面板可切换不同功能页面
|
||
- [ ] 根据 feature 过滤不可用的 Tab(remote-desktop, chat-ui)
|
||
- [ ] 底部显示状态栏
|
||
- [ ] 主题适配(深色/浅色)
|
||
|
||
**代码参考**:
|
||
- plan: 1.8 UI 组件实现
|
||
|
||
---
|
||
|
||
### P0-1.3.1 实现 TrayManager 托盘管理器
|
||
|
||
**任务描述**:实现系统托盘图标显示和菜单功能
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/tray/mod.rs`
|
||
- `crates/agent-client/src/tray/menu.rs`
|
||
- `crates/agent-client/src/tray/icon.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 启动时在系统托盘显示图标
|
||
- [ ] 左键点击显示主窗口
|
||
- [ ] 右键点击显示菜单(显示窗口、设置、依赖管理、关于、退出)
|
||
- [ ] 菜单项可点击响应
|
||
- [ ] 支持跨平台(macOS/Windows/Linux)
|
||
|
||
**代码参考**:
|
||
- plan: 1.9 系统托盘
|
||
|
||
---
|
||
|
||
## Phase 2:核心功能(P0)
|
||
|
||
### P0-2.1.1 集成 qiming-rustdesk ConnectionManager
|
||
|
||
**任务描述**:集成 qiming-rustdesk 的 RendezvousMediator,实现与 data-server 的连接
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/connection.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 可配置 hbbs 和 hbbr 服务器地址
|
||
- [ ] 连接到 hbbs 获取客户端 ID
|
||
- [ ] 连接到 hbbr 准备中继
|
||
- [ ] 根据网络情况自动选择 P2P 或 Relay 模式
|
||
- [ ] 返回连接延迟(latency)
|
||
|
||
**代码参考**:
|
||
- plan: 2.1 qiming-rustdesk 集成
|
||
|
||
---
|
||
|
||
### P0-2.1.2 实现连接状态管理
|
||
|
||
**任务描述**:实现连接状态的统一管理,包括状态定义、状态切换、状态持久化
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/connection/state.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 定义完整的连接状态枚举(Disconnected/Connecting/Connected/Error)
|
||
- [ ] 状态切换时发出通知
|
||
- [ ] 状态持久化到配置文件
|
||
- [ ] 状态栏正确显示当前状态
|
||
|
||
**代码参考**:
|
||
- plan: 2.1 qiming-rustdesk 集成
|
||
|
||
---
|
||
|
||
### P0-2.1.3 实现心跳保活机制
|
||
|
||
**任务描述**:实现客户端与服务器之间的心跳保活机制,检测连接是否存活
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/connection/heartbeat.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 定期发送心跳包(默认 30 秒)
|
||
- [ ] 检测心跳超时(默认 90 秒)
|
||
- [ ] 超时后触发重连
|
||
- [ ] 心跳包最小化(仅包含必要字段)
|
||
|
||
**代码参考**:
|
||
- plan: 2.1 qiming-rustdesk 集成
|
||
|
||
---
|
||
|
||
### P0-2.1.4 实现重连逻辑
|
||
|
||
**任务描述**:实现网络断开后的自动重连机制,包含指数退避和随机抖动
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/connection/reconnect.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 断线后自动尝试重连
|
||
- [ ] 使用指数退避策略(初始 1s,最大 30s)
|
||
- [ ] 支持随机抖动避免同时重连
|
||
- [ ] 离线消息队列缓存待发送消息
|
||
- [ ] 可配置最大重试次数
|
||
|
||
**代码参考**:
|
||
- plan: 8.2 重连机制实现
|
||
|
||
---
|
||
|
||
### P0-2.2.1 实现 BusinessChannel 模块
|
||
|
||
**任务描述**:在 qiming-rustdesk 基础上实现业务数据通道,用于传输 Agent 任务数据
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/business_channel.rs`
|
||
- `vendors/qiming-rustdesk/src/business_channel.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 复用 qiming-rustdesk 的底层 Stream
|
||
- [ ] 创建独立的业务通道(channel_id = 0xBIZ)
|
||
- [ ] 支持发送/接收业务消息
|
||
- [ ] 支持消息订阅机制
|
||
- [ ] 消息格式正确(message_type + payload)
|
||
|
||
**代码参考**:
|
||
- plan: 2.2 业务数据通道
|
||
|
||
---
|
||
|
||
### P0-2.4.1 实现 ClientInfo 组件
|
||
|
||
**任务描述**:实现客户端信息 Tab,显示 ID 和密码
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/components/client_info.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 显示 8 位客户端 ID(只读)
|
||
- [ ] 显示连接密码,可切换显示/隐藏
|
||
- [ ] 点击复制按钮复制到剪贴板
|
||
- [ ] 点击"修改密码"跳转到设置页的安全子页面
|
||
- [ ] 显示密码强度提示
|
||
|
||
**代码参考**:
|
||
- spec: 2.2 客户端信息 Tab
|
||
|
||
---
|
||
|
||
## Phase 3:依赖管理(P0)
|
||
|
||
### P0-3.1.2 实现 NodeDetector 系统检测
|
||
|
||
**任务描述**:检测系统中已安装的 Node.js,优先使用系统全局安装
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/dependency/node.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 检测 PATH 中的 node 命令
|
||
- [ ] 检测 macOS 特定路径(/usr/local/bin/node)
|
||
- [ ] 检测 Windows 特定路径(Program Files)
|
||
- [ ] 获取版本号并验证是否 >= 18.0.0
|
||
- [ ] 区分系统全局和客户端目录安装
|
||
|
||
**代码参考**:
|
||
- plan: 3.1 Node.js 自动安装
|
||
|
||
---
|
||
|
||
### P0-3.1.3 实现 NodeInstaller 下载安装
|
||
|
||
**任务描述**:自动下载并安装 Node.js 到客户端隔离目录
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/dependency/node_installer.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 下载对应平台的 Node.js 预编译包
|
||
- [ ] 显示下载进度
|
||
- [ ] 解压到隔离目录(`<APP_DATA>/tools/node/`)
|
||
- [ ] 设置可执行权限
|
||
- [ ] 验证安装成功
|
||
- [ ] 支持断点续传(可选)
|
||
|
||
**代码参考**:
|
||
- plan: 3.1 Node.js 自动安装
|
||
|
||
---
|
||
|
||
### P0-3.2.2 实现依赖状态 UI 组件
|
||
|
||
**任务描述**:实现依赖管理 Tab 的 UI,显示依赖列表和状态
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/components/dependency_manager.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 显示依赖列表(Node.js, npm, opencode, claude-code 等)
|
||
- [ ] 每行显示:名称、版本、来源、状态、操作按钮
|
||
- [ ] 状态使用颜色区分(绿色=正常,红色=缺失,黄色=可更新)
|
||
- [ ] 支持一键安装所有缺失依赖
|
||
- [ ] 支持手动刷新状态
|
||
|
||
**代码参考**:
|
||
- spec: 2.4 依赖管理 Tab
|
||
|
||
---
|
||
|
||
### P0-3.3.1 Phase 3 单元测试
|
||
|
||
**任务描述**:为依赖管理模块编写单元测试
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/dependency/tests.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] NodeDetector 检测逻辑测试
|
||
- [ ] 版本比较逻辑测试
|
||
- [ ] 路径解析逻辑测试
|
||
- [ ] 测试覆盖率 >= 80%
|
||
|
||
---
|
||
|
||
## Phase 3.5:agent-server-admin 最小实现(P0)
|
||
|
||
### P0-3.5.1 创建 agent-server-admin crate 脚手架
|
||
|
||
**任务描述**:创建管理端 crate 基础结构
|
||
|
||
**实现文件**:
|
||
- `crates/agent-server-admin/Cargo.toml`
|
||
- `crates/agent-server-admin/src/main.rs`
|
||
- `crates/agent-server-admin/src/lib.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] crate 可编译
|
||
- [ ] 基础目录结构完整
|
||
- [ ] 依赖 agent-protocol
|
||
|
||
---
|
||
|
||
### P0-3.5.2 实现 HTTP API 基础框架
|
||
|
||
**任务描述**:使用 axum 实现 HTTP API 服务
|
||
|
||
**实现文件**:
|
||
- `crates/agent-server-admin/src/api/mod.rs`
|
||
- `crates/agent-server-admin/src/api/router.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 启动 HTTP 服务监听指定端口
|
||
- [ ] 支持 CORS 配置
|
||
- [ ] 健康检查接口 `/health`
|
||
- [ ] 错误处理中间件
|
||
|
||
---
|
||
|
||
### P0-3.5.5 实现双向消息发送 API
|
||
|
||
**任务描述**:实现向客户端发送消息并接收响应的 API
|
||
|
||
**实现文件**:
|
||
- `crates/agent-server-admin/src/api/message.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] POST `/api/clients/{id}/message` 发送消息
|
||
- [ ] 支持同步等待响应
|
||
- [ ] 支持超时配置
|
||
- [ ] 消息使用 Protobuf 序列化
|
||
|
||
---
|
||
|
||
### P0-3.5.8 创建 data-server crate
|
||
|
||
**任务描述**:基于 rustdesk-server 封装 data-server crate,提供信令和中继服务
|
||
|
||
**实现文件**:
|
||
- `crates/data-server/Cargo.toml`
|
||
- `crates/data-server/src/main.rs`
|
||
- `crates/data-server/src/config.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 封装 rustdesk-server 的 hbbs(信令服务)
|
||
- [ ] 封装 rustdesk-server 的 hbbr(中继服务)
|
||
- [ ] 支持配置文件加载
|
||
- [ ] 支持端口配置
|
||
- [ ] 可独立启动运行
|
||
|
||
**代码参考**:
|
||
- vendorsdoc: rustdesk-server.md
|
||
|
||
---
|
||
|
||
### P0-3.5.9 data-server 本地部署配置
|
||
|
||
**任务描述**:配置 data-server 本地开发环境
|
||
|
||
**实现文件**:
|
||
- `config/data-server.toml`
|
||
- `scripts/start-data-server.sh`
|
||
- `docker-compose.yml` (可选)
|
||
|
||
**验收标准**:
|
||
- [ ] 本地可一键启动 data-server
|
||
- [ ] 配置默认端口(hbbs: 21116, hbbr: 21117)
|
||
- [ ] 日志输出正常
|
||
- [ ] 文档说明启动步骤
|
||
|
||
---
|
||
|
||
### P0-3.5.10 端到端通信集成测试
|
||
|
||
**任务描述**:验证 agent-client 与 agent-server-admin 的完整通信流程
|
||
|
||
**实现文件**:
|
||
- `tests/e2e/communication_test.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 客户端可连接 data-server 获取 ID
|
||
- [ ] 管理端可发现在线客户端
|
||
- [ ] 管理端可向客户端发送消息
|
||
- [ ] 客户端可向管理端返回响应
|
||
- [ ] P2P 模式测试通过
|
||
- [ ] Relay 模式测试通过
|
||
|
||
---
|
||
|
||
## Phase 3.6:跨平台打包(P0)
|
||
|
||
### P0-3.6.1 配置 cargo-packager
|
||
|
||
**任务描述**:配置 cargo-packager 打包工具
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/packager.toml`
|
||
- `crates/agent-client/Cargo.toml` (metadata)
|
||
|
||
**验收标准**:
|
||
- [ ] 配置应用名称、版本、描述
|
||
- [ ] 配置图标路径
|
||
- [ ] 配置安装目录
|
||
|
||
---
|
||
|
||
### P0-3.6.2 macOS 打包配置
|
||
|
||
**任务描述**:配置 macOS 平台打包
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/packager.toml`
|
||
- `crates/agent-client/assets/macos/Info.plist`
|
||
- `crates/agent-client/assets/macos/entitlements.plist`
|
||
|
||
**验收标准**:
|
||
- [ ] 生成 .app 应用包
|
||
- [ ] 生成 .dmg 安装镜像
|
||
- [ ] 配置代码签名(可选)
|
||
- [ ] 配置公证(可选)
|
||
|
||
---
|
||
|
||
### P0-3.6.5 CI/CD 打包脚本
|
||
|
||
**任务描述**:配置 GitHub Actions 自动打包
|
||
|
||
**实现文件**:
|
||
- `.github/workflows/build.yml`
|
||
- `.github/workflows/release.yml`
|
||
|
||
**验收标准**:
|
||
- [ ] PR 触发构建检查
|
||
- [ ] Tag 触发发布构建
|
||
- [ ] 产出 macOS/Windows/Linux 安装包
|
||
- [ ] 自动上传 Release Assets
|
||
|
||
---
|
||
|
||
## Phase 4:Agent 运行时(P1)
|
||
|
||
### P1-4.1.2 实现 AgentManager 核心
|
||
|
||
**任务描述**:实现 Agent 任务管理器,直接调用 agent_runner 内部函数
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/agent.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 通过 path 依赖调用 agent_runner(不使用 gRPC)
|
||
- [ ] 启动 Agent 任务(start_agent)
|
||
- [ ] 取消正在执行的任务(cancel_agent)
|
||
- [ ] 查询任务状态(get_agent_status)
|
||
- [ ] 管理多个并发任务
|
||
- [ ] 使用 DashMap 保证线程安全
|
||
|
||
**代码参考**:
|
||
- plan: 4.1 AgentManager 完整实现(250 行)
|
||
|
||
---
|
||
|
||
## Phase 5:增强功能(P1)
|
||
|
||
### P1-5.1.1 实现 PermissionManager 核心
|
||
|
||
**任务描述**:实现跨平台权限检测和管理
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/platform/permissions.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 检测辅助功能权限(Accessibility)
|
||
- [ ] 检测屏幕录制权限(ScreenRecording)
|
||
- [ ] 检测磁盘访问权限(FullDiskAccess)
|
||
- [ ] 打开系统设置页面
|
||
- [ ] macOS 使用 TCC 检查
|
||
- [ ] Windows 使用注册表检查
|
||
|
||
**代码参考**:
|
||
- plan: 5.1 权限检测
|
||
|
||
---
|
||
|
||
## Phase 6:收尾完善(P2)
|
||
|
||
### P2-6.1.1 实现 About 组件
|
||
|
||
**任务描述**:实现关于界面,显示版本信息和链接
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/components/about.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 显示应用图标
|
||
- [ ] 显示版本号(1.0.0)和构建信息
|
||
- [ ] 显示 Git commit SHA
|
||
- [ ] 提供文档、问题反馈、官网链接
|
||
- [ ] 提供导出日志按钮
|
||
|
||
**代码参考**:
|
||
- plan: 6.1 About 组件完整实现(120 行)
|
||
|
||
---
|
||
|
||
## 任务依赖关系
|
||
|
||
```
|
||
Phase 1 (基础框架)
|
||
├── P0-1.1.1 (Workspace) ───┐
|
||
├── P0-1.1.2 (Protocol) ────┤
|
||
├── P0-1.1.3 (Features) ────┤
|
||
├── P0-1.1.4 (Dependencies) ─┤
|
||
├── P0-1.5.x (协议/安全) ←──┤
|
||
└── P0-1.2.x (UI) ──────────┤
|
||
└── P0-1.3.x (Tray) ────┤
|
||
└── P0-1.4.x (AutoLaunch)
|
||
└── P0-1.6.x (Tests) ← 全部 Phase 1 任务
|
||
│
|
||
Phase 2 (核心功能) ──────────┤
|
||
├── P0-2.1.x (Connection) ←─┘
|
||
├── P0-2.2.x (BusinessChannel) ← P0-1.1.2
|
||
├── P0-2.5.x (安全/消息队列) ← P0-2.1.x
|
||
└── P0-2.3.x (Settings) ←─────┤
|
||
└── P0-2.4.x (ClientInfo) ← P0-2.1.x (Connection)
|
||
└── P0-2.6.x (Tests) ← 全部 Phase 2 任务
|
||
│
|
||
Phase 3 (依赖管理) ←────────────┤
|
||
├── P0-3.1.x (Node.js) ←───────┤
|
||
├── P0-3.2.x (UI) ←────────────┤
|
||
└── P0-3.3.x (Tests) ←─────────┘
|
||
│
|
||
Phase 3.5 (管理端最小实现) ←────┤
|
||
├── P0-3.5.1 (脚手架) ←────────┤
|
||
├── P0-3.5.2-7 (API/通信) ←────┤
|
||
└── P0-3.5.8 (E2E Tests) ← Phase 1-3.5 全部
|
||
│
|
||
Phase 3.6 (跨平台打包) ←────────┤
|
||
├── P0-3.6.1-4 (打包配置) ←────┤
|
||
├── P0-3.6.5 (CI/CD) ←─────────┤
|
||
└── P0-3.6.6 (验证) ←──────────┘
|
||
|
||
═══════════════════════════════════════
|
||
阶段一完成线 (验证里程碑)
|
||
═══════════════════════════════════════
|
||
|
||
Phase 4 (Agent) ←──────────────┤
|
||
├── P1-4.1.x (AgentManager) ← P0-1.1.2 (Protocol)
|
||
├── P1-4.2.x (UI) ←────────────┤
|
||
└── P1-4.3.x (Tests) ←─────────┘
|
||
|
||
Phase 5 (增强) ←───────────────┤
|
||
├── P1-5.1.x (Permissions) ←───┤
|
||
├── P1-5.2.x (Logging) ←───────┤
|
||
├── P1-5.3.x (FileTransfer) ←──┤
|
||
├── P1-5.4.x (RemoteDesktop) ←─┤
|
||
└── P1-5.5.x (Tests) ←─────────┘
|
||
|
||
Phase 6 (收尾) ←────────────────┤
|
||
├── P2-6.1.x (About) ←─────────┤
|
||
├── P2-6.2.x (Chat) ←─────────┤
|
||
├── P2-6.3.x (Update) ←───────┤
|
||
├── P2-6.4.x (i18n) ←─────────┤
|
||
└── P2-6.5.x (Tests) ←─────────┘
|
||
```
|
||
|
||
---
|
||
|
||
### P2-6.4.1 国际化支持(中/英)
|
||
|
||
**任务描述**:实现应用国际化,支持中文和英文两种语言
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/i18n/mod.rs`
|
||
- `crates/agent-client/assets/locales/zh-CN/messages.toml`
|
||
- `crates/agent-client/assets/locales/en-US/messages.toml`
|
||
|
||
**验收标准**:
|
||
- [ ] 实现 I18nManager 管理语言切换
|
||
- [ ] 创建中英文资源文件
|
||
- [ ] 支持设置界面切换语言
|
||
- [ ] 界面文本实时更新
|
||
- [ ] 日期/时间/文件大小按区域格式化
|
||
|
||
**代码参考**:
|
||
- plan: 9.1 国际化基础设施
|
||
|
||
---
|
||
|
||
### P2-6.4.2 主题切换功能
|
||
|
||
**任务描述**:实现浅色/深色/跟随系统三种主题模式
|
||
|
||
**实现文件**:
|
||
- `crates/agent-client/src/core/theme.rs`
|
||
- `crates/agent-client/src/components/theme_toggle.rs`
|
||
|
||
**验收标准**:
|
||
- [ ] 支持浅色主题
|
||
- [ ] 支持深色主题
|
||
- [ ] 支持跟随系统设置
|
||
- [ ] 主题切换实时生效
|
||
- [ ] 主题设置持久化
|
||
|
||
**代码参考**:
|
||
- spec: 2.3.5 外观设置子页面
|
||
|
||
---
|
||
|
||
## 开发顺序建议
|
||
|
||
### 阶段一:核心通信与 UI(当前优先级)
|
||
|
||
**目标**:验证 `agent-server-admin` 与 `agent-client` 之间的双向通信能力。
|
||
|
||
#### 第一批(MVP 最小可运行版本)
|
||
|
||
1. P0-1.1.1 ~ P0-1.1.4:项目脚手架、协议模块、依赖配置
|
||
2. P0-1.5.1 ~ P0-1.5.2:协议版本协商、配置加密
|
||
3. P0-1.2.1 ~ P0-1.2.5:基础 UI 框架、状态栏
|
||
4. P0-1.3.1 ~ P0-1.3.2:托盘功能
|
||
5. P0-1.4.1 ~ P0-1.4.2:开机自启动
|
||
6. P0-1.6.1 ~ P0-1.6.2:Phase 1 测试
|
||
|
||
**预计工时:~39h**
|
||
|
||
#### 第二批(核心通信)
|
||
|
||
1. P0-2.1.1 ~ P0-2.1.4:连接管理、心跳保活、重连
|
||
2. P0-2.2.1 ~ P0-2.2.2:业务通道
|
||
3. P0-2.5.1 ~ P0-2.5.3:密码加密、离线队列、消息分片
|
||
4. P0-2.3.1 ~ P0-2.3.4:设置界面
|
||
5. P0-2.4.1 ~ P0-2.4.2:客户端信息显示
|
||
6. P0-2.6.1 ~ P0-2.6.2:Phase 2 测试
|
||
|
||
**预计工时:~53h**
|
||
|
||
#### 第三批(依赖管理)
|
||
|
||
1. P0-3.1.1 ~ P0-3.1.4:Node.js 检测和安装
|
||
2. P0-3.2.1 ~ P0-3.2.4:依赖管理 UI
|
||
3. P0-3.3.1 ~ P0-3.3.2:Phase 3 测试
|
||
|
||
**预计工时:~32h**
|
||
|
||
#### 第四批(管理端最小实现)
|
||
|
||
1. P0-3.5.1 ~ P0-3.5.7:agent-server-admin API 和通信
|
||
2. P0-3.5.8 ~ P0-3.5.9:data-server crate 和部署配置
|
||
3. P0-3.5.10:端到端通信集成测试
|
||
|
||
**预计工时:~28h**
|
||
|
||
#### 第五批(跨平台打包)
|
||
|
||
1. P0-3.6.1 ~ P0-3.6.4:各平台打包配置
|
||
2. P0-3.6.5:CI/CD 配置
|
||
3. P0-3.6.6:打包验证
|
||
|
||
**预计工时:~17h**
|
||
|
||
**阶段一验证里程碑**:
|
||
- [ ] 客户端可在 macOS/Windows/Linux 打包安装
|
||
- [ ] 客户端能连接 data-server(获取 ID)
|
||
- [ ] 管理端能发现并连接客户端
|
||
- [ ] 双向消息通信正常(P2P/Relay)
|
||
- [ ] 端到端集成测试全部通过
|
||
- [ ] 所有平台安装包可用
|
||
|
||
**阶段一总预计工时:~169h**
|
||
|
||
---
|
||
|
||
### 阶段二:Agent 运行时集成(后续开发)
|
||
|
||
**目标**:集成 agent_runner,实现 Agent 任务执行等功能。
|
||
|
||
#### 第六批(Agent 功能)
|
||
|
||
1. P1-4.1.1 ~ P1-4.1.6:Agent 管理器
|
||
2. P1-4.2.1:状态栏显示
|
||
3. P1-4.3.1 ~ P1-4.3.2:Phase 4 测试
|
||
|
||
**预计工时:~26h**
|
||
|
||
#### 第七批(增强功能)
|
||
|
||
1. P1-5.1.x:权限管理
|
||
2. P1-5.2.x:日志系统
|
||
3. P1-5.3.x:文件传输
|
||
4. P1-5.4.x:远程桌面
|
||
5. P1-5.5.x:Phase 5 测试
|
||
|
||
**预计工时:~46h**
|
||
|
||
#### 第八批(收尾完善)
|
||
|
||
1. P2-6.1.x:关于界面
|
||
2. P2-6.2.x:聊天界面
|
||
3. P2-6.3.x:自动升级
|
||
4. P2-6.4.x:国际化、主题
|
||
5. P2-6.5.x:Phase 6 测试
|
||
|
||
**预计工时:~33h**
|
||
|
||
**阶段二总预计工时:~105h**
|
||
|
||
---
|
||
|
||
## 里程碑
|
||
|
||
> **说明**:Milestone 1-5 属于阶段一(当前开发),Milestone 6-8 属于阶段二(后续开发)
|
||
|
||
### Milestone 1:骨架完成
|
||
- [ ] 完成 Phase 1 所有任务(含测试)
|
||
- [ ] 应用可启动,显示 UI
|
||
- [ ] 系统托盘图标正常
|
||
- [ ] 开机自启动可配置
|
||
- [ ] Phase 1 单元测试通过
|
||
|
||
**达成条件**:编译运行成功,UI 可交互,测试覆盖率 >= 80%
|
||
|
||
### Milestone 2:核心通信
|
||
- [ ] 完成 Phase 2 所有任务(含测试)
|
||
- [ ] 可连接到 data-server
|
||
- [ ] 显示连接状态和延迟
|
||
- [ ] 客户端 ID 和密码功能正常
|
||
- [ ] 双向通信正常(P2P/Relay)
|
||
- [ ] 密码加密存储
|
||
- [ ] 离线消息队列可用
|
||
- [ ] 协议兼容性测试通过
|
||
|
||
**达成条件**:可与服务器建立双向通信,安全机制完备
|
||
|
||
### Milestone 3:依赖就绪
|
||
- [ ] 完成 Phase 3 所有任务(含测试)
|
||
- [ ] 自动检测系统 Node.js
|
||
- [ ] 可自动安装 Node.js
|
||
- [ ] 依赖管理 UI 完整
|
||
|
||
**达成条件**:Agent 运行环境准备就绪
|
||
|
||
### Milestone 4:管理端就绪
|
||
- [ ] 完成 Phase 3.5 所有任务
|
||
- [ ] agent-server-admin 可启动
|
||
- [ ] 可发现在线客户端
|
||
- [ ] 可向客户端发送消息
|
||
- [ ] 端到端集成测试全部通过
|
||
|
||
**达成条件**:客户端与管理端完整通信流程验证通过
|
||
|
||
### Milestone 5:打包发布(阶段一完成)
|
||
- [ ] 完成 Phase 3.6 所有任务
|
||
- [ ] macOS .dmg 可安装运行
|
||
- [ ] Windows .msi 可安装运行
|
||
- [ ] Linux .deb/.AppImage 可运行
|
||
- [ ] CI/CD 自动打包流程正常
|
||
- [ ] 打包产物验证测试通过
|
||
|
||
**达成条件**:阶段一完成,可发布 Alpha 版本
|
||
|
||
---
|
||
|
||
### Milestone 6:Agent 可用
|
||
- [ ] 完成 Phase 4 所有任务(含测试)
|
||
- [ ] 可执行 Agent 任务
|
||
- [ ] 进度实时回传
|
||
- [ ] 可取消任务
|
||
|
||
**达成条件**:Agent 任务完整流程可用
|
||
|
||
### Milestone 7:功能完整
|
||
- [ ] 完成 Phase 5 所有任务(含测试)
|
||
- [ ] 文件传输正常
|
||
- [ ] 远程桌面可用
|
||
- [ ] 权限检测完善
|
||
- [ ] 日志系统完整
|
||
|
||
**达成条件**:所有 P1 功能可用
|
||
|
||
### Milestone 8:发布就绪
|
||
- [ ] 完成 Phase 6 所有任务(含测试)
|
||
- [ ] 所有 P2 功能完成
|
||
- [ ] 国际化支持
|
||
- [ ] 全量回归测试通过
|
||
- [ ] 文档完善
|
||
|
||
**达成条件**:可发布正式版本
|
||
|
||
---
|
||
|
||
## 风险与注意事项
|
||
|
||
### 技术风险
|
||
|
||
| 风险 | 可能性 | 影响 | 缓解措施 |
|
||
|------|--------|------|----------|
|
||
| qiming-rustdesk API 变化 | 低 | 高 | 封装隔离层,减少直接依赖 |
|
||
| gpui API 变化 | 中 | 中 | 锁定 git commit,使用 wrapper |
|
||
| 跨平台兼容性问题 | 中 | 中 | 条件编译,CI 测试覆盖 |
|
||
|
||
### 阻塞风险
|
||
|
||
| 阻塞项 | 依赖任务 | 缓解措施 |
|
||
|--------|----------|----------|
|
||
| qiming-rustdesk 未完成 business_channel | P0-2.2.1 | 先使用模拟实现,后续替换 |
|
||
| agent_runner 函数接口未导出 | P1-4.1.1 | 确认接口,或直接调用内部函数 |
|
||
| gpui-component 组件不完整 | 多个 UI 任务 | 使用基础 gpui 替代,编写 wrapper |
|
||
|
||
---
|
||
|
||
## 变更记录
|
||
|
||
| 版本 | 日期 | 变更内容 | 作者 |
|
||
|------|------|----------|------|
|
||
| v1.1.0 | 2026-01-29 | 补充测试任务、agent-server-admin 最小实现、跨平台打包、安全存储等遗漏任务 | - |
|
||
| v1.0.0 | 2026-01-29 | 初始版本 | - |
|