前言¶
DeepSeek Harness 在执行 “Delete workspace” 操作时,只会移除工作区列表中的条目,保留会话目录和日志文件。长期使用会导致磁盘积累大量无法回收的会话目录。虽然 dsh 0.1.7 版本已引入官方的归档功能,但缺乏物理删除归档会话的入口。dsh-session-manager 插件通过一级设置页面和会话上下文菜单,提供跨工作区的归档会话列表、恢复和永久删除能力。
核心功能¶
设置页面¶
进入 DSH 的设置界面,可以找到 “Session Manager” 页面。该页面列出所有归档会话的详细信息,包括标题、所属工作区、项目目录、更新时间和运行状态。在列表中,可以对单个会话执行恢复操作,或点击红色的 “Delete permanently” 按钮永久删除。此外,支持全选(通过表头复选框或行选择)后进行批量删除操作。所有删除操作均需经过确认对话框。
会话上下文菜单¶
在左侧边栏的会话列表中,鼠标悬停在某一行并点击 ⋯ 菜单,在内置的 “Rename”、”Fork session”、”Archive session” 等选项下方,会出现一个红色的 “Delete permanently” 项。该菜单项使用了原生危险样式,点击后会触发与设置页面相同的确认对话框。
Agent 工具¶
插件为 Agent 提供了三个工具函数,用于在代码中操作归档会话:
* session_list_archived:以 JSON 格式列出所有归档会话。
* session_restore_archived:根据 ID 恢复归档会话(无确认步骤)。
* session_delete_permanently:根据 ID 永久删除归档会话。此工具必须传入 confirm: true 参数,且拒绝处理未知 ID、非归档 ID 或包含运行任务的会话。
安装与启用¶
本插件依赖 dsh 0.1.7 版本,因为它引入了 sidebar.workspaces.session.menu.item 插槽(用于上下文菜单项)以及 size-neutral 产品图标。
- 克隆仓库到本地:
git clone https://github.com/SunshineR04/dsh-session-manager.git
- 添加插件到指定配置文件:
dsh plugin --profile <name> add "file:/path/to/dsh-session-manager"
插件会通过 pnpm 安装并追加到 `dsh.profile.bundles`。如果在页面刷新后未看到插件,请重启 DSH 桌面应用。
注意:请勿通过裸 npm 名称
dsh-session-manager安装。该名称下存在一个无关的独立项目(由 hkkz9522 维护),安装错误的包会导致功能异常。
典型用法¶
- 查看归档会话:在 Agent 调用
session_list_archived工具,或在 DSH 设置页面的 Session Manager 中查看所有已归档会话。 - 恢复会话:在设置页面点击会话对应的恢复按钮,或让 Agent 调用
session_restore_archived工具。 - 永久删除:在设置页面勾选会话并确认删除,或在会话上下文菜单中点击红色删除按钮。若需在 Agent 中删除,调用
session_delete_permanently并设置confirm: true。
注意事项¶
- 物理删除:插件执行的是直接物理删除,不会经过备份层。删除前请务必确认。
- 环境限制:每个
DSH_HOME仅支持一个主机。如果两个 DSH 实例共享同一个 Home 目录并尝试并发删除,后写入的进程会静默覆盖前者的标记,导致前者的会话标记丢失且文件已被删除。 - 版本要求:需要 dsh >= 0.1.7。低于此版本的 dsh 无法渲染上下文菜单项,仅设置页面可用。
- 依赖项:需要
@deepseek-ai/schemastery版本 >= 3.18.0。
结语¶
dsh-session-manager 解决了 DSH 归档会话无法物理清理的痛点。它提供了直观的图形界面和脚本化工具,帮助开发者有效管理磁盘空间。更多细节可参考插件目录或 GitHub 仓库。