Files
qiming/qimingclaw/specs/agent-client/agent-client-task.md

1050 lines
32 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.
# 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 4Agent 运行时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.5agent-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 4Agent 运行时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 过滤不可用的 Tabremote-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.5agent-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 4Agent 运行时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.2Phase 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.2Phase 2 测试
**预计工时:~53h**
#### 第三批(依赖管理)
1. P0-3.1.1 ~ P0-3.1.4Node.js 检测和安装
2. P0-3.2.1 ~ P0-3.2.4:依赖管理 UI
3. P0-3.3.1 ~ P0-3.3.2Phase 3 测试
**预计工时:~32h**
#### 第四批(管理端最小实现)
1. P0-3.5.1 ~ P0-3.5.7agent-server-admin API 和通信
2. P0-3.5.8 ~ P0-3.5.9data-server crate 和部署配置
3. P0-3.5.10:端到端通信集成测试
**预计工时:~28h**
#### 第五批(跨平台打包)
1. P0-3.6.1 ~ P0-3.6.4:各平台打包配置
2. P0-3.6.5CI/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.6Agent 管理器
2. P1-4.2.1:状态栏显示
3. P1-4.3.1 ~ P1-4.3.2Phase 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.xPhase 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.xPhase 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 6Agent 可用
- [ ] 完成 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 | 初始版本 | - |