# ACP 单聊 - 实时反馈与展示 (F-DISPLAY) > 本文档由 PM 从 `prd-acp-scenarios.md` 抽取,保持与源同步。 > 覆盖技术场景:S-UI-01 ~ S-UI-17(排除 S-UI-03/04/18 已合并至 F-SESSION-10) --- ## (F-DISPLAY-01) AI 回复实时逐字显示 [已实现] **用户故事**:作为用户,我希望 AI 的回复内容能实时逐字出现在对话界面中,以便我能及时了解 AI 正在回答什么,而不必等到回答全部完成才看到内容。 **正常流程**(用户视角): 1. 用户发送消息后 -> 看到 AI 开始逐字输出回复内容 2. 回复过程中 -> 文字持续追加,界面自动滚动 3. AI 回复完成后 -> 文字停止追加,输入框恢复可用状态 **异常情况**: - 网络抖动导致短暂停顿:用户可能观察到输出暂停数秒后继续,无需手动操作 - AI 回复被中断(见 F-SESSION-03):已输出的内容保留在对话中 **验收标准**: - [ ] AI 回复内容实时逐字显示,无明显卡顿 - [ ] 回复过程中对话界面自动滚动至最新内容 - [ ] 回复完成后输入框恢复可用 - [ ] 页面刷新或重新进入会话后,已输出的部分回复内容不丢失 --- ## (F-DISPLAY-02) AI 思考过程展示 [已实现] **用户故事**:作为用户,我希望能看到 AI 的思考过程,以便了解它是如何分析问题的,同时不干扰正式回复的阅读。 **正常流程**(用户视角): 1. AI 开始处理消息时 -> 若 AI 进行了思考,会在回复区域上方展示思考内容(折叠区域),显示思考主题和详细内容 2. 思考过程实时更新 -> 思考内容逐步追加 3. 思考结束、正式回复开始 -> 思考区域标记为"已完成",正式回复内容开始输出 **异常情况**: - AI 思考了但最终没有输出正式回复内容:用户可以看到思考过程的记录 - 思考内容嵌在正式回复中(部分 AI 模型的行为):系统自动提取并分离展示 **验收标准**: - [ ] AI 的结构化思考内容以独立区域展示,与正式回复分开 - [ ] 思考内容实时逐步更新 - [ ] 思考结束后区域标记为"已完成" - [ ] 对于将思考内容嵌入正式回复的 AI 模型,系统能自动提取思考内容并单独展示 --- ## (F-DISPLAY-03) AI 工具调用展示 [已实现] **用户故事**:作为用户,我希望看到 AI 在回复过程中调用了哪些工具(如读文件、写文件、执行命令等),以便了解 AI 的操作进展。 **正常流程**(用户视角): 1. AI 调用工具时 -> 界面显示工具调用卡片,包含工具名称和状态(进行中/已完成) 2. 工具执行过程中 -> 卡片实时更新工具的输入和输出信息 3. 工具执行完成 -> 卡片状态变为"已完成",显示最终结果 **异常情况**: - 工具执行失败:卡片状态变为失败,显示错误信息 **验收标准**: - [ ] 工具调用以卡片形式展示,包含工具名称 - [ ] 工具执行状态实时更新(进行中 -> 已完成/失败) - [ ] 工具的输入和输出信息可查看 --- ## (F-DISPLAY-04) AI 执行计划展示 [已实现] **用户故事**:作为用户,我希望看到 AI 的执行计划,以便了解它打算分几步完成我的请求。 **正常流程**(用户视角): 1. AI 生成执行计划时 -> 界面展示计划列表,包含各步骤描述 2. 计划更新时 -> 列表实时刷新 3. 同一轮对话中计划变化 -> 复用同一个计划展示区域,而非重复创建 **验收标准**: - [ ] AI 执行计划以步骤列表形式展示 - [ ] 计划内容实时更新 - [ ] 同一轮对话中计划复用同一展示区域 --- ## (F-DISPLAY-06) 网页预览打开 [已实现] **用户故事**:作为用户,当 AI 在执行任务过程中打开网页(如调试工具页面)时,我希望系统能直接在预览面板中展示,无需我手动打开浏览器。 **正常流程**(用户视角): 1. AI 执行中调用了浏览器导航工具 -> 系统自动在预览面板中打开对应网页 2. 用户可在预览面板中查看和交互 **验收标准**: - [ ] AI 调用浏览器导航工具时自动打开预览面板 - [ ] 预览面板正确显示目标网页 --- ## (F-DISPLAY-07) 上下文用量展示 [已实现] **用户故事**:作为用户,我希望知道当前会话已使用了多少上下文窗口(token 用量),以便了解是否需要开启新会话。 **正常流程**(用户视角): 1. AI 每次回复后 -> 界面更新上下文用量指示(如已用/总量) 2. 用量接近上限时 -> 给予视觉提示 > **待确认点**:上下文用量数据存在两条获取路径,部分 AI 后端可能仅支持其中一条。需确认各后端的实际上报行为是否一致,以决定前端展示的可靠性。 **不同 AI 后端的差异**: - 部分后端在回复过程中实时上报用量,部分后端仅在回复结束后一次性上报 - 部分后端可能不上报上下文上限信息,此时仅展示已用量 **验收标准**: - [ ] 每次 AI 回复后更新上下文用量展示 - [ ] 上下文用量数据持久化,重新打开会话后可见 --- ## (F-DISPLAY-10) 斜杠命令列表 [已实现] **用户故事**:作为用户,我希望在输入框中输入 `/` 时能看到所有可用的斜杠命令,以便快速使用快捷功能。 **命令来源(按优先级合并显示)**: 1. **内置命令**:系统预设的命令(如 `/btw`、`/clear` 等) 2. **内置 Skill**:系统预注入的技能命令 3. **用户自定义 Skill**:用户在设置中添加的自定义技能 4. **Agent 原生命令**:AI 后端自身支持的斜杠命令(通过 ACP 协议同步,需 Agent 支持) **正常流程**(用户视角): 1. 用户在输入框输入 `/` -> 显示合并后的命令列表,包含命令名称、描述和来源标识 2. 用户可输入关键字过滤命令 3. 用户选择命令 -> 命令填充到输入框 4. 命令列表会随 AI 后端能力动态更新(Agent 原生命令在连接建立后加载) **异常情况**: - AI 尚未连接:仅显示内置命令和用户自定义 Skill,不显示 Agent 原生命令 - Agent 原生命令加载超时(6 秒):显示已有的命令列表,不阻塞用户输入 - 不同来源存在同名命令:需定义优先级策略(待确认) **不同 AI 后端的差异**: - Agent 原生命令取决于 ACP 协议是否支持以及具体 Agent 是否提供 - 部分后端可能不支持通过 ACP 同步命令列表 **验收标准**: - [ ] 输入 `/` 时显示合并后的命令列表 - [ ] 命令列表区分来源(内置 / 用户 Skill / Agent 原生) - [ ] 支持关键字过滤 - [ ] Agent 原生命令在连接后动态加载 - [ ] 命令加载超时不阻塞用户输入 --- ## (F-DISPLAY-11) 请求追踪信息 (ACP Log Panel) [已实现] **用户故事**:作为用户,我希望每次 AI 开始生成回复时能看到本次请求的基本信息(如使用的模型、后端等),以便排查问题或确认配置生效。 **正常流程**(用户视角): 1. AI 开始处理请求时 -> 界面显示本次请求的追踪信息(模型名称、后端类型等) **验收标准**: - [ ] 每次 AI 开始生成时展示请求追踪信息 - [ ] 追踪信息包含当前使用的模型名称 --- ## (F-DISPLAY-12) 环境检查与 AI 后端健康检查 [部分实现] > **实现差距**:健康检查已有(ModelModalContent 中的按钮);环境变量逐项检查 UI 在 ACP V1 路径下缺失 **用户故事**:作为用户,我希望在配置 AI 后端时能检查环境是否正确配置以及后端是否可用,以便快速定位问题。 **正常流程**(用户视角): 1. 用户在设置页面点击"检查环境" -> 显示环境变量配置状态(已设置/未设置) 2. 用户点击"健康检查" -> 系统尝试连接 AI 后端并发送测试消息 -> 显示是否可用及响应延迟 **异常情况**: - 后端未认证:显示"未认证"提示,引导用户完成认证 - 后端不可用:显示具体错误信息 **验收标准**: - [ ] 环境检查显示各环境变量的配置状态 - [ ] 健康检查能检测后端可用性并显示延迟 - [ ] 认证相关错误给出明确提示 --- ## (F-DISPLAY-13) 可用 AI 后端列表 [已实现] **用户故事**:作为用户,我希望看到系统中所有可用的 AI 后端列表及其详细信息,以便选择合适的后端创建会话。 **正常流程**(用户视角): 1. 用户进入新建会话或设置页面 -> 显示所有可用 AI 后端列表 2. 每个后端显示名称、类型、是否已安装、支持的扩展能力等信息 **验收标准**: - [ ] 展示所有检测到的可用 AI 后端 - [ ] 每个后端显示名称和类型等基本信息 - [ ] 扩展后端有明确的标识