session 重构和后台工作:设计方案
这份方案讲 session 重构以后长什么样、为什么这样:一轮对话怎么读,后台的命令、子 agent、工作流、插件放在哪、怎么停、怎么引用。颜色、字号、圆角、用词都照 buffin 现在的。图都截自可交互原型;每张图旁边的「打开这个状态」,打开的就是图里那一刻,接着能点、能播。
省流
- 一轮只有四种时刻:想、做、等你、完成。最后一行永远是「现在」;做完折成「已完成 · 用时」,下面是答案和「修改 N 个文件」。
- 滚动每一步都是同一种行,只有内容有底色。对话里最多两层滚动;有底色的框能往下拉高,各记各的,拉到全部放下就不再淡出。
- 后台工作对话里是一行色块,输入框上面是一排小块。命令青绿,子 agent 品红,工作流橄榄绿,插件粉。工作流点开是它的几个 agent。
- 在跑和结束在跑的挂着自己颜色的水波,按 ■ 停。结束的变灰,失败是红叉;点开看过、点 ×,或者你下一轮说完,它就走。
- 引用拖进输入框或者打 @,就是一个带颜色的引用。发出去的消息留着发送时的样子。
- 长行命令输出默认折行,折下去的部分缩进两格;「长行折行」能关掉。
- 交回来后台工作交回来,自己开一轮,第一行就是它;两件一起回来,开头就是两行。
- 怎么试一段写好的会话,右上角选停在第几轮
- 名字里的三件事Buffer、Buff in、Puffin 各是一条原则
- 一轮对话想、做、等你、完成;四条规矩
- 滚动和框最多两层;框能拉高,各记各的
- 后台工作在哪四种,八个地方
- 颜色放在现有颜色的空档里
- 记号和动效水波在等:等它,或等你
- 输入框上面那一排什么时候来,什么时候走
- 点开一块浮层:同一个头,同一个框
- 引用拖、@、悬停、发出去
- 长行折行,缩进两格;能关掉
- 交回来的那一轮第一行就是它
- 插件同一套,默认三行
- 还没设计的原型里没画的,做之前另定
- 试过、换掉的每一处换过什么,为什么
- 参考了谁同类项目借了什么、没借什么
- 落到代码里改哪些、用哪些词、等后端什么
- 这一版不做的和为什么
原型是一段写好的会话:六轮,你发了四轮,后台工作交回来开了两轮。右上角选它停在第几轮。
打开这个状态
从第 5 轮开始播
| 轮 | 谁开的 | 这一轮里 | 看得到的设计 |
|---|---|---|---|
| 1 | 你 | 问滑块为什么被输入框盖住。它读了两个文件,在后台起了 dev:web。 | 一轮的四种时刻;做完折成一行。 |
| 2 | 你 | 要去掉「正在工作」和工具组的滚动。它起了 dev server,测试挂了又改好,前台派了一个子 agent 找测试,最后派两个子 agent 去后台。 | 在跑的那一步;退出 1;前面还有 N 步;前台子 agent 的框;派出去的三行。 |
| 3 | 你 | 要再起一个工作流审一遍、在后台跑浏览器测试、部署到 staging。三件都放后台。 | 工作流、插件;六件一起跑,小块排成两行。 |
| 4 | 交回来 | 浏览器测试失败,「审查测试的改动」做完,两件一起交回来。 | 交回来的那一轮开头两行;失败的一打开就是原因。 |
| 5 | 你 | 「改吧」,消息里带着 dev server 和工作流两个引用。改完要装 WebKit,先问你。 | 引用留着发送时的样子;等你的确认,允许和拒绝各走一条路。 |
| 6 | 交回来 | 「列出对话里还在自己封顶的框」做完。 | 结束的小块什么时候走。 |
| 怎么操作 | 会怎样 |
|---|---|
| 停着的时候 | 什么都能点:行、小块、浮层、拉框、拖、@、悬停、双击。在跑的时间一直在走,dev server 隔几秒打一行。 |
| 播到第 5 轮的提问 | 停下来等你。点允许,它装好 WebKit 再跑一遍;点拒绝,它不装,回答里告诉你以后怎么跑。 |
| 播的时候往上翻 | 「回到最新」写着正在做的那一步,点一下回到最新。 |
| 自己发一条消息 | 它读你引用的工作回你;右上角写「停在第 6 轮之后」。 |
| 深色 | 跟着系统;地址后面加 ?theme=dark 也行。 |
右上角那个开关只是原型用来播的,不进产品。拉过的框高、长行折行的开关记在这个浏览器里。
名字里的三件事,就是这次设计的三条原则。
| 名字里的 | 意思 | 落到界面上 |
|---|---|---|
| Buffer,缓冲 | agent 快,人慢。session 替你缓冲掉它的快,你按自己的节奏看。 | 跑的时候只露最近三步,做完折成一行。输入框上面那一排也是缓冲:只放在跑的和结束了还没看的,看过就走。 |
| Buff in,加进来 | 每一轮给你带回点东西,你也能把东西加进下一轮。 | 一轮结束写清改了哪些文件。后台工作拖进消息就是引用,给下一轮加料。 |
| Puffin,海鹦 | 嘴里能横叼一排小鱼;它的世界是水和鱼。 | 输入框上面一排小块,就是嘴里那排鱼。想是水泡,做是鱼群,等是水波。不画鸟。 |
不变的:颜色、字号档、圆角、你的气泡都照 buffin 现在的。输入框本身照 composer 的方案;引用的形状用的也是它的配方,这份只定引用的颜色和它能做什么。
一轮只有四种时刻:想、做、等你、完成。最后一行永远是「现在」。
打开这个状态
打开这个状态
打开这个状态
打开这个状态
四条规矩
| 规矩 | 意思 | 替掉的是 |
|---|---|---|
| 一种行 | 读、搜、改、跑、想、派出去的 agent,都是同一种行:图标、动词、对象、结果。整行点开,名字换行不截断。动词在跑的时候和做完以后是同一个词,状态只看图标和结果。 | 「5 tools · done」「正在运行命令」「已运行命令」 |
| 只框内容 | 只有输出、diff、思考这类内容有一块底色:没有边框、没有标题,封顶自己滚,打开先看结尾。过程、分组都不画框。命令写在行上,底色里只放输出。 | 带边框、带标题的 Bash 卡片;工具组的框;审批的黄色卡片 |
| 话分两种 | 它路上说的话和答案一样大,淡一档(ink-body)。答案是一轮里最黑的字。刚说出口的那一句先是全黑,下一步开始时再淡下去。 | 过程里的话和答案一个样 |
| 最后一行是现在 | 想的时候是水泡「思考中」,做的时候是在跑的那一步,等你的时候是水波「等待你的确认」。一轮里只有这一行在动。 | 末尾的「●」;写死的「Thinking…」;每个在跑的工具各自一个转圈 |
前台的子 agent 也是一行。跑的时候它的框就地打开,一步一步长出来,停在最新一步;做完收成「子 agent · 5 个动作 · 38s」,点开先看到答复。
打开这个状态
往上翻的时候
一轮在跑时,「回到最新」长成一枚胶囊,写着正在做的那一步和用了多久;在等你时换成水波和等待色。没在跑时还是圆按钮。
巧思三种动效都借自海鹦的世界:想是水泡,做是鱼群,等是水波。鱼群细看是三条沙鳗在绕圈,就是海鹦一嘴叼回来的那种鱼。
对话里最多两层滚动:对话一层,装内容的框一层。框能往下拉高,宽度不动。
| 什么 | 多高 | 怎么滚 |
|---|---|---|
| 对话 | 整个会话 | 自己滚。滑块停在输入框上沿,不落进输入框那一段,也不跟着底部淡出一起淡。 |
| 装东西的:过程、工具组、工作流 | 不封顶,有多少摆多少 | 不自己滚,跟着对话滚。 |
| 装内容的:输出、diff、代码、思考、子 agent | 封顶:输出 140px,diff 和代码 320px,思考和子 agent 160px | 自己滚。哪一边还藏着内容,哪一边就淡出,淡的深度就是藏着的那么多,最多 32px。滚到头,滚轮接着滚对话。 |
往下拉框的下沿。宽度不动;最矮三行,最高到对话区放得下为止。拉到输入框边上,对话跟着往上滚。停在结尾的框,拉的时候还停在结尾。拉到全部放下,上下都不再淡出。双击把手回到默认;键盘 ↑↓ 一次 18px,Home、End 到头。
打开这个状态
打开先看结尾。在跑的停在最新一行,做完的停在答复的开头;经过在上面。滚到框顶,更早的输出自己接着载入,一次 40 行,正在看的那一行不动,一直能翻到第一行。
打开这个状态
失败的停在原因。浏览器测试一打开,先看到「Failed Tests 1」和哪一条断言没过;上面是跑过的每个文件。空行照样占一行。
打开这个状态
| 拉过的高度 | 怎么记 |
|---|---|
| 记谁 | 松手就记住这一个框。想拉高的往往只是其中几个,所以不按种类一起改。 |
| 记在哪 | 这台设备上。daemon 重启、app 重开都还在,换一台设备不在。按 daemon 分开记,只留最近拉过的 50 个。 |
| 同一件工作 | 对话里那一行、派出它的那一步、交回来那一轮的第一行、浮层、悬停卡片,打开的是同一个框,拉过的高度共用。浮在上面的框往上长。 |
巧思一件工作只有一个框:在对话里拉高了,点开小块、悬停引用,看到的也是这么高,停在同一处。
后台工作有四种,在八个地方露面;到哪儿都是同一个色块、同一个框。
| 种类 | 图标 | 颜色 | 框里是什么 |
|---|---|---|---|
| 后台命令 | 终端 | 青绿 | 它的输出,停在最新一行。 |
| 子 agent | 机器人 | 品红 | 提问、每一步和它路上说的话、答复。做完停在答复的开头,往上滚是经过。 |
| 工作流 | 工作流 | 橄榄绿 | 先是简报,然后每个 agent 一行,写着做了几个动作、用了多久;agent 点开是和子 agent 一样的框。 |
| 插件 | 拼图;插件有自己的图标就用它的 | 粉 | 插件没画自己的框时,默认三行:标题、状态、结果。 |
| 地方 | 什么时候有 | 长什么样 | 能做什么 |
|---|---|---|---|
| 派出它的那一步 | 一直在,在过程里 | 动词和对象,后面写它现在怎样:在后台运行、失败、已停止、已完成 · 5 个动作 | 点开是它的框 |
| 那一轮里的一行 | 一直在,在过程下面 | 行首记号、色块(图标和全名)、时间或结局 | 点开是它的框;在跑时悬停出 ■;色块能拖进输入框 |
| 输入框上面的小块 | 在跑的,和结束了还没看的 | 图标、短名、时间或结局 | 点开浮层;■ 停;× 关;拖进输入框 |
| 浮层 | 点一块时 | 头是同一个记号和色块,下面是它的框 | 定位;■ 停或 × 关;框能滚、能往上拉;头能拖 |
| 交回来的那一轮 | 它交回来时 | 这一轮的第一行就是它 | 点开先看到答复 |
| 输入框和消息里的引用 | 拖进来、@ 进来以后 | 整块带它的颜色 | 单击在对话里找到它;双击变回文字,或打开浮窗 |
| 悬停卡片和浮窗 | 指针停在引用上;双击消息里的引用 | 名字;种类和状态;正文 | 能滚、能往上拉;消息里的写「发送时」 |
| @ 菜单 | 打 @ 时 | 「后台任务」一组 | 回车放进输入框 |
那一轮里的三行。第 3 轮派出去的三件,在过程下面各占一行:在跑的色块带颜色,行首是它颜色的水波,后面是走着的时间;失败的变灰,行首是红叉。名字长就在块里换行,不截断。
打开这个状态
工作流点开。先是简报,然后三个 agent 各一行:做完的是机器人,还在跑的挂鱼群,后面写做了几个动作。agent 点开是和子 agent 一样的框,停在答复的开头。在对话里不再套一层框,跟着对话滚。
打开这个状态
从小块点开工作流,几个 agent 在浮层里的一个框中滚;agent 一样能就地点开。
打开这个状态
巧思到哪儿都是同一个色块:对话里那一行、浮层的头、拖着走的、输入框里的、消息里的,认一次就都认得。
四个颜色放在产品现有颜色的空档里:命令青绿,子 agent 品红,工作流橄榄绿,插件粉。
产品里已经有几种颜色是有意思的:失败是红,发送和斜杠命令是橙,等待是黄,进行中和成功是绿;输入框里的引用又占了天蓝、靛青、紫。新颜色挨着它们,就会被读成那个意思,比如绿色的一块像是「成功了」。
把色相排成一圈,大的空档只有三个。四种放进去,插件和子 agent 挤一个:插件最少见,两个一个偏紫一个偏红,图标也不一样。
| 地方 | 在跑 | 结束了 |
|---|---|---|
| 对话里那一行、浮层的头 | 色块带颜色;行首的水波也是这个颜色 | 色块变灰,就是今天的灰色小块;行首换成对勾、叉或方块 |
| 输入框上面的小块 | 只有图标带颜色 | 图标变灰 |
| 输入框里、消息里、拖着走的 | 一直整块带颜色。引用说的是「哪一件」,不是「还在跑」。 | |
| 框里面 | 不上色。 | |
配方和输入框里的引用同一套:底色混 8%(深色 10%),边混 15%(深色 20%),字在正文色里混 30%(深色 17%)。深色各自提亮过:命令 67 211 204,子 agent 237 127 208,工作流 190 204 77,插件 250 137 165。
巧思对话里和小块上,带颜色的就是还在跑的:结束了就灰。一眼扫过去,不用读字就知道还有几件在跑。
巧思buffin 的黑、白和发送键的橙红,本来就是海鹦的羽色和嘴。橙红只给能点的东西,四个颜色都绕开它。
行首的记号说它怎样了:在跑是水波,做完是对勾,失败是红叉,停了是方块。
| 状态 | 行首 | 色块 | 后面写 |
|---|---|---|---|
| 在跑 | 它颜色的水波 | 带颜色 | 走着的时间;指针移上去,后面出现 ■ |
| 做完 | 灰对勾 | 灰 | 已完成;子 agent 再加「· 5 个动作」 |
| 失败 | 红叉 | 灰 | 失败 |
| 你停的 | 灰方块 | 灰 | 已停止 |
对勾不上色:粉色、品红的对勾挨着红叉,会被看成失败。
三种动效,只表示状态
| 动效 | 什么时候 | 颜色 |
|---|---|---|
| 水泡 | 它在想 | 正文色 |
| 鱼群 | 它在做的那一步;工作流里在跑的 agent | 正文色 |
| 水波 | 在等:等一件后台工作回来,或者等你 | 等它用种类的颜色,等你用等待色 |
巧思在跑的后台工作也是一种等:这一轮在等它回来。所以它也挂水波,颜色说在等谁:种类的颜色是等它,等待色是等你。
巧思一屏里的水波踩同一拍:页面只有一个时钟,重画以后也接着这一拍,十件在跑也不会各闪各的。打开减少动态效果时,停在一滴加一圈。
输入框上面那一排只放两种:在跑的,和结束了你还没看的。看过就走,不越积越多。
从上到下:在跑的图标带颜色、时间在走,结束的变灰、× 一直在;指针移上去,时间换成 ■,没有 ×;按 ■ 停了,变灰写「已停止」,这时才有 ×。
打开这个状态
| 结束的什么时候走 | 怎么走 |
|---|---|
| 点 × | 马上走。 |
| 看过了 | 点开浮层看过,浮层一关就走;点开它在对话里那一行也算看过。 |
| 你下一轮说完 | 你发出一条消息,这一轮答完时,在这一轮开始以前就结束了的都走;这一轮里才结束的,留到下一次。交回来开的那一轮不算。 |
| 不按时间收 | 没看过的不会自己不见。 |
第 5 轮答完时:「审查测试的改动」和浏览器测试在这一轮开始以前就结束了,走了;「列出封顶的框」和「部署到 staging」在这一轮里才结束,灰着留到下一次。
打开这个状态
第 3 轮做完,六件一起在跑。一行放不下就排到第二行,全部摆出来。对话的底跟着往上让,最后一行不会被挡住。
打开这个状态
巧思这一排就是 Buffer:在跑的、还没看的在这儿等你;你看过,它就让出位置。
点一块,它在小块上面浮出来:头是同一个记号和色块,下面是对话里那个框。
点开。右边是「在对话中定位」,和 ■ 停止(在跑)或 × 关闭(结束了)。再点一下、点别处、按 Esc 收起。
打开这个状态
往上拉。框能滚;上沿是把手,往上拉,最高到会话顶上。拉过的高度和对话里那个框共用。头上的色块能直接拖进输入框。
打开这个状态
把后台工作放进消息:拖进去,或者打 @。进去就是一个带颜色的引用,发出去还留着那一刻的样子。
拖。从小块、对话里那一行的色块、浮层的头,按住往输入框拖。输入框描一圈边,一条竖线标出落点;松手就放在那儿,原处不动。拖到别处,什么也不发生。
进去以后整块带它的颜色,图标是它自己的,名字是全名。同一件可以引用两次。
打开这个状态
打开这个状态
打开这个状态
发出去以后,消息里留着引用。悬停写「发送时」,给的是发送那一刻的状态、用时和最后几行,正好有那条警告,也就是 agent 读到的那一份。
打开这个状态
双击消息里的引用,浮窗里是发送时的样子:那时工作流的三个 agent 做完两个,第三个的用时停在发送那一刻。能滚、能拉。
打开这个状态
| 对引用做什么 | 会怎样 |
|---|---|
| 单击 | 在对话里找到它那一行,打开。 |
| 双击输入框里的 | 变回普通文字。 |
| 双击消息里的 | 打开浮窗,看发送时的全文。 |
| 指针停在上面 | 悬停卡片。输入框里的给现在的样子,消息里的给发送时的样子。 |
巧思Buff in:把后台工作拖进消息,就是给下一轮加 buff。它带着发送时的样子进去,agent 读到的就是你那一刻看到的。
巧思拖着走的就是落下去的:指针下面那一块,已经是它进了输入框以后的样子。
命令输出默认折行,折下去的部分缩进两格;「长行折行」能关掉。
折行。每个写出来的行从边上开始,折下去的部分缩进两格;行首本来有空格的,照空格再缩。指针在框上时,右上角出现「长行折行」和「复制输出」。
关掉折行,回到今天的左右拉,覆盖率这类按列对齐的表就对齐了。这台设备上所有命令输出一起记。
打开这个状态
词和按钮都是产品现成的:代码块的条上就有「长行折行」;按钮和「复制输出」一样是 18px、图标 12px。「复制输出」给的是命令写出来的原样,不带折行。
巧思折下去缩进两格:一眼看出哪几行原本是一行,复制出来还是原样。
后台工作交回来,自己开一轮;这一轮的第一行就是它。
第一行就是它。不加分隔线,也不写「后台任务汇报」:那一行本身就说明了是谁回来了。两件一起交回来,开头就是两行:失败的浏览器测试,做完的「审查测试的改动」。点开先看到答复,提问和每一步在上面。
它和派出它那一轮里的那一行,打开的是同一个框。
打开这个状态
派出它的那一步跟着它变:还在跑写「在后台运行」,失败写「失败」,停了写「已停止」,做完写「已完成 · 5 个动作」。
打开这个状态
插件的后台工作和另外三种走同一套;它没画自己的框时,框里是默认的三行。
部署插件的「部署到 staging」。同一种行、同一种小块、同样能引用。颜色是粉;图标是拼图,插件有自己的图标就用它的。框里默认三行:标题、状态、结果。
打开这个状态
框里换成插件自己画的,是另一件事:分法另定,已作为决策点写进后台工作的后端方案。
还没设计的:原型里没画,或者只画了最简单的样子。做之前另定。
| 还没设计的 | 现在原型里 |
|---|---|
| 打断正在跑的一轮 | 播的时候发送键不能用,没有 ■。打断以后这一轮折成什么样、跑到一半的那一步写什么,没画。打断不停后台工作,这一条写在后端方案里。 |
| 等你回答的提问 | 只画了「等待你的确认」这一种。agent 问你选哪个、要你填字的提问放在哪、长什么样,没画。 |
| 工作流做完 | 原型里的工作流一直没做完。做完时整体的答复放哪、交回来那一轮的第一行怎么写,没画。 |
| 插件的工作做完 | 部署做完只是变灰,没有交回来开一轮。插件的工作要不要交回来,没定。 |
| 插件自己的界面 | 框里是默认三行。换成插件自己画的,分法另定。 |
| 失败了重跑 | 失败的后台命令没有重跑的按钮,要让 agent 再跑一遍。 |
| 上下文压缩 | 压缩以后,前面那些行、小块和发出去的引用怎么显示,没画。 |
| 重新打开旧会话 | 旧会话里结束了的后台工作算不算看过,输入框上面那一排要不要出现,没定。 |
| 窄窗口 | 只在 1280 到 1920 宽看过。更窄时那一排、浮层、悬停卡片怎么收,没画。 |
| 多个会话 | 标签页和会话列表上,要不要标出「有后台工作在跑」「有交回来的」,没画。 |
| 通知 | 窗口不在前台时后台工作交回来,要不要发系统通知,没定。 |
| 读屏 | 记号、水波、胶囊给读屏软件念的字,没写。 |
试过、换掉的:现在的每一处,大多换过一两次。
| 试过 | 换成 | 为什么 |
|---|---|---|
| 详情放在侧栏 | 在被点的地方就地展开 | 视线和鼠标都在中间一栏;侧栏要挪到屏幕另一边。 |
| 状态栏角落放「后台」入口 | 输入框正上方一排小块 | 状态栏离得远、字又小,等于看不见。 |
| 小块前面再放一个「后台」 | 删掉;小块本身就是列表,点一块就地浮出 | 和小块说的是同一件事。 |
| 点「查看过程」才能看 | 整行就是开关 | 多一步。 |
| 「载入更早的」链接 | 滚到头自动载入 | 多一步;滚到头就是想看更早的。 |
| 汇报前加一条分隔线 | 第一行就是交回来的那一项 | 那一行本身就说明了。 |
| 过程、工具组也自己滚,一共三层 | 只有装内容的框自己滚,最多两层 | 滚动套滚动,滚轮常被里面接住。 |
| 一类框共用一个拉过的高度 | 各框记各的 | 想拉高的往往只是其中几个。 |
| 淡出按滚动的百分比算 | 按藏着的像素算,最多 32px | 只能滚几像素的框,拉到底顶上还整条淡着。 |
| 只给种类名上色 | 色块:图标加全名 | 字上色不显眼;「后台命令」这类字也多余。 |
| 拖进输入框才上色 | 四种各一色,到处一致 | 拖之前和拖进去,看到的该是同一个东西。 |
| 绿色呼吸灯 | 种类色的水波 | 在跑的后台工作,也是这一轮在等它。 |
| 一行放不下时收成「还有 N 个」,点开再铺开 | 放不下就换行,全部摆出来 | 藏起来的要多点一下才看得到。 |
| 结束的小块一直留着,或闪一下就走 | 变灰带 ×;看过、关掉,或下一轮答完就走 | 不越积越多,也不会没看到就没了。 |
| 停了写「已中断」「已暂停」 | 已停止 | 停了不能接着跑,「暂停」会误导;「已中断」是被打断,不是你停的。 |
| 长行只能左右拉 | 默认折行,一个按钮关掉 | 读日志要折,看表格要对齐。 |
| 插件用青蓝 | 粉 | 和文件的天蓝几乎一样,输入框里又最常出现文件。 |
同类项目怎么做,我们借了什么、没借什么。
| 项目 | 怎么做 | 我们 |
|---|---|---|
| paseo | 在跑是蓝色的环,一段弧在转,全屏同一个相位。输入框上面的药丸只放子 agent,后台命令不进。结束的一直留着,要手动归档。交回来的那一轮,开头放一行收起的原文。 | 借了同一个相位。四种都进那一排;结束的看过就走。 |
| orca | 黄色小环。输入框正上方那一条,有东西在跑才出现,最后一个跑完整条清掉。 | 借了「放在输入框正上方」。结束了没看过的不清。 |
| t3code | 静止的点,故意不动;列表一直留,最多 100 个。 | 只在跑的时候动,结束了就静。 |
| superset | 在跑是静止的琥珀点;水波只给「要你批准」和失败。 | 借了「水波是等」;等你的用等待色。 |
| happy | 只数在跑的,结束就走。 | 结束的留到你看过。 |
| Codex | 一轮结束,过程折成一行,只写用了多久。 | 借了:「已完成 · 用时」。 |
| 几家都一样的 | 浮层固定最高加滚动:paseo 440px,orca 256px,superset 240px,没有能拉高的。 | 我们的浮层和悬停卡片能往上拉,高度和对话里那个框共用。 |
落到代码里:改哪些、用哪些词、等后端什么。
改的大多在 apps/desktop/src/renderer/features/session/components/ 和三份 locale 里,只改画法;读数据的那一层不动。
| 地方 | 改什么 |
|---|---|
SessionThread.tsx | 一轮的骨架:过程那一行、最近三步、最后一行是现在。交回来的那一轮,第一行是那件工作。 |
ToolRowBase、tool-row.css | 一种行:图标、动词、对象、结果;在跑的那一步挂鱼群。 |
ToolGroup.tsx | 拆掉这一层:每个工具就是一行,不再有「N tools」。 |
BashTool、EditTool、ToolOutput | 去掉卡片的边框和标题,内容进底色。Bash 输出默认折行,加「长行折行」(今天靠 preserveColumns 左右拉)。 |
ReasoningBlock.tsx | ✨ 换成水泡。字照旧:思考中、思考了 N。 |
ApprovalTool、AskUserTool | 不要黄色卡片,放在这一轮末尾,挂水波和等待色;按钮照旧。 |
process-summary.ts | 过程那一行只写「正在工作 / 已完成 · 用时」。 |
SessionContent.tsx | 「回到最新」在跑时带上正在做的事。 |
BackgroundTaskActions | 换成新的一行:记号、色块、时间或结局、■;点开是它的框。 |
WorkflowEngineCard | 在 features/workflow 里。工作流换成同一种行;点开是简报和每个 agent 一行,agent 点开照 WorkflowNodeDetail 的提问、每一步、答复。 |
ProviderTurnDivider | 交回来的那一轮不再画分隔线,由第一行说明。 |
styles/index.css | scroll-fade-y 的淡出按藏着的像素算,上下两边各自最多 32px。今天按滚动的百分比算,只能滚几像素的框拉到底,顶上还整条淡着。 |
| 新写的 | 输入框上面那一排、点开的浮层、悬停卡片、浮窗、@ 菜单里「后台任务」一组。浮层照现有浮层(radius-overlay、shadow-floating)。 |
| 拉框 | 拖动照 use-resize-separator.ts;高度照 runtime/git-changes/view-store.ts 按 daemon 分开存。 |
| 不改 | fold(packages/session-fold)和数据流;session 以外的 Spinner;composer 内部。 |
用词:新加的只有八处
| 新加的词 | 用在哪 |
|---|---|
| 前面还有 N 步 | 跑的时候,过程里收起的更早几步 |
| 在后台运行 | 派出它的那一步,工作还在跑时 |
| 发送时 | 消息里的引用:悬停卡片、浮窗 |
| 输入内容以搜索文件和后台任务 | @ 菜单的底栏 |
| 正在载入更早的输出 | 滚到框顶时 |
| 后台命令、子 agent、工作流、插件 | 悬停卡片第二行的种类名 |
| 在对话中定位 | 浮层里的按钮 |
| 拖动调整高度,双击恢复 | 框的把手 |
别的都是 locale 里现成的:
- 思考中
- session.reasoning.thinking
- 思考了 N
- session.reasoning.thoughtFor
- 正在工作
- session.process.running
- 已完成
- session.process.completed
- 用时 N
- session.process.duration
- 等待你的确认
- session.process.waitingApproval
- 修改 N 个文件
- session.process.editedFiles
- N 个动作
- session.backgroundTask.actionCount
- 后台任务
- session.backgroundTask.label
- 失败
- session.backgroundTask.status.failed
- 已停止
- session.bash.stopped
- 复制输出
- session.bash.copyOutput
- 已复制输出
- session.bash.copiedOutput
- 长行折行
- markdown.code.wrap
- 运行中
- workbench.activity.running
- 停止
- workflow.panel.stop
- 关闭
- common.close
- 简报
- workflow.node.briefing
- 提问、答复
- workflow.node.prompt / answer
- 任务空间、项目空间
- fileTree.section.*
- 添加到消息
- session.composer.attach
- 滚动到最新消息
- session.scrollToLatest
- 工作区写入
- session.composer.permissionTier.workspaceWrite
要后端给的
| 要什么 | 用在哪 |
|---|---|
| 工作记录 | 每件后台工作是什么、谁派的、现在怎样、怎么结束的。行、小块、浮层、@ 菜单、交回来那一轮的第一行都靠它。 |
| 正文读取 | 框里的内容。命令输出从后往前分段取,才能打开停在最新、滚到头再载入;子 agent 和工作流里每个 agent 要有自己的正文。 |
| 变化信号 | 状态和正文一变就推过来:在跑的框跟着长,时间和结局跟着变。 |
| 单独停止 | ■ 只停这一件;打断这一轮,不停后台的工作。 |
| 发送时的样子 | 引用发出去那一刻的状态、用时、输出到哪一行、做到哪一步,随消息记下。 |
前四样写在后台工作的后端方案里(工作记录、正文、变化信号各一节,停止在打断那一节)。前端接线要等它们落地。
这一版不做的。
| 不做 | 为什么 |
|---|---|
| 工作流展开列出阶段 | 和这些事无关,之后单独补。 |
| 前台的步骤拖进消息 | 它们的结果本来就在这一轮的上下文里。 |
| 输入框里挪动、删除引用 | 编辑器本身的事。 |
| 定时任务、自主行动开的那一轮怎么标 | 不是后台工作交回来的,不在这次范围。 |