前言¶
DeepSeek Harness(DSH)把界面与能力拆成 Cordis 插件,侧栏里每条会话行通常带有固定、重命名、分叉、归档等官方菜单项。若你本地积累了大量测试会话或误开的空会话,侧栏没有「删除」时,只能依赖归档或手动清理磁盘目录,既不方便,也容易和 workspace 账目不一致。
插件市场里的 dsh-session-delete 面向较早的 peer 范围(^0.1.0-rc.5),在 0.2.0-rc.2 运行时往往装不上。维护者 ljp888 在 GitHub 仓库 ljp888/dsh-session-delete-next 提供了重写版:走官方 slot,不再依赖 DOM 注入。社区目录页见 SkillHub(独立站点,与 DeepSeek / 幻方无官方从属关系)。
下面介绍它做什么、怎么装、怎么用,以及安装前需要知道的限制。
这是什么¶
dsh-session-delete-next 是 DSH 的客户端插件(宿主 + 浏览器各一半),在侧栏每条会话行的 … 菜单中增加 删除会话,永久删除该会话的全部本地记录,不可恢复。
- 目标运行时:
0.2.0-rc.2 - 包版本(资料):
1.0.0 - 许可证:MIT
- 本包未发布到 npm,安装方式以仓库 README 为准,不要用名称臆造
dsh plugin add github:...一类命令。
核心功能¶
入口与行为¶
| 入口 | 菜单项 | 行为 |
|---|---|---|
会话行 … 菜单 |
删除会话 | 永久删除该会话的全部本地记录,不可恢复 |
要点如下:
- 危险操作用红色菜单项,并弹出独立确认对话框,明示「不可恢复」,并显示会话标题。
- 运行中的会话一律拒绝删除(含当前会话)。宿主返回
409 live,对话框给出提示。 - 删除成功后侧栏该行立即消失,无需刷新页面(复用官方已转发的
api-session/removed事件)。 - 菜单文案跟随 GUI 语言(中文 / 英文),走官方 locale 服务。
与旧版的技术差异¶
0.2.0-rc.2 已开放官方扩展点,本插件通过标准 slot 注册,侧栏结构变动时不会像 DOM 注入那样静默失效:
- Host(
index.js):注册同源路由POST /dsh-session-delete-next/delete,请求体{ sessionId };删除顺序为先删文件、后记账,避免「界面已隐藏但磁盘仍在」的半删状态;跨站Origin返回403。 - Client(
client.js):注册sidebar.workspaces.session.menu.item(order: 500,排在 pin/rename/fork/archive 之后)与shell.overlay(确认框)。
安装与启用¶
最省事的方式是把仓库 clone 到 profile 的插件目录(<profile> 默认为 ~/.dsh/profiles/desktop):
git clone https://github.com/ljp888/dsh-session-delete-next.git \
~/.dsh/profiles/desktop/node_modules/dsh-session-delete-next
Windows PowerShell:
git clone https://github.com/ljp888/dsh-session-delete-next.git `
"$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-session-delete-next"
也可以手动复制整个包目录到 <profile>/node_modules/dsh-session-delete-next/,然后:
- 在
<profile>/cordis.patch.yml追加一行挂载(文件被 HMR 监听,保存后热加载):
- insert:
- id: dsh-session-delete-next
name: dsh-session-delete-next
- 浏览器刷新一次,侧栏会话
…菜单中应出现「删除会话」。
不要把本包写进 profile 的 package.json 的 dependencies:包不在 npm 上,后续 pnpm install / dsh plugin 可能去 registry 拉取而失败;在 profile 里跑 pnpm install 也可能剪掉该目录,重装即可。
宿主加载成功时,可在 ~/.dsh/logs/desktop-next.log 看到类似:
[dsh-session-delete-next] host ready: POST /dsh-session-delete-next/delete
典型用法¶
- 在侧栏找到已结束、非当前运行的会话(正在运行或仍打开的会话会被拒绝)。
- 点击该行
…,选择红色 删除会话。 - 在确认对话框中核对会话标题,点击 永久删除(或取消)。
- 成功后该行从侧栏消失;磁盘上对应会话目录应被移除(路径形态为
~/.dsh/sessions/<项目目录>/<会话 id>/整目录消失)。
若你只有一条活跃会话、无法做破坏性实测,可按 README 建议:新开一个测试会话 → 发一条消息 → 切回原会话 → 对测试会话执行删除。
适用场景与注意¶
适合谁
- 已在 DSH
0.2.0-rc.2上使用桌面 profile,需要单条清理本地会话记录的智能体开发者或日常用户。 - 需要从侧栏安全入口删除,而不是手删目录导致账目不一致的场景。
已知限制(资料原文)
- 不能删除 live 会话;需先关闭该会话或重启 DSH 后再删。
- 子智能体会话可删;父会话侧栏会随
api-session/removed收敛。 - 附件不删:
~/.dsh/attachments/**为内容寻址、跨会话共享,删会话不会动附件。 - Windows 上若其他进程持有
session.lock,删除可能报EBUSY;对话框显示原始错误,磁盘状态不变,可重试。 - 未实现按工作区批量删除,仅支持单会话。
index.js中部分 fail-closed 加固不在 HMR 监听根内,需重启 DSH 后才能在运行实例中生效。
安装前请自行核对
插件在当前 DSH 进程权限下读写会话目录与 workspace 账目。安装前应阅读 index.js 与 client.js,确认行为与 MIT 许可证可接受。
结尾¶
dsh-session-delete-next 在 0.2.0-rc.2 上补上了侧栏「删除会话」,用官方 slot 与先删文件后记账的流程,替代因 peer 不兼容而难以安装的 dsh-session-delete。安装以 clone 到 profile 的 node_modules 并追加 cordis.patch.yml 为准。