[Feature]: 会话标签页右键增加"历史会话"快速切换
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 57/100
- Issue 類型
- 功能
- 描述清晰度
- 描述清楚
- 活躍度
- 活躍
- 技術堆疊
- react, rust, typescript
研究方向
Start in src/web-ui/src/app/components/panels/content-canvas/tab-bar/Tab.tsx around lines 175–211, then read the session listing API in src/apps/desktop/src/api/session_api.rs around line 445 and check how SessionMetadata identifies an assistant. Add the history menu only for agent tabs, load and filter that assistant’s sessions, and show a scrollable list ordered by recency. Done when selecting an entry switches sessions and updates the tab title, with large lists remaining responsive.
由索引模型根據 Issue 內容生成。
描述
Problem / opportunity
顶部标签栏的会话页右键目前只有「关闭」和「取消固定」。同时,同一个助理只保留一个会话标签页——打开另一个会话会把当前会话挤走,想切回之前的会话,必须退出标签栏、进入该助理的详情页、再重新选择那条对话。
这条路径在"多会话对照"的工作流里成本很高。典型场景:一边在一个会话里审代码或跑调查,一边需要回到几分钟前的另一条会话核对结论,当前必须走「标签栏 → 助理详情页 → 找会话 → 点开」,而不是在标签栏直接跳转。结果是标签栏看起来支持多会话,实际被"挤走"行为抵消了。
Proposed behavior
在会话标签页的右键菜单中增加一项「历史会话」:
点击后在标签附近展开一个可滚动的浮层,列出当前助理的历史会话(标题 + 时间,最近在前)
点击某条即切换到该会话,行为与从助理详情页打开一致,标签标题同步更新
该菜单项只对会话页显示,不出现在文件、代码编辑器、预览等非会话标签页上
浮层支持滚动;会话数量多时不能卡顿
Product surface
Desktop app
Details, examples, or constraints
实现位置(已对照 1.0.7 源码核对)
菜单项定义:src/web-ui/src/app/components/panels/content-canvas/tab-bar/Tab.tsx:175-211,在 tab-toggle-pin 项之后追加一项即可;仅当 mode === 'agent' 时显示(判据参考同文件 :129,非会话页按 tab.content.type 区分,见 :240/:253/:315)
数据无需新增后端命令:
list_persisted_sessions_page(src/apps/desktop/src/api/session_api.rs:445)已提供分页列表
search_session_content(同文件 :339)已提供内容检索,后续做浮层内搜索可直接接
需要先确认的约束
list_persisted_sessions 目前按工作区过滤(入参为 workspace_id / workspace_path / remote_connection_id / remote_ssh_host),不含助理维度。建议前端用 SessionMetadata 自带的助理标识做筛选,避免改动后端;仅当会话规模大到分页也吃力时,再考虑给请求加 agent_id。
验收标准
右键会话标签页,菜单出现「历史会话」;右键文件/编辑器/预览类标签页,不出现该项
浮层列出当前助理的历史会话,含标题与时间,最近在前,可滚动
点击条目后切换会话成功,标签标题随之更新
助理有大量会话时浮层仍可正常滚动与点击(分页或虚拟滚动,不冻结)
现有的标签关闭、固定、淘汰行为无回归
考虑过的替代方案
允许同一助理同时保留多个会话标签页:改动更重,与现有 canvas 淘汰模型(canvasStore.ts:200 的 firstUnpinnedIndex)以及"一个助理一个会话"的心智冲突,不作为本需求的目标
在标签栏常驻一个下拉框:长期占用横向空间;右键入口更轻,也够用
风险与兼容性
纯前端改动,不涉及数据模型与协议,无兼容性风险。有一个相关问题建议顺带确认(不阻塞本需求):手动 pin 的会话标签页是否应当豁免被挤走。
可选增强(二期)
浮层内支持按标题/内容搜索;浮层内直接重命名、归档或删除会话。
- 主要語言
- Rust
- 星號
- 2.3k
- 分支
- 236
- 平均合併
- 7 小時 47 分鐘
- 30 天內合併 PR
- 236
環境準備
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
GCWing/OpenBitFun 的其他 Issue
-
[Feature]: 模型服务表单缺少「图像生成」分类入口 —— 后端已支持 default_models.image_generation可能已有人在做 @skyfireitdiy 於 8 天前認領。 未關閉
難度 2/5 半天 新手友好度 74/100
GCWing/OpenBitFun#3279 · 1 個 reaction ·
維護者通常 1 天內回覆
-
bug
難度 2/5 1-3 小時 新手友好度 72/100
GCWing/OpenBitFun#2363 ·
維護者通常 1 天內回覆
-
question
難度 1/5 1 小時以內 新手友好度 78/100
GCWing/OpenBitFun#2340 ·
維護者通常 1 天內回覆
-
難度 5/5 一週以上 新手友好度 35/100
GCWing/OpenBitFun#3537 ·
維護者通常 1 天內回覆
-
難度 4/5 3-5 天 新手友好度 45/100
GCWing/OpenBitFun#3530 ·
維護者通常 1 天內回覆
查看 GCWing/OpenBitFun 的全部 Issue
相似的 Issue
-
checkpoint/verify/rebuild_indexes on a thread holding a WriteTransaction deadlock instead of INT-001未關閉bug known-issue
難度 2/5 1-3 小時 新手友好度 74/100
project-minigraf/minigraf#734 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 70/100
-
難度 1/5 1 小時以內 新手友好度 88/100
維護者通常 4 天內回覆
-
難度 2/5 1-3 小時 新手友好度 70/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 64/100
Nimblesite/lspkit#26 ·
維護者通常 1 天內回覆