Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

[Feature]: 会话标签页右键增加"历史会话"快速切换

未關閉
#3,518 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
57/100
Issue 類型
功能
描述清晰度
描述清楚
活躍度
活躍
技術堆疊
react, rust, typescript
領域
desktop, frontend

研究方向

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
Image

顶部标签栏的会话页右键目前只有「关闭」和「取消固定」。同时,同一个助理只保留一个会话标签页——打开另一个会话会把当前会话挤走,想切回之前的会话,必须退出标签栏、进入该助理的详情页、再重新选择那条对话。

这条路径在"多会话对照"的工作流里成本很高。典型场景:一边在一个会话里审代码或跑调查,一边需要回到几分钟前的另一条会话核对结论,当前必须走「标签栏 → 助理详情页 → 找会话 → 点开」,而不是在标签栏直接跳转。结果是标签栏看起来支持多会话,实际被"挤走"行为抵消了。

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

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

GCWing/OpenBitFun 的其他 Issue

查看 GCWing/OpenBitFun 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。