Files
aiagent/android/版本升级落地方案.md
renjianbo beff3fac8d fix: delete agent 500 error + dynamic personality + deployment guide
- 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>
2026-06-29 01:17:21 +08:00

13 KiB
Raw Blame History

天工智能体 Android 客户端 — 版本升级落地方案

基于两轮功能完整性评估(源码扫描 + 竞品对标)编制
评估日期: 2026-06-27 | 当前版本: v1.0.0 (Build 1)


一、版本规划总览

v1.0.0 ──→ v1.1.0 ──→ v1.2.0 ──→ v2.0.0
 (当前)    (紧急修复)  (体验对齐)  (能力突破)

 v1.1.0: 修复阻塞缺陷 + 补齐对话核心交互   (预计 3-5 人天)
 v1.2.0: 竞品体验对齐 + 通知推送完善        (预计 5-8 人天)
 v2.0.0: 智能体管理闭环 + 离线能力 + 安全加固 (预计 8-12 人天)

二、v1.1.0 — 紧急修复版

目标:消除 P0 阻塞缺陷,补齐对话核心三大交互

2.1 后端必须配合的修复

# 问题 当前状态 修复方案 负责端 工时
1 POST /api/v1/feedback 返回 404 用户赞/踩操作必定失败,UI 乐观更新后回滚提示"反馈提交失败" 后端新增 POST handler,接收 FeedbackRequest,写入 feedback 表 后端 0.5d
2 POST /api/v1/fcm/register 接口验证 FCM 令牌注册 API 存在但未端到端验证 确认接口正常,支持 token 注册/注销 后端 0.5d

2.2 Android 端修复清单

P0 — 阻塞性缺陷

# 功能 当前状态 修复方案 涉及文件 工时
1 通知列表页 API 存在但无 UI 页面,NavGraph 无对应路由 新增 NotificationsScreen + NotificationsViewModel,注册路由 Routes.NOTIFICATIONS,支持已读/未读标记 NavGraph.kt、新建 NotificationsScreen.kt、NotificationsViewModel.kt 1d
2 FCM 推送集成 FcmTokenManager.initialize() 是空操作,Firebase 依赖和 google-services.json 未添加 添加 Firebase deps → 放置 google-services.json → 取消 FcmTokenManager 中的注释代码 → 在 TiangongApp.onCreate() 调用 initialize() build.gradle.kts、FcmTokenManager.kt、TiangongApp.kt 1d

P1 — 对话核心交互补齐

# 功能 当前状态 修复方案 涉及文件 工时
3 停止生成 发送消息后无法中途停止 在 ChatViewModel 中暴露 stopGeneration() 方法(cancel SSE job),流式文本旁添加停止按钮 ChatViewModel.kt、ChatScreen.kt 0.5d
4 消息重发 发送失败后无重试入口 UI 在失败消息旁显示重试按钮,调用已有的 sendMessage 逻辑重新发起 ChatScreen.kt、ChatViewModel.kt 0.5d
5 Think 推理可视化 SseEvent.Think 事件被完全忽略(ChatViewModel.kt:318 空处理) 新增 ThinkTrace 可折叠组件,接收迭代号和推理内容,折叠状态下显示"思考中…",展开显示完整推理链 新建 ThinkTrace.kt、修改 ChatViewModel.kt:318、ChatScreen.kt 1d

2.3 v1.1.0 代码质量修复(附带)

# 位置 问题 修复
Q1 AppModule.kt:81 runBlocking 阻塞主线程读取 DataStore 改用动态 BaseUrl 拦截器,避免 DI 阶段同步等待
Q2 AgentListScreen.kt:65 uiState.error!! 空安全风险 改用 ?.let { } 安全调用
Q3 SettingsScreen.kt:141 用户名硬编码 "admin" 从 GET /api/v1/auth/me 获取真实用户名

2.4 v1.1.0 验收标准

  • 赞/踩反馈能成功提交到后端并持久化
  • 通知列表页可展示通知、标记已读
  • FCM 推送能收到后台推送并跳转
  • 流式生成过程中可点击停止
  • 失败消息可重发
  • Think 推理过程以卡片形式展示
  • 编译 0 error,安装到测试机正常运行

三、v1.2.0 — 体验对齐版

目标:对齐 ChatGPT/Claude 核心交互体验,完善通知体系

3.1 对话增强

# 功能 竞品对标 修复方案 工时
1 编辑已发送消息 ChatGPT / Claude 均支持 长按用户消息弹出菜单 → 点击编辑 → 进入编辑模式 → 重新发送编辑后的内容 1d
2 重新生成回复 ChatGPT / Claude 均支持 Regenerate 最后一条助手消息旁添加"重新生成"按钮,复用 sendMessage 使用上一条用户消息文本 0.5d
3 工具调用审批 Claude 有工具权限确认弹窗 收到 SseEvent.ToolCall 时弹出审批对话框展示工具名和输入参数,用户确认后才允许执行(需后端支持 tool_approval 事件类型或 SSE 双向通信改造) 2d
4 对话重命名 ChatGPT / Claude 均支持长按重命名 ConversationListScreen 长按弹出菜单 → 重命名对话框 → 更新 Room 和 API 0.5d
5 对话搜索 ChatGPT / Claude 均支持历史搜索 在 ConversationListScreen 顶部添加搜索栏,调用 GET /api/v1/conversations?search=(如后端支持)或本地 Room 全文搜索 1d

3.2 通知体系完善

# 功能 修复方案 工时
6 通知免打扰时段 设置页新增通知偏好(开启/关闭/免打扰时段),存储到 DataStore 0.5d
7 通知点击跳转 FCM 通知点击 → 解析 deep link → 跳转对应对话 0.5d
8 通知分组 按类型分组(系统通知/对话通知),Android 通知渠道适配 0.5d

3.3 UI/UX 打磨

# 功能 修复方案 工时
9 暗色主题 Markdown 适配 MarkdownRenderer.kt:68 硬编码文字颜色改为从 Compose 主题动态获取 0.5d
10 服务器地址动态更新 替换 runBlocking 方案,使用 OkHttp 动态 BaseUrl 拦截器,修改服务器地址后无需重启 1d
11 离线网络提示 新增 NetworkMonitor 工具类(ConnectivityManager + Flow),离线时在 ChatScreen 顶部展示横幅 0.5d
12 骨架屏优化 SkeletonChat 增加更多变化(工具卡片骨架、流式文本骨架) 0.5d
13 底部快捷操作栏 ChatScreen 底部输入区重构:语音按钮/附件按钮/停止生成按钮横向排列于输入框上方,停止按钮仅在流式生成时显示 0.5d
14 左侧抽屉导航 实现 ModalNavigationDrawer,抽屉内容:当前智能体信息 + 历史对话列表(最近 10 条)+ 设置入口 + 退出登录。点击对话直接跳转,无需进入独立历史页面。参考 ChatGPT Android 交互模式 1d

3.4 v1.2.0 验收标准

  • 可编辑已发送的用户消息
  • 可重新生成最后一条助手回复
  • 工具调用前弹出审批确认
  • 对话可重命名、搜索
  • 暗色主题下 Markdown 文字清晰可见
  • 修改服务器地址无需重启
  • 离线时显示网络提示横幅
  • 流式生成时输入框上方显示停止按钮
  • 左侧抽屉可滑出,展示历史对话和设置入口

四、v2.0.0 — 能力突破版

目标:智能体管理闭环 + 安全加固 + 离线能力

4.1 智能体管理

# 功能 竞品对标 修复方案 工时
1 智能体详情页 ChatGPT GPT 详情页 新增 AgentDetailScreen,展示工作流配置、预算配置、版本信息、工具列表 2d
2 智能体创建/编辑 ChatGPT GPT Builder 新增 AgentEditScreen(表单:名称/描述/系统提示词/模型参数/工具选择),调用后端 CRUD API 3d
3 智能体部署/停止 — AgentListItem 添加操作菜单(启动/停止/删除),调用后端部署 API 1d
4 模型参数调节 高级设置 在智能体详情页或 ChatScreen 中暴露 temperature/max_iterations 参数调整 1d

4.2 安全加固

# 功能 修复方案 工时
5 生物识别锁 集成 BiometricPrompt(指纹/面部),App 进入后台超过 1 分钟 → 回到前台需验证 1d
6 登录渐进锁定 LoginViewModel 添加失败计数:5次失败 → 30秒冷却,10次 → 5分钟锁定 0.5d
7 SSL Certificate Pinning OkHttp 添加 CertificatePinner,防止中间人攻击 0.5d

4.3 离线与数据

# 功能 修复方案 工时
8 离线消息缓存 启动时从 Room 读取最近对话列表展示,网络恢复后增量同步。实现 offline-first 读取策略 2d
9 数据导出 设置页新增"导出对话数据"按钮 → 生成 JSON/ZIP → 系统分享 Sheet 1d
10 缓存清理 设置页新增"清除缓存"按钮 → 清空 Room DB + DataStore(保留 token) 0.5d

4.4 多模态扩展

# 功能 修复方案 工时
11 文件上传 (PDF/DOCX等) 扩展上传逻辑支持非图片文件,显示文件类型图标 1d
12 拍照输入 添加相机 intent,拍照后自动压缩上传 0.5d

4.5 v2.0.0 验收标准

  • 可查看智能体详情(工作流/预算/工具)
  • 可创建和编辑智能体
  • 生物识别锁正常工作
  • 连续登录失败触发冷却时间
  • 离线时能查看历史对话
  • 支持数据导出和缓存清理

五、代码质量修复路线图

# 位置 问题 修复版本 工时
Q1 AppModule.kt:81 runBlocking 阻塞主线程 v1.2.0 (动态 URL 拦截器) 1d
Q2 AgentListScreen.kt:65 uiState.error!! NPE 风险 v1.1.0 0.1d
Q3 MarkdownRenderer.kt:68 硬编码文字颜色 v1.2.0 0.5d
Q4 SseClient.kt:108,134,193 每次重连创建新 CoroutineScope v1.1.0 (统一用 viewModel 管理) 0.3d
Q5 ChatViewModel.kt:151,161 静默吞异常 v1.1.0 (添加日志) 0.1d
Q6 ChatViewModel.kt:318 Think 事件空实现 v1.1.0 (ThinkTrace 组件) 1d
Q7 VoiceInputButton.kt:132,149 录音错误无提示 v1.1.0 (Toast 提示) 0.1d
Q8 SettingsScreen.kt:141 用户名硬编码 v1.1.0 (API 获取) 0.2d
Q9 SettingsScreen.kt:217 服务器变更需重启 v1.2.0 (动态 URL) 1d

六、工时汇总

版本 范围 前端工时 后端工时 合计
v1.1.0 紧急修复 (3新增 + 6修复 + 附带质量) 5.8 人天 1 人天 6.8 人天
v1.2.0 体验对齐 (5对话增强 + 3通知 + 6UI打磨) 10 人天 1 人天 11 人天
v2.0.0 能力突破 (4智能体 + 3安全 + 3离线 + 2多模态) 13 人天 2 人天 15 人天
总计 28.8 人天 4 人天 32.8 人天

七、里程碑与交付节奏

Week 1 ──────── Week 2 ──────── Week 3-4 ────── Week 5-6

 v1.1.0 开发    v1.2.0 开发    v1.2.0 收尾    v2.0.0 开发
 ├─ 反馈API     ├─ 编辑/重生成  ├─ 测试/修bug   ├─ 智能体管理
 ├─ 通知列表    ├─ 工具审批     ├─ 灰度发布     ├─ 离线缓存
 ├─ FCM集成     ├─ 暗色主题     │               ├─ 安全加固
 ├─ 停止/重发   ├─ 动态URL      │               ├─ 文件上传
 ├─ ThinkTrace  ├─ 离线提示     │               └─ 测试发布
 └─ 代码质量    ├─ 对话管理     │
                ├─ 快捷操作栏   │
                └─ 抽屉导航     │
      ↓               ↓              ↓               ↓
   v1.1.0          v1.2.0         v1.2.1         v2.0.0
   (第1周末)       (第3周末)      (第4周)         (第6周末)

八、风险与依赖

# 风险 影响 应对措施
1 后端反馈接口未及时上线 v1.1.0 阻塞 提前与后端对齐,确认 feedback 表结构和路由
2 google-services.json 获取困难 FCM 推送延期 提前向 Firebase 项目管理员申请
3 工具审批需后端 SSE 协议改造 v1.2.0 延期 先实现 UI 端准备,后端改造可降级为"仅展示审批结果"
4 智能体 CRUD API 后端未实现 v2.0.0 范围缩减 与后端确认 API 开发排期,必要时 v2.0 先做只读详情

九、附录:两次评估发现汇总对照

第一次评估(API 测试 + 编译验证)

类别 发现 状态
API 16/19 端点正常工作 已确认
API POST /api/v1/feedback → 404 v1.1.0 修复
编译 TokenDataStore.clearAll() Boolean? 类型错误 已修复
编译 AuthInterceptor.performReLogin() 挂起函数调用错误 已修复
编译 AgentListViewModel.debounce() 缺少 FlowPreview 已修复
编译 BUILD SUCCESSFUL, 0 errors 通过

第二次评估(源码扫描 + 竞品对标)

类别 数量
已实现功能 22 项
P0 阻塞缺陷 3 项
P1 严重缺失 7 项
P2 一般缺失 8 项
代码质量问题 9 项
竞品覆盖度 vs ChatGPT 62%

文档版本: v1.0 | 编制: 基于 Claude Code 源码分析 | 下次评审: v1.1.0 发布后