READMESource: main@6796e5c3
dsh-session-suspend
给 DSH(DeepSeek Harness)侧边栏的会话列表加一个挂起模式:把暂时不用的会话收进侧边栏底部的「已挂起」折叠组,需要时再恢复回列表。
会话不会消失:挂起只是把它从列表里收起并记账,随时可以从折叠组里恢复(或恢复并打开)。
特性
- 挂起入口:会话行悬停时的月亮按钮,或行的「...」菜单 →「挂起会话」(排在"归档"之后、"复制会话 ID"之前)。
- 折叠组:侧边栏底部出现「🌙 已挂起 N」按钮,新收进会话时会闪一下;点开是浮层列表,点行 = 恢复并打开,尾部箭头 = 只恢复,表头全部恢复一次还原,
Esc/点外部收起。 - 状态驱动:挂起/恢复按宿主归档状态判定,对已经挂起的会话再点菜单只会取消挂起,不会重复归档;读取不到快照时保守回退,不跳过 Host 调用。
- 提示条:底部居中(对齐中间内容列,不被左侧栏宽度带偏)、跟随主题色、14px 带图标、可点 × 关闭;挂起成功那条带撤销,恢复会给「已恢复」反馈;提示条本体不挡点击,只有「撤销 / 关闭」接收鼠标。
- 与宿主一致:悬停提示用和宿主图标同款的气泡(500ms 延迟、下方右对齐、portal 到 body);菜单行、行悬停按钮、折叠组入口都走宿主的增量槽,不替换任何宿主 UI;中英文案随 DSH locale 切换,颜色全部走主题 token。
要求
- DSH(DeepSeek Harness)
0.2.1-rc.5(开发与验证所用版本);更早版本若缺少对应槽位,插件会静默不注册,不影响宿主。 - 无其他依赖。
安装
插件是「本地目录 bundle」,把仓库克隆到任意位置后安装:
git clone https://github.com/Lqg97/dsh-session-suspend.git
在 DSH 里打开 插件管理 → 安装本地目录,选择克隆后的目录(例如 ~/code/dsh-session-suspend);或让 agent 调用插件管理器的 install_bundle,target 填该目录的绝对路径。
安装后刷新一次页面(Cmd+R)即可生效,无需重启。首次安装会出现在插件管理列表里(标题「会话挂起」)。
卸载:插件管理器里卸载 @local/dsh-session-suspend,或从 profile 的 dsh.profile.bundles 中移除后刷新。
用法
- 在侧边栏某条会话上悬停 → 点月亮,或打开该行「...」菜单 →「挂起会话」。
- 会话从列表收起,底部出现「🌙 已挂起 N」。
- 点底部按钮展开折叠组,逐个或全部恢复;挂起成功的提示条也能直接撤销。
行为边界
- 只有空闲会话能挂起:会话还在跑(回合、子代理、后台任务、定时提醒)时 Host 会拒绝,插件提示「还在运行,停止后再挂起」,不会替你停掉工作(从不传
stopActivity)。 - 复用宿主归档状态:列表行由宿主
ui-workspace渲染,插件没有"把行折叠起来"的插入点,所以挂起借用宿主的归档把行移出列表;插件只记录"由挂起动作归档"的会话,你在宿主归档筛选里手动取消归档时,折叠组里的对应项会自动消失。 - 本地记录:挂起集合存在浏览器 localStorage;换浏览器/清站点数据后折叠组会失去记录,但这些会话仍是宿主里的归档状态,可在宿主的归档筛选里恢复。
- 归档筛选下的重叠:切到「全部对话 / 仅显示已归档」时,挂起的会话也会按宿主规则出现在列表里(置灰),这是复用归档语义的固有重叠。
工作区级挂起(待宿主槽位)
侧边栏的工作区分组行没有插件插槽(宿主只开放了 Session 行的菜单/悬停按钮),Host 也没有工作区级归档/收起状态,所以「挂起整个工作区」目前做不了。
需要的槽位与状态已整理成需求文档并提交给上游:
- 上游讨论(DeepSeek Harness · Ideas):https://github.com/deepseek-ai/deepseek-harness/discussions/11996
- 需求文档:
docs/workspace-row-slots-request.md(含接口草图、兼容性、验收标准)
在宿主支持之前的临时替代:工作区分组本身可以点标题折叠(宿主原生能力)。
实现
| 文件 | 作用 |
|---|---|
index.js |
Host 半身(空 apply):让 bundle 有可激活的行,并让 Client 模块并入 web 模块图 |
client.js |
浏览器半身:折叠组、行菜单项、行悬停按钮、提示条、词典与样式 |
cordis.patch.yml |
插入 session-suspend 行 |
locale/*.json |
插件管理里的标题与描述 |
icon.svg |
插件图标(原创) |
用到的宿主扩展点(全部是增量槽,未注册时宿主行为不变):
sidebar.workspaces.session.menu.item(菜单项,order 420)sidebar.workspaces.session.row.action(行悬停按钮,order 90)sidebar.footer.action(底部折叠组入口,order 20)shell.overlay(提示条,order 30)
No comments yet. Be the first to write one.