DeepSeek Harness 插件

DSH-DELETE

DSH-DELETE: recoverable conversation deletion for DeepSeek Harness — a session menu item and /delete-conversation command that queue deletions, hide sessions immediately, and move logs to a(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Hyna-hla/DSH-DELETE
最近更新
2026年8月15日
分类
记忆
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Hyna-hla/DSH-DELETE
插件名:DSH-DELETE
作者:Hyna-hla

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

DSH-DELETE

English | 中文

面向 DeepSeek Harness 的可恢复对话删除插件:在会话行 菜单中添加「删除对话」,并注册人工命令 /delete-conversation。用户确认后,目标 Session 进入删除队列,立即通过 Workspace 的持久归档投影从列表中隐藏;DSH 下次启动时,插件会在 Web Workspace 建立会话索引之前校验该 Session 的完整生命周期,并把其日志目录原子移动到可恢复垃圾箱。

> 代码源自 omdsh-dev/dsh-essential(MIT,Copyright (c) 2026 ExDragine)。本仓库将包名/Remote ID/UI 类名统一重命名为 dsh-delete,并为 stateDir 增加了默认值(~/.dsh/conversation-trash),使插件市场一键安装无需手写配置。

为什么删除是两阶段的

当前 DSH 的 Session 持久化约定是只追加的,公开服务没有删除方法;活动 Agent 的销毁句柄只属于创建者。插件不能安全地从活动写入者脚下移走日志。因此删除分两阶段:当前进程只写入一条持久请求并立即隐藏会话行,下一次启动在任何会话恢复之前完成日志移动。这个边界避免日志重建、部分写入和生命周期竞争。

安装

方式一:DSH 插件市场(推荐)

本仓库自带构建产物(lib/),市场可一键安装,无需构建、无需填写配置:

1. 打开 DSH Web GUI → 设置 → DSH插件市场 2. 搜索 DSH-DELETE,点「安装」 3. 重启 DSH

方式二:官方 bundle 安装

node /path/to/DSH/apps/cli/lib/bin.js plugin --profile web add /path/to/DSH-DELETE

安装后重启 DSH。Bundle 会挂载 dsh-delete,并让 Web Workspace 等待 conversationDeletion 服务完成启动恢复后再建立 Session 索引。

方式三:直接写 cordis.patch.yml

- insert:
    - id: dsh-delete
      name: dsh-delete
      config:
        stateDir: /absolute/path/to/conversation-trash
- id: workspace
  inject: [conversationDeletion]

stateDir 必须是绝对路径且位于 Session 工件目录之外;缺省时使用 ~/.dsh/conversation-trash

使用

  • 在会话列表中打开目标会话右侧的 菜单,选择「删除对话」。确认卡片为站内 UI(标题「确认删除该对话吗?」,操作「取消 / 删除对话」),不用浏览器原生弹窗。
  • 删除请求成功后立即归档该 Session,使其从所有会话分组中隐藏(完全成功时行消失即为反馈)。
  • 若删除请求已写入但归档接口失败,卡片会提示「已加入队列但暂时无法隐藏」,不会误报为删除失败。
  • 人工命令:/delete-conversation CONFIRM(删除当前对话);/delete-conversation <session-id> CONFIRM(按 Session id 删除其他对话)。

确认成功后重启 DSH,日志被移至 <stateDir>/trash/<session-lifecycle-key>/。目录中的 deletion.json 记录原目录。

恢复

先停止 DSH,删除恢复目录中的 deletion.json,再把该目录移回 originalDirectory。不要在 DSH 运行时恢复。

配置

字段类型默认值说明
stateDirstring~/.dsh/conversation-trashpending 请求与恢复垃圾箱所在目录;必须为绝对路径且位于 Session 工件目录之外
commandNamestringdelete-conversation人工命令别名(不带 /);菜单始终使用稳定的 /delete-conversation

安全与恢复语义

  • 命令要求字面量 CONFIRM,缺少确认不会写入请求。
  • 请求绑定 sessionIdcreatedAtcwd;id 被复用时不会删除新的 Session 生命周期。
  • 移动前再次比较持久化列表、backend location 与完整 inspect 结果。
  • 产品删除使用同一文件系统内的目录 rename,不 unlink Session 日志;移动后崩溃也可恢复。
  • 验证或移动失败时保留 pending 请求并记录错误,原日志不动。
  • 仅支持逐 Session JSONL backend:SQLite 没有独立 artifact location,插件会明确拒绝。
  • 不永久擦除:日志进的是可恢复垃圾箱,保留期与最终清理属于部署管理员策略。

开发构建

要求 Node ^22.19.0 || >=24.0.0(tsdown 依赖 Promise.withResolvers)。Windows 上确保构建用的 Node 22+ 在 PATH 首位:

pnpm install
pnpm add -D -w unrun   # tsdown 的可选 peer,pnpm 的 autoInstallPeers=false 下必须显式安装
pnpm run build
pnpm run verify:self-contained
pnpm run typecheck
pnpm test

许可

MIT。原始版权归属 dsh-essential(Copyright (c) 2026 ExDragine),详见 [LICENSE](LICENSE)。