dsh-session-manager:DeepSeek Harness 归档会话管理插件

前言

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 产品图标。

  1. 克隆仓库到本地:
    git clone https://github.com/SunshineR04/dsh-session-manager.git
  1. 添加插件到指定配置文件:
    dsh plugin --profile <name> add "file:/path/to/dsh-session-manager"
插件会通过 pnpm 安装并追加到 `dsh.profile.bundles`。如果在页面刷新后未看到插件,请重启 DSH 桌面应用。

注意:请勿通过裸 npm 名称 dsh-session-manager 安装。该名称下存在一个无关的独立项目(由 hkkz9522 维护),安装错误的包会导致功能异常。

典型用法

  1. 查看归档会话:在 Agent 调用 session_list_archived 工具,或在 DSH 设置页面的 Session Manager 中查看所有已归档会话。
  2. 恢复会话:在设置页面点击会话对应的恢复按钮,或让 Agent 调用 session_restore_archived 工具。
  3. 永久删除:在设置页面勾选会话并确认删除,或在会话上下文菜单中点击红色删除按钮。若需在 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 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜