DeepSeek Harness (DSH) 是基于插件架构的智能体开发环境。在日常开发中,会话列表往往需要定期清理。DSH 原生的归档功能无法彻底移除数据,手动操作容易遗留工作区账目或缓存文件。
dsh-session-delete 是一个客户端插件,由 yauntyour 维护。它在每个会话行的操作菜单中新增了「删除会话」选项,用于彻底移除会话及其相关数据。
核心功能¶
- 菜单注入:在每个会话行的
⋯操作菜单中,在「归档会话」正下方新增「删除会话」。该选项采用红色危险配色(跟随主题变量--dsw-alias-state-error-primary),并配有垃圾桶图标与危险态悬停底色。 - 二次确认:执行删除前会弹出确认框,遵循 DSH 主题变量,确认前不会删除任何数据。
- 同名会话多选:当存在多个同名会话时,弹窗会列出所有候选会话(标题、ID、相对时间),由用户选择目标。
- 即时刷新:利用 DSH 的 wire 推送机制(
host/session-removed、host/workspace-changed、host/archived-sessions-changed)更新会话列表,无需刷新页面。删除当前会话时,视图会自动跳转至「新会话」。 - 干净删除:不仅移除会话日志文件,还会同步清理工作区账目(
workspace.sessionIds)、归档集合(archivedSessionIds)与投影缓存(session_projcache),防止重启后出现幽灵会话。 - 安全围栏:复用官方
/api网关的浏览器信任围栏机制(Loopback Host 或受信主机 + 同源检查)。
安装与启用¶
# 在插件目录构建并打包
cd D:/Developments/Workspace/DSH-SessionDelete
npm install && npm run build && npm pack
# 挂载到 web profile
dsh plugin --profile web add "D:/Developments/Workspace/DSH-SessionDelete/dsh-session-delete-0.2.0.tgz"
验证安装:
dsh --profile web --dump-config | grep session-delete
# 应输出包含 id 和 name 的配置项
重启 dsh web 后,刷新浏览器页面,在左侧会话列表任意会话行的 ⋯ 菜单中,即可看到新增的「删除会话」选项。
使用步骤¶
- 将鼠标移到会话行上,点击行尾的
⋯。 - 在弹出的菜单中,点击「归档会话」下方的 删除会话。
- 在确认弹窗中核对会话标题(若存在同名会话,先在列表中选择目标)。
- 点击「删除」,等待提示「会话已删除」——列表会自动移除该会话。
注意事项与边界¶
- 不可逆操作:删除会话不可恢复,日志文件会被永久移除,请谨慎操作。
- 附件处理:
~/.dsh/attachments目录下的附件按对象寻址,无会话索引,删除时不会清理附件对象。 - 搜索索引:若启用了会话内容搜索(session-query),旧索引行可能残留,不影响列表显示,重启后索引重建会自然失效。
- Live 会话限制:正在运行 agent 的会话会被拒绝删除(提示等待运行结束),以避免运行中的回合在目录删除后继续落盘重建文件。
- 菜单依赖:菜单注入为 DOM 级操作,依赖「归档会话」菜单项的稳定文案与 role 契约。若 DSH 官方 UI 重构该菜单结构,需同步更新插件逻辑。