ARTICLE / 开源项目
补充侧边栏批量归档交互特性的研究
PR 地址:NousResearch/hermes-agent#68054 · 修整侧边栏点击语义:ctrl 固定、shift 多选、一次归档一批
研究摘要
Hermes 桌面端侧边栏的会话列表里,shift+click 一直被用作"固定会话"的快捷操作。对经常批量清理会话的用户来说,这个键位设计留下了缺口:想归档掉十几个旧会话,只能一个一个点进菜单操作,固定与批量清理两种诉求挤在同一个修饰键上,语义互相打架。
本 PR 重排了侧边栏会话行的点击语义:ctrl+click 接管"固定",shift+click 改为切换多选,配合 Escape 清除、底部批量归档栏,一次操作可以选中任意数量的会话并整体归档。改动覆盖 5 个桌面端源文件与 4 个语言包(+129/-16),cmd+click 新标签页、cmd+shift+click 新窗口、单击恢复会话等既有语义全部保持不变。PR body 附有 11 项手动验证清单但未标注完成状态。
一、问题背景:一个修饰键承载两种互斥诉求
1.1 原交互的键位分配
原侧边栏交互中:
- 单击:恢复会话;
cmd+click:在新标签页打开;cmd+shift+click:在新窗口打开;shift+click:固定(pin)会话。
1.2 三个痛点
一是固定与批量操作的语义冲突。shift+click 在主流桌面软件里是标准的"范围多选"手势,这里却用来做固定,用户从其他工具迁移过来时肌肉记忆直接失效;同时,固定是低频操作,多选是高频操作,高频诉求让位给了低频诉求。
二是批量归档路径漫长。会话列表越积越长,清理时只能逐个处理,没有"选中一批 → 一次归档"的出口,几十个旧会话的清理成本被线性放大。
三是无选中反馈与取消通道。即便选中了内容,也没有明确的高亮、数量提示与一键取消,误操作只能靠手动恢复。
二、特性设计:键位重排 + 多选状态 + 批量归档栏
2.1 点击语义重排
session-row.tsx 中的点击处理逻辑调整为:
| 手势 | 行为 |
|---|---|
| 单击 | 恢复会话(不变) |
cmd+click | 新标签页打开(不变) |
cmd+shift+click | 新窗口打开(不变) |
ctrl+click(原 shift+click) | 固定/取消固定会话 |
shift+click(新) | 切换多选状态 |
Escape | 清除全部选中 |
固定操作改为 ctrl+click(macOS 上即 control+click),把 shift+click 释放给范围多选这一通用语义。
2.2 多选视觉与状态
index.tsx 引入多选状态管理:被选中的行显示 accent 高亮环、背景色与勾选图标;对已选中的行再次 shift+click 则取消选中。选中状态贯穿虚拟化列表(virtual-session-list.tsx)与会话分区(sessions-section.tsx),属性逐层透传,不破坏列表的虚拟滚动性能路径。
2.3 批量归档栏
当选中数量 ≥ 1 时,Recents 区域底部出现批量归档操作栏,显示当前选中数量,提供两个动作:Archive(归档全部选中会话)与 Clear(清除选中状态)。Escape 键在任意时刻清空选择,误选可一键撤回。
2.4 本地化同步
交互语义变化同步到 4 个语言包(英文、简体中文、繁体中文、日文),shiftClickHint 提示文案随键位变化更新,避免界面提示与实际手势脱节。
2.5 操作栏的出现条件与反馈
批量归档栏只在选中数量 ≥ 1 时出现,数量归零(全部取消选中)后操作栏随之消失,界面不会残留一个没有作用的空操作区。选中状态与操作栏的出现条件绑定,视觉上通过 accent 高亮环、背景色与勾选图标三重反馈强化"当前处于多选模式"的感知,降低误操作概率。清空通道有两条:Clear 按钮显式清除,Escape 键快捷清除,覆盖鼠标与键盘两种操作习惯。
三、实测结果
PR body 附有 11 项手动验证清单(ctrl+click 固定、shift+click 选中高亮、多行连选、反选、批量归档栏出现与计数、Archive 归档全部、Clear 清除、Escape 清除、cmd+click 新标签页、cmd+shift+click 新窗口、单击恢复会话),但 checkbox 均未勾选,无完成记录。以下为设计意图与预期效果:
- 预期效果一:
ctrl+click固定、shift+click多选,两个手势互不干扰,原有三组快捷键无回归; - 预期效果二:选中 ≥1 行时底部出现带计数的归档栏,Archive 一次性归档全部选中会话,Clear 与 Escape 均可清除选中;
- 预期效果三:虚拟化列表在多选状态下的滚动与渲染性能不劣化。
以上均为设计意图,实际交互效果需在桌面端构建后按清单逐项验证。
四、能力边界
- 桌面端专属:改动全部位于
apps/desktop,CLI / TUI / 网关端的会话管理不受影响; - 键位平台差异:
ctrl+click在 macOS 与 Windows 上键位相同但触控板/鼠标习惯不同,触控板用户可能更习惯双指轻点手势,本特性未覆盖触控板手势映射; - 选择是会话级的:批量归档作用于整个会话,不支持会话内部分内容的批量操作;
- 无自动化测试记录:PR 以手动验证清单为主,未提供组件级自动化测试数据,回归保障依赖人工逐项确认。
五、PR 信息
- PR 地址:https://github.com/NousResearch/hermes-agent/pull/68054
- 改动规模:+129 / -16,9 个文件(
session-row.tsx、index.tsx、sessions-section.tsx、virtual-session-list.tsx及 en/zh/zh-hant/ja 四个语言包等) - PR 状态:closed
- 提交时间:2026-07-20
本文记录 x7peeps 向 Hermes Agent 上游贡献的特性研究,所有数据来自 PR 实测记录。