Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#3,518 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
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時間 37分
マージ済み PR(30日)
244

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

GCWing/OpenBitFun のほかの issue

GCWing/OpenBitFun の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。