前言¶
在 DeepSeek Harness(DSH)Web 界面里,会话往往按工作区分组挂在左侧树形侧栏中。切换工作区或滚动列表时,要找回「刚才还在聊、但不在当前分组里」的会话,通常只能依赖记忆在工作区间来回找,或接受原生列表里没有统一的「最近活动」视图。
社区插件 dsh-recent-sessions(维护者 hotheat,仓库 hotheat/dsh-recent-sessions)在侧栏工作区树的底部追加一块「最近」列表:跨工作区收集有内容的会话,按最后活动时间倒序排列,并过滤空白、已归档及 subagent 会话。实现上参考了 ttmouse/dsh-recent 的 ModuleLoader、槽位与 portal 机制;原生 UI 契约以 DeepSeek Harness 源码为准。
这是什么¶
dsh-recent-sessions 是面向 DSH Web 的客户端插件(package.json 中 dsh.client.platform 为 web)。它在左侧工作区树的可识别分组结构下,通过 React portal 将「最近」区块挂到树容器末尾,与工作区列表共用滚动区域;在单列表、搜索模式或无法识别分组段时整块隐藏。
插件当前版本为 0.1.0,许可证 MIT,声明的 DSH 引擎要求为 >=0.2.1-rc.2。
核心功能¶
列表内容与排序¶
- 跨工作区汇总「有内容」的会话,按最后活动时间倒序。
- 过滤:空白会话、已归档会话、subagent 会话不出现。
- 同一时间的多条记录保留宿主侧栏里的原有顺序。
展示与交互¶
- 插件通过
sidebar.footer.action注册;从 owner props 读取wide(宽侧栏相关展示)。 - 展开侧栏时渲染「最近」;收起侧栏时整个区块卸载。
- 头部可折叠,折叠状态写入浏览器 localStorage 键
dsh-recent-sessions:collapsed。 - 首屏显示 10 条,点击「展开更多」每次再增加 10 条。
- 点击标题调用
ctx.uiWorkspace.openSession(id)打开对应会话。 - 状态指示复用原生
StateDot:运行中显示原生 spinner,等待响应为 warning 点,跑完未读为 done 点,其余不显示;读屏通过行按钮的aria-label播报;鼠标悬停时用原生 tooltip 显示「项目名 · 相对时间」。 - 标题优先用宿主的
title,缺失时用displayTitle;中英文跟随宿主 locale(默认中文);颜色跟随宿主主题 token。
挂载与边界¶
- 展开时以第一个工作区分组段的父节点定位树容器;portal 固定进插件自有的 host,host 挂在树容器最后。
- 工作区列表很长时,需要滚到底部才能看到「最近」。
- 只有检测到分组段但取不到父节点的异常结构时,才回退到 footer 内联显示,并使用限高的内部滚动。
- 过滤后没有会话时,整个区块隐藏。
- 插件只移动自己拥有的 host;观察器仅监听侧栏内子节点变化,通过
requestAnimationFrame合并重定位,卸载时取消待执行帧并移除 host。
安装与启用¶
Web 配置档下安装(命令来自仓库 README):
dsh plugin --profile web add github:hotheat/dsh-recent-sessions
浏览器端插件由 DSH 启动时载入内存;安装或修改插件后需要重启 dsh web,仅刷新页面不足以生效。
卸载:
dsh plugin --profile web remove dsh-recent-sessions
若需重置折叠偏好,可在浏览器中删除 localStorage 键 dsh-recent-sessions:collapsed。
典型用法¶
安装并重启 dsh web 后,打开 DSH Web,展开左侧侧栏并滚到工作区树底部(在有多工作区分组且存在符合条件的会话时),即可看到「最近」区块:
- 点击某条会话标题,直接在该工作区打开会话。
- 需要更多历史时,使用「展开更多」分批加载。
- 不需要占用视线时,折叠头部;选择会保存在本机 localStorage。
仓库内提供的验证步骤(面向开发与 CI,可在克隆后的目录执行):
node --check lib/index.js
node --check lib/client.js
npm test
其中 test/client-load.mjs 检查 ModuleLoader 与槽位契约;test/rows.mjs 检查派生、排序、过滤及分页;test/portal.mjs 检查短树挂载、无分组隐藏、host 移动、异常结构回退、帧合并与观察器清理。
适用场景与注意¶
适合:经常在 DSH Web 里跨多个工作区切换、希望按「最近活动」快速回到会话的开发者或日常使用者;且侧栏处于正常的多工作区分组树结构(非单列表、非搜索模式)。
注意:
- 插件以当前 dsh 进程的权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
- 侧栏结构不符合插件识别条件时,「最近」不会出现——这是设计上的隐藏,而非安装失败。
- 社区目录页 skillhub.cn 上的条目 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本插件是 Web 侧栏增强的一种可选方案。
结尾¶
dsh-recent-sessions 把「最近有内容的会话」集中到 DSH Web 侧栏树底部,减少跨工作区找回对话的成本。进一步了解可访问目录页 https://www.skillhub.cn/plugins/hotheat/dsh-recent-sessions 与源码仓库 https://github.com/hotheat/dsh-recent-sessions。