前言¶
在 DeepSeek Harness(DSH)里长期跑智能体,工作区会话列表会不断变长。宿主自带的「归档」只会把会话从列表里藏起来,~/.dsh/sessions 下的日志目录仍然占着磁盘。想真正清掉某次试验、过期对话或误开的会话,单靠归档不够;若粗暴删目录,又很难回到「删之前还能恢复」的状态。
下面介绍社区插件 @jingmei2/dsh-session-bin(仓库 jingmei2/dsh-session-bin):在归档语义之上,把会话目录移入本地回收站,支持恢复或从磁盘彻底删除,并暴露与界面一致的 Agent 工具。
这是什么¶
@jingmei2/dsh-session-bin 由维护者 jingmei2 发布,在 SkillHub 目录中归类为「记忆」。当前包版本为 0.1.0,许可证 MIT。它不改变 DSH 的会话模型,而是补上「物理删除日志 + 可撤销回收站」这一层:删除先走宿主归档,再把目录 rename 到 ~/.dsh/session-trash,失败时自动回滚。
与宿主「归档」的关系¶
DSH 默认只支持归档:会话行从工作区列表消失,但 ~/.dsh/sessions 下文件原样保留。本插件的「移入回收站」使用宿主归档通道 workspaceRegistry.archiveSession,而不是把工作区里的会话「摘除」。摘除后实例仍可能留在内存,并出现在列表底部「未分组」里,形成难以清理的行;归档则保留工作区归属,行干净消失,恢复时回到原工作区、原位置。归档与置顶状态会写入元数据,恢复时一并还原。
核心功能¶
界面操作¶
| 操作 | 效果 |
|---|---|
会话行 … 菜单 → 彻底删除… |
会话目录(含子代理会话)移入回收站,会话行从工作区列表隐藏 |
| 设置 → 会话回收站 → 恢复 | 目录移回原位置,会话回到原工作区、原位置 |
| 设置 → 会话回收站 → 批量清理 | 按工作区分组勾选,一次移入回收站多个会话;正在生成回复的会被跳过并列出原因 |
| 设置 → 会话回收站 → 彻底删除 / 清空回收站 | 从磁盘上真正删除,不可恢复 |
菜单行复用宿主 MenuItemButton(经 require('@deepseek-ai/dsh-client-ui-primitives'));取不到模块时退回 role="menuitem" 按钮。设置页与确认弹窗使用 --dsw-alias-* 主题令牌。
Agent 工具 session_trash¶
插件注册工具 session_trash,参数 action 取 list / trash / restore / purge / empty,与设置页走同一套宿主逻辑。action=trash 可传 sessionIds 数组批量删除(最多 200 个),返回 { results, trashed, skipped },单条失败不影响其余。
磁盘布局¶
~/.dsh/sessions/--<cwd-slug>--/session-<uuid>/ # 原始位置
~/.dsh/session-trash/
20261019-165233-a1b2c3/
meta.json # 会话、工作区、时间、字节数、子会话清单
data/--<cwd-slug>--/session-<uuid>/ # 被移动的日志
卸载插件不会自动清空 ~/.dsh/session-trash,需手动删除该目录。
安装与启用¶
指定 profile 后执行官方安装命令:
dsh plugin --profile <profile> add @jingmei2/dsh-session-bin
也可在插件市场按包名 @jingmei2/dsh-session-bin 搜索安装。装完后:Host 侧改动需重启应用,Client 侧刷新页面即可。
package.json 要求 Node ^22.19.0 || >=24.0.0,DSH >=0.2.0-rc.1 <0.3.0-0。
典型用法¶
- 在某一工作区打开会话列表,对不再需要的会话使用
…→ 彻底删除…,确认后目录进入回收站,列表中该行消失。 - 打开 设置 → 会话回收站:误删则 恢复;确认不再需要则对条目 彻底删除,或 清空回收站 一次性清空。
- 需要一次清理多个会话时,在回收站设置里使用 批量清理,按工作区勾选;若某会话正在生成回复,会被跳过并在结果中说明原因。
- 在 Agent 侧调用
session_trash:例如action=list查看回收站,action=trash并传入sessionIds做批量移入回收站。
安全边界与适用注意¶
- 拒绝删除:仅当会话「正在生成回复」(agent
running、仍有写入)时拒绝移动,避免后续写入落到旧路径;含正在运行子代理的整条会话同样拒绝。批量清理会跳过这些会话并列出原因。 - 仅警告不拒绝:仅开着标签页、未在生成时,删除会警告但不阻止;DSH 不会因切换会话就释放实例。
- 事务性:先归档再
rename到回收站;任一步失败会回滚(含撤销归档),避免「列表没了、文件在别处」的半成品。 - 其它:同一会话重复删除会提示已在回收站;元数据损坏的条目在列表中标记,且只允许彻底删除,不可误恢复半份数据。
适合需要定期清理磁盘、又希望误删可恢复一段时间的 DSH 用户。插件以当前 DSH 进程权限读写 ~/.dsh,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认符合本机安全策略。SkillHub 目录页(jingmei2/dsh-session-bin)为社区收录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
@jingmei2/dsh-session-bin 在 DSH「一切皆插件」的生态里,把会话从「只能归档」延伸到「可撤销的物理删除」:归档隐藏列表、回收站承载恢复,purge 才真正释放磁盘。目录与文档见 SkillHub 插件页 与 GitHub。