DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ASALULU /

ASALULU/dsh-conversation-trash

Verified

Reversible conversation deletion for DeepSeek Harness: 30-day trash, undo, restore.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@fbbe7b36

dsh-conversation-trash

可撤销的对话删除 — DeepSeek Harness 只提供归档,不提供删除。这个插件把会话日志、列表投影缓存与工作区归属移入一个 30 天回收站:删错了可以撤销,彻底不要了再永久清除。

Reversible conversation deletion for DeepSeek Harness. DSH archives, but never deletes. This plugin moves a Session's log, list-projection cache and workspace membership into a 30-day trash, with one-click undo, restore and permanent purge.

  • 中文界面 / English UI(跟随 DSH 语言)
  • 官方 Slot 集成:会话行悬停按钮 + 「…」菜单项,不注入 DOM、不改原生菜单
  • 删除立即从列表消失,Toast 里可 撤销
  • Plugins → 对话回收站 页面:查看标题 / 删除时间 / 占用空间,恢复、彻底删除、清空
  • 30 天自动清扫;删掉的日志不再参与列表与搜索

安装

在 DSH 里打开 Plugins → Add plugin,填 dsh-conversation-trash;或使用 CLI:

dsh plugin --profile web add dsh-conversation-trash

安装后重启 DSH(宿主半在启动时加载)。桌面端请用应用内的 Plugins 页面安装;profile 名按你的实际配置替换。

要求:DSH >= 0.2.2-rc.1 < 0.3.0,Node >= 22.15.0。

使用

  1. 会话行悬停出现垃圾桶按钮,或打开行尾「…」菜单 → 删除对话。
  2. 确认后日志移入回收站,列表行消失;Toast 上的 撤销 可以立即恢复。
  3. 回收站页面在 Plugins → 对话回收站:可 恢复、彻底删除、清空回收站(后两者都是两段式确认)。

会移动什么

对象 处理
<DSH_HOME>/sessions/<项目目录>/<session-id>/ 移入回收站;失败时原样不动
<DSH_HOME>/storages/session_projcache/sessions/<session-id>.json 尽力移入;移不动就留在原处,不影响删除
workspace.json 的成员 / 置顶 / 归档记录 通过 Workspace registry 解除
<DSH_HOME>/attachments/** 不动(内容寻址、跨会话共享)
子代理会话 不动(独立的 session 目录)
搜索索引 不动;派生索引按源日志自动对账

回收站位置:<DSH_HOME>/plugin-data/session-delete/trash/<时间戳>--<session-id>--<随机后缀>/,内含 manifest.json、log/、projection.json。

安全模型

  • 没有 shell、没有网络、没有 eval。 插件只做文件移动与目录删除,不执行系统命令、不上传任何内容、不加载远程代码。
  • 路径受限。 所有路径都经过 resolve + 根目录包含检查(assertInside);sessionId 先校验格式再触碰文件系统;回收站条目名只允许 [0-9A-Za-z_.-]。
  • API 仅 owner。 路由通过 ctx.connection.fetch.register 注册;DSH 的 exact fetch route 对非 owner Peer 返回 403,Web 载体的 Host/Origin 校验在 handler 之前完成。请求体另有 64 KiB 上限。
  • 活会话拒绝删除。 DSH 对仍在内存里的会话读取时不查磁盘;移走文件只会留下“列表里没了、内容却还能打开”的幽灵。插件返回 live,提示重启 DSH 后再删。
  • 失败不吞日志。 日志先单独移动;缓存移动失败只记录 projection: "left",绝不因为缓存失败去清空回收站。
  • 并发安全。 回收站目录带随机后缀并用非递归 mkdir 占位;同一会话的并发删除,后到请求返回 duplicate。
  • 可恢复。 恢复优先用相对 DSH_HOME 的路径;原位置已有同名目录时返回 conflict,不覆盖。

兼容性

DeepSeek Harness 状态
0.2.2-rc.1 本机 Desktop / Web GUI 实测通过
其它 0.2.x 未逐版本验证;engines.dsh 已限定 < 0.3.0

插件依赖 DSH 的磁盘布局(sessions/<project>/<id>、session_projcache)与 workspace/session-activity、workspace/session-stop 两个事件。DSH 大版本升级后若布局变化,删除会返回诊断而不是静默破坏;升级前请先在测试 profile 验证。

HTTP API

单一路由 POST /api/session-delete,body 带 action:

action 参数 作用
delete sessionId / title? / stopActivity? 移入回收站
restore trashId 放回原位并尝试重新挂回工作区
list-trash — 列出回收站
purge trashId 彻底删除一条
purge-all — 清空回收站

delete 失败码:live(需重启)、duplicate(正在删除)、busy(仍在工作)、gone(已不存在)、file-busy(被占用)。restore 可能返回 conflict / outside-home;成功时 reattached: false 表示没能挂回原工作区。

已知限制

  • 打开过的会话需要重启 DSH 才能删。 这是为了不制造“内存里还能读到”的假删除;重启后所有会话变冷,即可正常删除。
  • 空会话(没有日志也没有缓存)如果仍在内存里,同样按 live 拒绝;冷启动后它不在列表里,也不需要删。
  • 缓存是派生数据:移不动时留在原处,不阻塞删除;恢复时优先保留运行中的新缓存。
  • 子代理会话、附件不会随父会话删除。
  • 回收站保留 30 天,期间内容仍在磁盘上;需要立刻清除请用「彻底删除」。
  • 多进程:workspace.json 没有跨进程写锁,删除期间不要在另一个 DSH 进程里操作同一工作区。

开发

node test/host.test.mjs     # 假 home + 假 ctx:移动、拒绝 live、并发、恢复、冲突、缓存失败
node test/client.test.mjs   # 槽位注册、对话框、RPC 载荷、撤销

无构建步骤:index.js 是宿主 ESM,client.js 是 Module Loader 客户端包。

English

Reversible conversation deletion for DeepSeek Harness. Adds a delete entry to the session row (hover button + “…” menu), moves the log and projection cache into a 30-day trash, and exposes a trash page under Plugins → Conversation Trash with restore and permanent purge.

dsh plugin --profile web add dsh-conversation-trash

Safety: no shell, no network, no eval; every path is root-checked; the HTTP route is owner-only through DSH’s exact fetch routes; live Sessions are refused (restart DSH, then delete); the log moves first and a cache failure never clears the trash; concurrent deletes are serialized per Session.

Requires DSH >= 0.2.2-rc.1 < 0.3.0 and Node >= 22.15.0. Attachments and subagent sessions are not deleted. MIT licensed.

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit fbbe7b363d49

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout