Files
2026-07-13 13:20:22 +08:00

198 lines
9.3 KiB
Markdown
Raw Permalink 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.
# 对话 - 发送草稿箱(消息排队交互优化)
> 本文档聚焦「AI 回复期间的消息排队」这一块的交互优化,是对现有排队能力的体验升级。
> 涉及范围:对话输入区上方的排队面板。不改后端,全部在渲染层完成。
---
## 背景与目标
**现状**:AI 正在回复时,用户仍可继续输入并发送消息,这些消息进入一个「排队面板」等待发出。这个能力已经存在——支持入队、编辑、删除、清空、当前 turn 结束后自动发送,也支持拖拽调整顺序。
**问题**(来自微信群用户反馈):
- 每条排队消息只有「删除」是直接可见的,「编辑」被折进「⋯」更多菜单,要点两下才找得到。
- 没有「立即发送」——排队的消息只能等 AI 回完后被动等待,用户想让某条马上发出去做不到。
- 排队面板缺少一个「是否自动发送」的总控,用户无法选择「我先攒着、想发再发」。
**目标**:把排队面板重新定位成一个「**发送草稿箱**」——AI 忙时你写的消息先存在这里,你能清楚看到、随手操作(立即发送 / 编辑 / 删除 / 调序),并能选择让草稿箱**自动**依次发出、还是**手动**由你逐条发。
**名词说明**
- **发送草稿箱**:面板的新名字。指 AI 回复期间用户已发送、正在等待发出的消息集合。下文沿用旧代码里的「排队 / 队列」时,指的是同一个东西。
- **草稿**:草稿箱里的单条待发消息(含文字与文件)。
- **自动 / 手动**:草稿箱的两种发送模式,见 F-DRAFT-03。
---
## (F-DRAFT-01) 每条草稿的三个常驻操作 [优化]
**用户故事**:作为用户,我希望每条排队的消息都能一眼看到「立即发送 / 编辑 / 删除」三个操作,随手就能点,不用翻菜单。
**正常流程**(用户视角):
1. AI 回复期间,用户发送的消息进入发送草稿箱,逐条列在输入框上方。
2. 每条草稿右侧常驻三个操作按钮,鼠标不悬停也始终可见:
- **立即发送**:见 F-DRAFT-02。
- **编辑**:把这条草稿的文字与文件放回输入框供修改,该草稿从箱中移除,改完重新发送即重新入箱。
- **删除**:把这条草稿从箱中移除,不再发出。
3. 三个操作在移动端、窄栏下同样常驻可点(不依赖 hover)。
**异常情况**
- 草稿箱为空:面板整体不显示。
**验收标准**
- [ ] 每条草稿右侧常驻显示「立即发送 / 编辑 / 删除」三个按钮,无需 hover 或展开菜单。
- [ ] 「编辑」不再藏在「⋯」菜单里。
- [ ] 「删除」将该条从草稿箱移除。
- [ ] 「编辑」将该条内容与文件回填输入框并从箱中移除。
- [ ] 三个按钮在移动端 / 窄栏下均可直接点击。
---
## (F-DRAFT-02) 立即发送(打断当前回复插队发出)[新增]
**用户故事**:作为用户,当我发现某条消息在排队、但我想它马上就走,我希望点一下就让它立刻发出去。
**正常流程**(用户视角):
1. 用户点击某条草稿的「立即发送」。
2. 系统**打断 AI 当前正在进行的回复**,将该条草稿立即出队并发送。
3. 用户能理解这打断了当前回复——**不额外弹提示条**。
4. 草稿箱里剩余的草稿**行为完全不变**:原本自动就继续自动依次发,原本手动就继续等待用户逐条发。发送模式、内容、顺序都不受这次插队影响。
**边界说明**
- 「立即发送」只作用于**被点击的这一条**。它是一次「让这条插队立刻走」的动作,不是模式切换,不引入「暂停 / 继续」这类额外状态。
**异常情况**
- AI 当前没有正在进行的回复(已空闲):直接发送该条,无需打断。
**验收标准**
- [ ] 点击「立即发送」会中止 AI 当前回复并立刻发出该条草稿。
- [ ] 不出现「已插队 / 队列已暂停」之类的提示条。
- [ ] 剩余草稿的发送模式、内容、顺序均不因这次插队而改变。
- [ ] AI 空闲时点击「立即发送」直接发出,不产生打断副作用。
---
## (F-DRAFT-03) 自动 / 手动发送模式 [新增]
**用户故事**:作为用户,我希望能选择草稿箱是「AI 回完自动帮我依次发」还是「先攒着、我想发再发」。
**正常流程**(用户视角):
1. 草稿箱标题行右侧有一个**模式切换按钮**,显示当前模式(自动 / 手动),点一下即切到另一模式,无需二次确认。
2. **自动模式**(默认):AI 每结束一轮回复,草稿箱自动把下一条发出去,一条接一条,直到发完,用户无需操作。
3. **手动模式**:草稿只暂存在箱中、**不自动发出**,由用户逐条点「立即发送」决定何时发。
**作用范围**(会话级,纯前端):
- 模式是**每个对话各自记录**的,A 对话设手动不影响 B 对话。
- **每个对话启动时都是「自动」**。
- 该设置与现有排队内容一样保存在前端会话级存储中:应用运行期间切走再切回该对话,模式与草稿都保留;整个应用关闭重开后重置(草稿与模式都回到初始,与现有排队行为一致)。
**异常情况**
- 草稿箱为空:面板不显示,模式设置在后台保留,下次有草稿入箱时按该模式运作。
**验收标准**
- [ ] 标题行右侧的切换按钮显示当前模式,点击即切换,无二次确认。
- [ ] 自动模式下,AI 每轮结束后自动依次发出草稿。
- [ ] 手动模式下,草稿不自动发出,仅在用户点「立即发送」时发出。
- [ ] 新对话默认自动模式。
- [ ] 模式按对话独立记录,互不影响。
- [ ] 应用关闭重开后模式回到默认(自动)。
---
## (F-DRAFT-04) 草稿箱标题行与说明 [优化]
**用户故事**:作为用户,我希望一眼看懂这个面板是什么、当前处于什么模式,需要时能查到自动/手动的含义。
**正常流程**(用户视角):
标题行(草稿箱框内顶部一行)自左到右:
1. **标题「发送草稿箱」+ 数量徽标**(显示当前草稿条数)。
2. **模式切换按钮**F-DRAFT-03)。
3. **帮助「?」**:hover 显示说明——草稿箱是什么,以及自动 / 手动分别的含义。
4. **更多「⋯」**:见 F-DRAFT-05。
**帮助文案**tooltip):
> 发送草稿箱:AI 回复期间你发的消息会先存到这里。
> 自动:AI 回复结束后,自动依次发送草稿箱里的消息。
> 手动:消息只暂存、不自动发,由你逐条点「立即发送」。
**验收标准**
- [ ] 标题行显示「发送草稿箱」与草稿数量。
- [ ] 「?」hover 出说明,覆盖草稿箱含义与两种模式。
---
## (F-DRAFT-05) 清空草稿箱(防误触)[优化]
**用户故事**:作为用户,我希望能一次清空整箱草稿,但不要让我轻易误点到。
**正常流程**(用户视角):
1. 「清空草稿箱」放在标题行「⋯」更多菜单里,菜单项以危险色(红)呈现。
2. 点击后**再弹一次二次确认**,确认后才清空全部草稿。
**验收标准**
- [ ] 「清空草稿箱」位于「⋯」菜单内,非标题行直接可点。
- [ ] 菜单项以危险色呈现。
- [ ] 点击后需二次确认才执行清空。
---
## (F-DRAFT-06) 拖拽调整顺序 [保留]
**用户故事**:作为用户,我希望能调整草稿的发送先后顺序。
**正常流程**(用户视角):
1. 每条草稿最前有一个拖拽手柄,**hover 时显现**,按住可上下拖动调整顺序。
2. 顺序即草稿箱自动/手动发出的先后次序。
**验收标准**
- [ ] 桌面端 hover 草稿时显现拖拽手柄,可上下拖动排序。
- [ ] 排序结果即后续发送次序。
---
## (F-DRAFT-07) 窄栏 / 移动端适配 [新增]
**用户故事**:作为在小屏、移动端或团队并排 Agent 视图下使用的用户,我希望草稿箱在窄栏里也摆得下、点得到。
**适配策略**(约 300px 宽及以下):
- **标题**「发送草稿箱」收成一个图标 + 数量徽标,hover / 长按显示全名,省出宽度。
- **模式切换按钮始终保留**(核心功能),文字压到「自动 / 手动」两字。
- **「?」帮助并入「⋯」菜单**:窄栏头部只保留一个「⋯」,其中包含「使用说明」与「清空草稿箱」。
- **每条草稿的三个操作按钮不变**,消息文字自动截断。
- **拖拽手柄在窄栏隐藏**,改为长按整条拖动。
**验收标准**
- [ ] 窄栏下标题收成图标 + 徽标,切换按钮保留。
- [ ] 窄栏下「?」并入「⋯」菜单,头部仅一个「⋯」。
- [ ] 窄栏下每条三个操作按钮仍可点击,文字自动截断。
- [ ] 团队并排 Agent 视图下草稿箱布局不溢出、不错位。
---
## 待讨论模块
- **控件形态已定**:模式切换采用「单按钮状态切换」(按钮显示当前模式,点击切到另一模式),不采用拨动开关或分段按钮。
- **是否需要「全局默认模式」**:当前为纯会话级、新对话默认自动。若后续收到「每次开新对话都要重设太麻烦」的反馈,再评估增加一个全局默认值(设置项)。此项本期不做。