[Feature]: 会话标签页右键增加"历史会话"快速切换
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 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時間 37分
- マージ済み PR(30日)
- 244
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
GCWing/OpenBitFun のほかの issue
-
[Feature]: 模型服务表单缺少「图像生成」分类入口 —— 后端已支持 default_models.image_generation対応中かも @skyfireitdiy が 7 日前に担当しました。 オープン
難易度 2/5 半日 初心者へのやさしさ 74/100
GCWing/OpenBitFun#3279 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
GCWing/OpenBitFun#2363 ·
メンテナーはふだん 1 日以内に返信
-
question
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
GCWing/OpenBitFun#2340 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
GCWing/OpenBitFun#3519 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: 远程工作区徽标优化オープン
難易度 3/5 1〜2日 初心者へのやさしさ 56/100
GCWing/OpenBitFun#3517 ·
メンテナーはふだん 1 日以内に返信
GCWing/OpenBitFun の issue をすべて見る
似ている issue
-
good first issue help wanted r-feature
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
servo/rust-smallvec#792 ·
メンテナーはふだん 1 日以内に返信
-
A-Unicode C-bug P-low
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
rust-lang/rustfmt#7210 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
area:sim good first issue kind:feature
難易度 2/5 1〜3時間 初心者へのやさしさ 87/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
bitcoindevkit/bdk#2432 ·
メンテナーはふだん 3 日以内に返信