- Fix delete agent 500: clean up FK records (agent_llm_logs, permissions, schedules, executions, team_members) and unbind goals/tasks before delete - Remove hardcoded personality templates in Android, replace with dynamic system prompt generation from name + description - Set promptSectionsEnabled=false to bypass PromptComposer for personality - Add Tencent Cloud Linux deployment guide (Docker Compose) - Accumulated backend service updates, frontend UI fixes, Android app changes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
294 lines
14 KiB
Markdown
294 lines
14 KiB
Markdown
# 天工 Android 客户端 — 用户体验与功能提升需求文档
|
||
|
||
> **版本**: v1.0
|
||
> **日期**: 2026-06-24
|
||
> **基线**: `android-app-design.md` (设计蓝图, 覆盖 4 页面: 登录/对话/Agent列表/设置)
|
||
> **Web 参考**: `frontend/src/` (33 路由页面, 已投产)
|
||
> **后端支撑**: `backend/app/main.py` (40+ API 路由模块, 全部可用)
|
||
|
||
---
|
||
|
||
## 一、功能对齐矩阵
|
||
|
||
| # | 功能域 | Web 前端 | Android 设计 (现状) | 对齐状态 | 移动端适配建议 |
|
||
|:--|:-------|:---------|:-------------------|:--------|:---------------|
|
||
| 1 | 登录/注册 | ✅ 状态机驱动, 验证码, 忘记密码, 30天免登录 | ✅ 基础登录 | ⚠️ 功能不足 | 补齐验证码/忘记密码/生物识别 |
|
||
| 2 | Agent 对话 | ✅ 单Agent + 编排模式, SSE流式, 思考链, 工具调用, 审批 | ✅ 基础对话 + SSE | ⚠️ 功能不足 | 补齐多模式/思考链/工具可视化 |
|
||
| 3 | 语音交互 | ✅ Web Speech API (语音输入 + TTS) | ✅ ASR + TTS 接口 | ✅ | 需端侧 VAD/降噪优化 |
|
||
| 4 | Agent 列表 | ✅ 搜索/筛选/CRUD/导入导出/部署停止 | ✅ 基础列表 | ⚠️ 功能不足 | 补齐搜索/导入导出/操作菜单 |
|
||
| 5 | Agent 市场 | ✅ 分类浏览/详情/一键添加 | ❌ | 🔴 缺失 | **新增** — 移动端核心发现入口 |
|
||
| 6 | 工作流设计 | ✅ 可视化拖拽画布 (Vue Flow) | ❌ | 🟡 低优先级 | 仅"查看"模式, 编辑留给 Web |
|
||
| 7 | Agent 配置 | ✅ 名称/描述/System Prompt/模型/工具/预算 | ❌ | 🔴 缺失 | **新增** — 基础配置(文本字段为主) |
|
||
| 8 | 模板市场 | ✅ 场景模板浏览/一键创建 | ❌ | 🟡 中优先级 | 简化浏览 + 一键从模板创建 |
|
||
| 9 | 插件市场 | ✅ 插件安装/管理 | ❌ | 🟡 中优先级 | 浏览 + 安装/卸载 |
|
||
| 10 | 知识库 | ✅ 文档上传/知识库检索/仪表盘 | ❌ | 🟡 中优先级 | 简化检索(仅搜索对话) |
|
||
| 11 | 数字员工 | ✅ 目标管理/任务树/工厂创建 | ❌ | 🟡 中优先级 | 目标查看 + 任务进度 |
|
||
| 12 | Agent 定时 | ✅ Cron 定时触发/管理 | ❌ | 🟡 中优先级 | 查看 + 启停 |
|
||
| 13 | 团队协作 | ✅ 团队建设/成员管理 | ❌ | 🟡 中优先级 | 查看团队 + Agent 协作 |
|
||
| 14 | 推送通知 | ✅ FCM 集成 | ✅ FCM 基础 | ⚠️ 可增强 | 通知分类/优先级/富媒体 |
|
||
| 15 | 设置/工作区 | ✅ 工作区切换/多租户 | ✅ 基础设置 | ⚠️ 可增强 | 工作区切换/个性化 |
|
||
| 16 | 数据源 | ✅ CRUD/连接测试/查询 | ❌ | 🟢 低优先级 | — |
|
||
| 17 | 监控告警 | ✅ Dashboard/规则/日志 | ❌ | 🟢 低优先级 | — |
|
||
| 18 | 权限管理 | ✅ 管理员权限控制 | ❌ | 🟢 低优先级 | — |
|
||
| 19 | 离线能力 | ❌ | ❌ | 🟡 中优先级 | 聊天记录本地缓存 |
|
||
|
||
**图例**: 🔴 关键缺失 · 🟡 重要补充 · ⚠️ 功能不足 · ✅ 对齐 · 🟢 暂缓
|
||
|
||
---
|
||
|
||
## 二、屏幕级 UX 审计
|
||
|
||
### 2.1 登录页 (`LoginScreen`)
|
||
|
||
**现状**: 仅用户名+密码表单, 无错误冷却, 无生物识别, 无忘记密码入口。
|
||
|
||
**问题**:
|
||
- [P0] 连续登录失败无渐进式限制 → 账户爆破风险
|
||
- [P0] 无生物识别 (指纹/面部) → 每次输入密码体验差
|
||
- [P1] 无忘记密码流程 → 用户锁死无自救路径
|
||
- [P1] 无验证码机制 → 无机器人防护
|
||
- [P2] 无注册入口 → 只能登录, 不能自注册
|
||
|
||
**参考**: `frontend/src/views/Login.vue` — 状态机驱动的登录页, 包含
|
||
- 渐进式错误冷却 (3次→验证码, 5次→15秒锁定)
|
||
- 忘记密码 → 邮箱验证码 → 重置
|
||
- 30天免登录
|
||
- 注册 Tab
|
||
|
||
---
|
||
|
||
### 2.2 对话页 (`ChatScreen`)
|
||
|
||
**现状**: 基础消息列表 + SSE 流式, 语音按钮, Agent 选择器。
|
||
|
||
**问题**:
|
||
- [P0] 无思考链 (thinking trace) 展示 → 用户不知 Agent "在想什么"
|
||
- [P0] 无工具调用可视化 → 不知道 Agent 调用了哪些工具
|
||
- [P0] 单 Agent 模式仅有基础聊天, 缺少编排 (orchestrate) 入口
|
||
- [P1] 无消息重试/复制功能 → 遇到错误只能重发
|
||
- [P1] 无工具审批弹窗 → 高权限操作无人工确认
|
||
- [P1] 语音输入无 VAD (Voice Activity Detection) → 噪音误触发
|
||
- [P2] 无 TTS 自动播报开关 → 需每次手动触发
|
||
|
||
**参考**: `frontend/src/views/AgentChat.vue` (35KB) — 功能丰富的对话页, 包含:
|
||
- 单 Agent / 多 Agent 编排双模式
|
||
- SSE 流式 + 降级 POST 双通道
|
||
- 思考链可视化 (think/tool_call/tool_result/final 四阶段)
|
||
- 工具审批弹窗 (approval_required 事件)
|
||
- 消息重试 (retryMessage, 自动回填并重发)
|
||
- 消息复制
|
||
- 编排模式编辑器 (辩论/路由/顺序/流水线)
|
||
- localStorage 状态持久化 (24h TTL)
|
||
|
||
---
|
||
|
||
### 2.3 Agent 列表页 (`AgentListScreen`)
|
||
|
||
**现状**: 基础网格/列表展示 Agent。
|
||
|
||
**问题**:
|
||
- [P0] 无搜索/筛选 → Agent 数量多时不可用
|
||
- [P1] 无 Agent 市场入口 → 无法发现新 Agent
|
||
- [P1] 无导入/导出操作 → 无法迁移 Agent
|
||
- [P1] 无部署/停止操作 → 无法管理运行状态
|
||
- [P2] 无 Agent 详情页 → 点击仅能进入对话
|
||
|
||
**参考**: `frontend/src/views/Agents.vue` + `AgentMarket.vue` + `agent.ts` store
|
||
|
||
---
|
||
|
||
### 2.4 设置页 (`SettingsScreen`)
|
||
|
||
**现状**: 基础设置项。
|
||
|
||
**问题**:
|
||
- [P0] 无工作区切换 → 多租户用户无法切换上下文
|
||
- [P1] 无通知偏好设置 → 无法控制推送类型
|
||
- [P1] 无数据管理 (缓存清理/对话历史管理)
|
||
- [P2] 无深色模式/主题切换
|
||
|
||
**参考**: `frontend/src/stores/user.ts` — workspace 支持 (`switchWorkspace`)
|
||
|
||
---
|
||
|
||
## 三、P0-P2 优先级矩阵与用户故事
|
||
|
||
### P0 — V1.0 必须交付 (阻塞核心体验)
|
||
|
||
| # | 用户故事 | 涉及页面 | 工作量 |
|
||
|:--|:--------|:--------|:------|
|
||
| P0-1 | **思考链可视化** — 作为用户, 我想看到 Agent 的推理过程 (think/tool_call/tool_result/final), 以便理解 AI 如何做出决策 | ChatScreen | 中等 |
|
||
| P0-2 | **工具调用可视化** — 作为用户, 我想看到 Agent 调用了哪些工具以及结果, 以便验证 AI 行为 | ChatScreen | 中等 |
|
||
| P0-3 | **多 Agent 编排对话** — 作为用户, 我想让多个 Agent 以辩论/路由/顺序模式协作, 以便获得更高质量回答 | ChatScreen | 较大 |
|
||
| P0-4 | **Agent 搜索与筛选** — 作为用户, 我想按名称/状态/类别搜索 Agent, 以便在大量 Agent 中快速定位 | AgentListScreen | 较小 |
|
||
| P0-5 | **生物识别登录** — 作为用户, 我想用指纹/面部解锁登录, 以便快速安全地访问应用 | LoginScreen | 较小 |
|
||
| P0-6 | **渐进式登录安全** — 作为系统, 需要在连续失败后增加验证码/冷却, 以防止暴力破解 | LoginScreen | 较小 |
|
||
| P0-7 | **工作区切换** — 作为用户, 我想在多个工作区之间切换, 以便管理不同团队/项目的 Agent | SettingsScreen | 中等 |
|
||
|
||
### P1 — V1.1 重要交付 (提升完整度)
|
||
|
||
| # | 用户故事 | 涉及页面 | 工作量 |
|
||
|:--|:--------|:--------|:------|
|
||
| P1-1 | **Agent 市场浏览** — 作为用户, 我想浏览和搜索公开 Agent, 以便发现有用的 AI 助手 | 新增 AgentMarket | 较大 |
|
||
| P1-2 | **一键从模板创建 Agent** — 作为用户, 我想从场景模板快速创建 Agent, 以便无需从零配置 | 新增 | 中等 |
|
||
| P1-3 | **忘记密码流程** — 作为用户, 我想通过邮箱验证码重置密码, 以便在忘记密码时自助恢复 | LoginScreen | 中等 |
|
||
| P1-4 | **消息重试与复制** — 作为用户, 我想重试失败的消息或复制 Agent 回答, 以便纠正错误或保存有用信息 | ChatScreen | 较小 |
|
||
| P1-5 | **工具审批弹窗** — 作为用户, 我想在 Agent 执行敏感操作前审批, 以便控制高风险行为 | ChatScreen | 较小 |
|
||
| P1-6 | **Agent 部署/启停** — 作为用户, 我想控制 Agent 的运行状态 (部署/停止), 以便管理资源消耗 | AgentListScreen | 较小 |
|
||
| P1-7 | **Agent 导入/导出** — 作为用户, 我想导出 Agent 配置为 JSON 并分享, 以便跨环境迁移 | AgentListScreen | 较小 |
|
||
| P1-8 | **通知偏好设置** — 作为用户, 我想控制哪些事件触发推送, 以便减少打扰 | SettingsScreen | 较小 |
|
||
| P1-9 | **聊天记录本地缓存** — 作为用户, 我想在网络断开时查看历史对话, 以便在离线环境继续参考 | ChatScreen | 中等 |
|
||
|
||
### P2 — V1.2 增强交付 (体验升级)
|
||
|
||
| # | 用户故事 | 涉及页面 | 工作量 |
|
||
|:--|:--------|:--------|:------|
|
||
| P2-1 | **注册入口** — 作为新用户, 我想在 App 内直接注册账号, 以便无需跳转 Web | LoginScreen | 较小 |
|
||
| P2-2 | **TTS 自动播报** — 作为用户, 我想让 Agent 回答自动语音朗读, 以便在驾车/运动时收听 | ChatScreen | 较小 |
|
||
| P2-3 | **深色模式** — 作为用户, 我想切换到深色主题, 以便在夜间使用时减少视觉疲劳 | 全局 | 中等 |
|
||
| P2-4 | **Agent 基础配置编辑** — 作为用户, 我想在手机上修改 Agent 名称/描述/System Prompt, 以便快速微调 | 新增 AgentConfig | 中等 |
|
||
| P2-5 | **工作流查看模式** — 作为用户, 我想查看 Agent 的工作流结构图, 以便了解其内部逻辑 | 新增 | 较大 |
|
||
| P2-6 | **知识库搜索** — 作为用户, 我想搜索已上传的知识库文档, 以便找到相关资料 | 新增 | 中等 |
|
||
| P2-7 | **数字员工目标查看** — 作为用户, 我想查看数字员工的当前目标和任务进度, 以便了解 AI 工作状态 | 新增 GoalView | 中等 |
|
||
|
||
---
|
||
|
||
## 四、后端 API 依赖清单
|
||
|
||
Android 端需要调用的 API(全部已由 Web 前端验证可用):
|
||
|
||
### 4.1 认证模块 (`/api/v1/auth/*`)
|
||
```yaml
|
||
POST /api/v1/auth/login # 登录 → 返回 JWT
|
||
POST /api/v1/auth/register # 注册
|
||
GET /api/v1/auth/me # 获取当前用户信息 (含 workspaces)
|
||
POST /api/v1/auth/switch-workspace/{id} # 切换工作区
|
||
POST /api/v1/auth/forgot-password # 发送重置验证码
|
||
POST /api/v1/auth/reset-password # 重置密码
|
||
```
|
||
|
||
### 4.2 Agent 模块 (`/api/v1/agents/*`)
|
||
```yaml
|
||
GET /api/v1/agents # 列表 (支持 search/status/skip/limit)
|
||
GET /api/v1/agents/{id} # 详情
|
||
POST /api/v1/agents # 创建
|
||
PUT /api/v1/agents/{id} # 更新
|
||
DELETE /api/v1/agents/{id} # 删除
|
||
POST /api/v1/agents/{id}/deploy # 部署
|
||
POST /api/v1/agents/{id}/stop # 停止
|
||
POST /api/v1/agents/{id}/duplicate # 复制
|
||
GET /api/v1/agents/{id}/export # 导出 JSON
|
||
POST /api/v1/agents/import # 导入 JSON
|
||
```
|
||
|
||
### 4.3 Agent 对话模块 (`/api/v1/agent-chat/*`)
|
||
```yaml
|
||
POST /api/v1/agent-chat/{agent_id} # 非流式对话
|
||
POST /api/v1/agent-chat/{agent_id}/stream # SSE 流式对话
|
||
POST /api/v1/agent-chat/bare # 无 Agent 对话
|
||
POST /api/v1/agent-chat/bare/stream # 无 Agent 流式
|
||
POST /api/v1/agent-chat/orchestrate # 多 Agent 编排
|
||
```
|
||
|
||
### 4.4 Agent 市场 (`/api/v1/agent-market/*`)
|
||
```yaml
|
||
GET /api/v1/agent-market # 市场列表 (分类/搜索)
|
||
GET /api/v1/agent-market/{id} # 市场详情
|
||
POST /api/v1/agent-market/{id}/install # 添加 Agent
|
||
```
|
||
|
||
### 4.5 模板市场 (`/api/v1/template-market/*`)
|
||
```yaml
|
||
GET /api/v1/template-market # 模板列表
|
||
POST /api/v1/platform/agents/from-template # 从模板创建 Agent
|
||
```
|
||
|
||
### 4.6 定时任务 (`/api/v1/agent-schedules/*`)
|
||
```yaml
|
||
GET /api/v1/agent-schedules # 列表
|
||
POST /api/v1/agent-schedules/{id}/toggle # 启停
|
||
```
|
||
|
||
### 4.7 目标/任务 (`/api/v1/goals/*`, `/api/v1/tasks/*`)
|
||
```yaml
|
||
GET /api/v1/goals # 目标列表
|
||
GET /api/v1/goals/{id} # 目标详情 + 任务树
|
||
GET /api/v1/tasks # 任务列表
|
||
```
|
||
|
||
### 4.8 推送 (`/api/v1/push/*`, `/api/v1/fcm/*`)
|
||
```yaml
|
||
POST /api/v1/fcm/register # 注册设备 Token
|
||
GET /api/v1/notifications # 通知列表
|
||
PUT /api/v1/notifications/{id}/read # 标记已读
|
||
```
|
||
|
||
### 4.9 语音 (`/api/v1/voice/*`)
|
||
```yaml
|
||
POST /api/v1/voice/asr # 语音转文字
|
||
POST /api/v1/voice/tts # 文字转语音
|
||
```
|
||
|
||
### 4.10 审批 (`/api/v1/approval/*`)
|
||
```yaml
|
||
POST /api/v1/approval/{id}/resolve # 审批决议 (approved/denied/skip)
|
||
```
|
||
|
||
### 4.11 知识库 (`/api/v1/knowledge/*`)
|
||
```yaml
|
||
GET /api/v1/knowledge/dashboard # 知识库仪表盘
|
||
POST /api/v1/knowledge/search # 语义搜索
|
||
```
|
||
|
||
---
|
||
|
||
## 五、技术建议
|
||
|
||
### 5.1 SSE 流式对话增强
|
||
- **当前**: 实现基础 SSE 读取
|
||
- **建议**:
|
||
- 支持 `think` / `tool_call` / `tool_result` / `approval_required` / `final` / `error` 六种事件类型解析
|
||
- 流式数据增加缓冲池 + 逐块渲染, 避免大消息阻塞 UI 线程
|
||
- 降级策略: SSE 失败 3s 内自动切 POST
|
||
|
||
### 5.2 离线与缓存策略
|
||
- 聊天记录: Room DB 存储 (24h TTL, 同 Web 的 localStorage 策略)
|
||
- Agent 列表: 增量同步 (ETag / Last-Modified)
|
||
- 图片/语音: DiskLruCache
|
||
|
||
### 5.3 安全增强
|
||
- JWT 存储 → EncryptedSharedPreferences (非明文 SharedPreferences)
|
||
- SSL Pinning → 防中间人
|
||
- 生物识别 → BiometricPrompt (AndroidX)
|
||
|
||
### 5.4 导航架构建议
|
||
```
|
||
底部 Tab:
|
||
🏠 首页 (HomeScreen) → 快捷入口: 最近对话/推荐Agent/通知摘要
|
||
💬 对话 (ChatScreen) → 主对话界面
|
||
🤖 Agent (AgentListScreen) → Agent 列表 + 市场入口
|
||
🔔 通知 (NotificationScreen) → 推送列表
|
||
⚙️ 设置 (SettingsScreen) → 设置 + 工作区切换
|
||
```
|
||
|
||
### 5.5 Compose 组件复用建议
|
||
复用 Web 端已验证的交互模式:
|
||
- **思考链**: `trace-step` 组件逻辑 → LazyColumn + AnimatedVisibility
|
||
- **工具调用**: `tool-calls-header` + `tool-call-item` → Card + Chip 组合
|
||
- **编排对话**: `orchestrate-result` 折叠面板 → ExpandableCard
|
||
- **审批弹窗**: `approval_required` 事件 → AlertDialog + 三按钮
|
||
|
||
---
|
||
|
||
## 六、交付里程碑
|
||
|
||
| 里程碑 | 范围 | 预计迭代 |
|
||
|:-------|:-----|:---------|
|
||
| **M1: 核心补齐** | P0-1~P0-7 全部 | 1-2 sprint |
|
||
| **M2: 体验完善** | P1-1~P1-9 全部 | 2-3 sprint |
|
||
| **M3: 增强特性** | P2-1~P2-7 按需 | 3-4 sprint |
|
||
|
||
---
|
||
|
||
*文档结束 — 由产品经理 + 前端架构师 + 后端架构师联合编制*
|