前言¶
DeepSeek Harness(DSH)侧栏里可以归档(archive)会话,但宿主持久化层没有暴露「删除」原语,Workspace 注册表也会刻意保留每一份 session 日志。对日常开发来说,误建对话、试跑子代理、或只想清掉侧栏条目时,缺少一条可撤销的删除路径,列表只会越积越多。
dsh-conversation-trash 由社区维护者 wusoudiaowei 发布,在 SkillHub 上归类为「记忆」类插件。它不修改宿主二进制、不改写日志格式,而是用宿主已支持的操作组合出「移入回收站 → 8 秒内撤销 → 稍后恢复或彻底删除」的流程。下文按安装、用法、实现要点与限制说明。
这是什么¶
一句话:DSH 对话回收站——从侧栏把会话移入回收站,确认后 8 秒内可 Undo,之后可在回收站面板恢复或永久清除。
- 仓库:wusoudiaowei/dsh-conversation-trash
- 目录页:SkillHub 插件页
- 许可证:MIT(README 与 package.json 一致)
- 当前 package 版本:0.2.0;要求 Node
>=20、DSH>=0.2.0-rc.2
核心功能¶
以下能力均来自项目 README,安装后由插件向 UI 与本地 HTTP 路由提供。
- 侧栏删除入口:在会话行
…菜单中,Archive 下方提供危险样式的「删除对话 / Delete conversation」。 - 8 秒撤销:确认后行从列表消失,toast 提供 Undo,不是静默不可逆删除。
- 删除前预览:对话框展示标题,以及会随父会话一起移走的子代理会话数量。
- 子代理级联:被删会话拥有的 subagent 会话一并进入回收站;fork 是独立对话,不受影响。
- 先停再藏:通过宿主
archiveSession且stopActivity: true,先停止进行中的工作再隐藏行。 - 回收站面板:侧栏底部按钮带数量角标,可单条恢复、单条永久删除或清空回收站。
- 数据落盘:回收站目录为
~/.dsh/session-trash/,索引为同目录下的index.json(原子写入)。
安装与启用¶
官方安装命令(desktop profile):
dsh plugin --profile desktop add github:wusoudiaowei/dsh-conversation-trash
Windows 也可将插件目录复制到 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-conversation-trash,并在 profile 的 dsh.profile.bundles 中注册后重启 DSH;仓库提供幂等的 install.ps1 完成这两步。
插件以当前 DSH 进程权限读写 ~/.dsh 下的会话与回收站目录。安装前建议在 GitHub 阅读源码与 MIT 许可证,并确认与本地 DSH 版本满足 engines 要求。
典型用法¶
- 在侧栏悬停某条对话,打开
…菜单。 - 选择 删除对话 / Delete conversation。
- 在对话框中确认标题与子代理数量。
- 确认后列表移除该行;若误操作,在 8 秒内点 toast 中的 Undo。
- 需要稍后处理时,打开侧栏底部回收站按钮:恢复条目,或永久删除 / 清空(部分彻底删除能力 README 注明尚无设置 UI,可经 HTTP 路由操作,见下节)。
实现要点(便于排障)¶
删除流程在 README 中概括为三步:
| 步骤 | 行为 |
|---|---|
| 1 | workspaceRegistry.archiveSession(id, { stopActivity: true }) |
| 2 | 会话目录从 ~/.dsh/sessions/<workspace>/<session-id>/ 移到 ~/.dsh/session-trash/<session-id>/ |
| 3 | 向 ~/.dsh/session-trash/index.json 写入条目 |
恢复会把目录移回并 unarchive;purge 则永久删除。Windows 上日志文件可能仍被占用,移动会带退避重试;失败会记 moved: false,由启动时 sweep 收尾。
仅本机、同源 JSON 接口(节选):
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /dsh-conversation-trash/list |
列表与总大小 |
| POST | /dsh-conversation-trash/preview |
{sessionId} → 标题与子代理 id |
| POST | /dsh-conversation-trash/delete |
{sessionId, displayTitle} |
| POST | /dsh-conversation-trash/restore |
{sessionId} |
| POST | /dsh-conversation-trash/purge |
{sessionId} |
| POST | /dsh-conversation-trash/purge-all |
{} |
适用场景与已知限制¶
适合:需要在 DSH desktop 侧栏清理对话、又希望有短暂撤销窗口和独立回收站的开发者;需要连同子代理会话一起整理父会话时。
注意(README Known limits):
- 删除后,在「All conversations (show archived)」里仍可能看到该对话,直到下次重启——此时已归档且日志目录已移走。
- 删除当前正在查看的对话不会自动跳转离开。
- 依赖宿主内部 slot、
archiveSession、日志目录布局;未来 DSH 版本可能不兼容,失败应可见且非破坏性。 - 若上游日后提供真正的
session/delete,作者建议本插件退役。
DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-conversation-trash 用归档加目录移动补上了 DSH 侧栏缺失的删除体验:8 秒撤销、回收站恢复或 purge,且不碰宿主二进制与日志格式。进一步了解设计与被拒方案可见仓库 docs/design.md。
- 目录页:https://www.skillhub.cn/plugins/wusoudiaowei/dsh-conversation-trash
- GitHub:https://github.com/wusoudiaowei/dsh-conversation-trash