Neodrop / grain

对话与任务入口:方案已定稿

最终方案:侧栏频道树(我的频道挂对话 + 最近)+ 订阅进关注页 + 点开跳去现场 + 四态点(数字挂聚合胶囊),看定稿预览。下面的 4 个决策与其它组合保留为过程记录,/lab默认也打开定稿组合。

0 · 前提:我们在为什么系统做设计

  • 这是一个长任务系统。调研、创建频道、批量生产内容, 平均任务时长以分钟到小时计。用户的常态是交代完就走开, 回来的第一个问题是「我交代的事怎么了」。所以任务入口必须常驻显示、 状态必须低成本可见、必须有通知兜底——否则用户要满系统去找。 后面所有已定结构和固定件,都是这一条推出来的。
  • 对话 = 任务。没有独立的「后台任务」实体,任务态是 会话的一个字段(数据层已定)。所以「任务管理」就是「对话列表」, 不需要第二套界面。
  • 对话是伴随型的。对话跟着人走,subject 只是 「最后一次在哪聊」(阶段二搬迁语义已定)。与它打架的形态都已 被否掉;整页对话(Chat 页)以受限身份回归——只作弹窗的升舱 出口与「最近」纯对话的容器,不当默认。

1 · 交互核心思想(六条,改任何交互先对这里)

  1. 对话即任务,真相只有一份。没有独立的后台任务 实体,「任务管理」就是对话列表——一份列表、一处管理。
  2. 读写分离。dock / ⌘K 是写入口(频道页拉起默认 新开一条),列表是读入口;列表与侧栏树里不放「新对话」和 管理菜单,读的地方保持只读的安静。
  3. 归属定结构,状态定注意力。我创建的频道是 项目,对话挂上常挂不消失;无主的进「最近」。聚合胶囊只数 需要注意的,要办的浮顶、办完的沉底。
  4. 容器按归属分流。挂我频道下的对话有「我的 现场」→ 跳去现场 + 弹窗;「最近」纯对话没有现场 → 直接 Chat 整页。弹窗的全屏 icon 是升舱(换容器继续),不是放大。
  5. 默认自动、例外手动、手动优先。点频道顺手 自动展开(手风琴自动收回)、操作件 hover 才出现;手动展开 常驻不被自动收回。所有自动行为都留显式覆盖(「带上当前页面」、 容器内切换不跳页、peek 先预览)。
  6. 状态可见性不压在单一位置上。聚合胶囊、 Section 头计数、完成 toast、进度环、⌘K——多个兜底接住 「交代完就走开」的用户。

2 · 已经决定的(附理由,不再讨论)

  1. 任务入口一定显示,且尽可能方便。我们是长任务系统:用户交代完就走开,回来第一件事是找 「我交代的事怎么了」。所以入口常驻、状态一眼可见、完成有通知。
  2. 列表只有一份,管理只在一处。左右各放一份看似方便,实际是同一条信息两处出现、两处管理, 迟早对不上。
  3. 对话在哪打开,跟着列表和归属走。挂在我创建频道下的对话:跳去频道现场 + dock 弹窗(弹窗全屏 icon 升舱进 Chat 整页)。「最近」的纯对话:从任何列表点开 直接进 Chat 整页。容器内历史切换不跳页(逃生通道)。
  4. dock 只负责发起,形态不再是决策。它就是每页那条「问点什么」的对话条,不显示任务状态。位置跟着 对话列表走:列表放左时是居中常驻条、对话面板从中间拉起; 列表放右时缩成右下角悬浮条。频道页从 dock 拉起 = 默认开一条 新对话(侧栏树不放写入口)。
  5. 所有对话一视同仁。创建频道也是普通对话,在同一个容器里打开,不按类型分派。 想回创建现场,点对话里的 subject chip 就行。
  6. 移动端不用单独讨论。桌面方案定了,移动端按固定规则自动折算:侧栏收进汉堡, 对话收进底部条、点开上拉。见移动端自适应。
  7. 列表的排序和收纳是定死的。要你处理的永远在最上面,办完看过的沉到底部,不单独分组。 频道未读显示条数、对话状态用小圆点,两种信息不混用。

3 · 固定件:所有方案共享的兜底(不进决策)

五个固定件服务同一个前提——长任务的状态可见性,不能只压在 「列表放哪」一个决策上:

  • 完成即通知:任务跑完的瞬间弹 toast、点击直达 (GitHub agents panel 的兜底做法)。
  • 进度环:进度可知时,状态点从「转圈」升级成确定 进度环——「在跑」和「跑到 90%」是两种焦虑。
  • 状态优先排序:要注意的按严重度浮顶,已完成 沉底——单一列表,不再折叠「已完成」分组。
  • Peek 预览:subject chip 点开先预览现场、不跳页, 预览里再「前往」(Notion side peek)。
  • ⌘K 命令面板:随处搜对话、快速打开、回车在当前页 发起(Linear / Raycast)。

4 · 4 个决策(已定稿,保留为过程记录):每条拿什么判断

#决策可选项拿什么判断
1对话列表放在哪?侧栏 Section · 侧栏 Tab · 侧栏 · 挂在频道下(定稿) · 侧栏 · 频道悬浮面板 · 右侧对话区① 要不要「边聊边看」并排——只有右侧区给得出;② 扫状态频率 vs 订阅浏览占比;③ 愿不愿付一列常驻空间;④ 用户按频道还是按时间线想事情。
2频道 / 订阅入口住在哪?侧栏 Section · 侧栏 Tab · 独立「关注」页订阅流 vs 推荐流的实际占比(数据可查):订阅流主导就留侧栏,推荐流主导才可降到二级页。
3点开对话,页面跟不跟着去现场?原地打开 · 跳去现场(定稿)点开主要是看状态还是回现场干活;误开只亏一次点击、误跳丢掉现场,不对称偏向原地(peek 已兜底「去看看」)。
4状态怎么表达?四态点(定稿) · 文字胶囊列表的噪音预算:行内要不要上文字。可数的数字不进行内,固定挂在 Section 头 / header 角标的聚合计数上。窄列里文字胶囊会挤标题(警告)。

决策之间的耦合只剩 2 条硬联动(Tab 双向:一边选 Tab 另一边自动跟着变,换走自动恢复;挂在频道下:侧栏只放我创建的频道, 订阅入口自动挪去关注页)和 2 条代价警告(文字胶囊 × 侧栏窄列挤标题;订阅进关注页 × 对话在右侧, 侧栏空掉)。实验台会实时提示,不用背下来。

5 · 六个预设:定稿 + 五个对照变体

第一个是定稿的最终方案,其余是过程中对照过的组合。进实验台选一个当 起点,想改哪条决策改哪条;组合可存档、可复制链接发给别人。

定稿最终方案/final

定稿组合:侧栏是创作者的项目树——我创建的频道挂着各自的对话(默认收起成聚合胶囊,点频道手风琴式顺手展开),无主对话进「最近」;订阅整体去关注页;打开按归属分流——我频道下的跳去现场 + 弹窗(全屏 icon 升舱 Chat 整页),「最近」直接进 Chat 整页;状态四态点,数字挂聚合胶囊。

类似产品:Codex(Projects + Recents)× GitHub 通知式跳转

对话列表 · 侧栏 · 挂在频道下(定稿)订阅入口 · 独立「关注」页跳转行为 · 跳去现场(定稿)状态表达 · 四态点(定稿)
变体 0侧栏共存 Section/recommended

对话与订阅同屏、状态零点击可扫,且全程只有一份列表——可见性和单一真相同时拿到,是改动最小、心智最熟的组合。

类似产品:Claude / Slack / Linear 侧栏

对话列表 · 侧栏 Section订阅入口 · 侧栏 Section跳转行为 · 原地打开状态表达 · 四态点(定稿)
变体 1侧栏双 Tab/tabs

对话与订阅平权、各拿满整列,长列表管理最从容——赌的是用户愿意为完整空间付「切换才能看另一边」的代价。

类似产品:Discord(服务器 / 私信双栏)· 你的原方案

对话列表 · 侧栏 Tab订阅入口 · 侧栏 Tab跳转行为 · 原地打开状态表达 · 四态点(定稿)
变体 2右侧对话区/clean

侧栏完全让给订阅、观众动线零打扰,对话整套收进 372px 右侧区——「边聊边看」的并排体验只有它给得出。

类似产品:Dia / Cursor / Copilot Chat

对话列表 · 右侧对话区订阅入口 · 侧栏 Section跳转行为 · 原地打开状态表达 · 四态点(定稿)
变体 3独立关注页(抖音形)/followpage

订阅升级成整页:搜索、正在更新分区、未看计数都放得下——赌的是主消费路径在推荐流,订阅降一级不伤主动线。

类似产品:抖音精选 PC / B 站动态

对话列表 · 侧栏 Section订阅入口 · 独立「关注」页跳转行为 · 原地打开状态表达 · 文字胶囊
变体 4频道树(Codex 形)/tree

创作者视角的侧栏:我创建的频道即项目,对话挂在频道下、挂上就不消失,其余进「最近」——赌的是核心用户按频道管理产出,愿意让订阅退到关注页。

类似产品:Codex(Projects + Recents)/ Claude Code

对话列表 · 侧栏 · 挂在频道下(定稿)订阅入口 · 独立「关注」页跳转行为 · 原地打开状态表达 · 四态点(定稿)

6 · 开会怎么用(10 分钟)

  1. 先看两种容器的手感(各 1 分钟): /recommended 是「放左 + dock 中间拉起面板」, /clean 是「右侧区 + 互斥收合」, /tree 是「挂在频道下」的项目式侧栏。位置决策的主要形态就全见过了。
  2. 进 /lab 按 1 → 4 过决策:每条先读「拿什么判断」,对着微缩预览 比较,点选后看优 / 劣,拍板进下一条。
  3. 过完存为方案、复制链接。中途停 15 秒别动—— 看四态转场、进度环推进和完成 toast,状态语言够不够抢注意力 只能这么判断。状态与 icon 的规格书在 状态图谱。