dsh-session-manager:在 DSH Web 界面里集中管理会话

前言

在 DeepSeek Harness(DSH)里做智能体开发,会话会随项目和工作区不断增多:侧边栏只有置顶、归档、分叉等官方能力,批量清理、回收站恢复、活动统计、上下文压缩阈值往往要自己动手翻目录或改配置。若会话 ID 来自非官方入口(例如 od-<uuid>),常规删除还可能直接报 invalid-session-id。

下面介绍社区插件 dsh-session-manager(维护者 JeffKeeping,分类「记忆」)。它在不修改 DSH 核心的前提下,为 Web 界面增加独立的「会话管理」设置分栏、对话顶部抽屉入口,以及删除(可回收 / 可彻底清除 / 一键清空回收站)、强制删除、恢复归档、统计、继续与暂停、日志目录、未读标记、工作区分组排序和全局上下文压缩阈值等能力。本仓库基于 dream12347/dsh-session-manager(MIT)的 v0.2.3 构建,当前发布版本为 v0.4.1。

这是什么

dsh-session-manager 是面向 DSH Web 客户端的 host + client 插件:host 侧注册 HTTP 路由处理删除、回收站、暂停、统计与压缩阈值;client 侧通过官方设置插槽与侧边栏菜单扩展 UI。数据仍落在 DSH 既有存储(会话目录、ctx.sessionPersistence、ctx.workspaceRegistry 等),不新增模型工具、不改系统提示词,对 token 与模型行为无额外影响。

  • 目录页:https://www.skillhub.cn/plugins/JeffKeeping/dsh-session-manager
  • 源码:https://github.com/JeffKeeping/dsh-session-manager
  • 许可证:MIT(上游 dream12347;本衍生版本同样 MIT)

核心功能

会话列表与入口

  1. 设置页:左侧导航新增与 Notifications 同级的 会话管理 分栏,按工作区分组展示会话(标题 / 工作目录),组内可按最后使用时间切换「最新在前 / 最旧在前」。
  2. 对话顶部:保留 对话管理 与 回收站 入口;自绘右侧抽屉与设置页数据同源,可图钉固定或点击外部收起。
  3. 侧边栏:会话行「…」菜单最下方新增红色 删除本对话(sidebar.workspaces.session.menu.item,order 500);v0.4.1 起已移除对话顶部单独的红色删除按钮,避免占满标题栏。

删除、回收站与强制删除

  • 删除会先走官方归档通道,侧边栏立即隐藏;会话文件移入 ~/.dsh/dsh-delete-session-trash/,条目持久化在 ~/.dsh/storages/dsh_delete_session.json。
  • 回收站保留最近 10 条,超出自动清除最早一条;支持 恢复、单条 彻底删除,以及 清空回收站(POST /dsh-session-manager/purge-all,不可恢复;部分失败时保留记录并回报 purged / failed / remaining)。
  • 常规删除失败时,原生 Modal 弹窗可提供 强制删除(POST /dsh-session-manager/delete,body 含 { sessionId, force: true }):跳过官方归档校验,按磁盘目录兜底定位后仍移入回收站(可恢复)。正在运行的会话一律拒绝删除;当前打开但空闲的会话可删。子代理会话(非运行中)也可清理,含主会话已删后的「孤儿」子代理。
  • v0.4.1 放宽会话 ID 规则:接受 [A-Za-z0-9][A-Za-z0-9._-]{0,199}(禁止 ..),不再仅限 session-<hex>。

归档、继续、暂停与 fork

  • 底部折叠区展示 已归档会话,支持一键恢复回列表。
  • 继续会话:打开并关闭管理面板;暂停:停止运行中会话的当前回合。
  • 新聊天中继续:调用官方 sessions.fork 分叉子会话并打开。
  • 文件夹:在系统文件管理器中打开该会话日志目录(POST /open-folder)。

统计与未读

  • 统计:居中弹窗展示近期活动(轮次、用户消息、助手消息、全部工具调用、活动窗口等),数据来自 GET /stats。
  • 未读 / 已读:标题旁状态点——蓝色为手动未读、琥珀为官方等待输入、绿色为官方完成提醒、运行中为转圈;点击官方状态点可就地已读;手动未读集保存在 localStorage 键 dsh.session-unread.v1,可与其它会话管理插件互通。侧边栏蓝色点通过标题文本装饰官方树(重复标题时会共享同一点;抽屉内按真实 session id 精确标记)。

工作区与上下文压缩

  • 工作区标题悬停可出现 置于顶部 / 重命名 / 删除(删除工作区仅移出列表,会话归入「未分组」,文件夹与记录保留);拖拽标题可调整工作区顺序。
  • 通用设置 中增加 上下文压缩阈值(17%–90%):对话上下文用到模型窗口(100 万 token)的设定比例时自动压缩,每次压缩保留最近 16% 原文;保存即时生效并持久化,经 agent/pre-step 钩子对所有 Agent 预设统一生效,重启后仍有效(GET|POST /compaction-threshold)。

v0.4.1 相对上游的其它改动

  • 确认与告警统一为 @deepseek-ai/dsh-client-ui-primitives 的 Modal,替代 window.confirm / window.alert。
  • 修复插件重挂载时 webServer.register() 重复注册导致宿主启动失败的问题(进程级路由表接管旧注册)。

安装与启用

插件以当前 dsh 进程的权限读写 ~/.dsh 下会话与存储;安装前建议在 GitHub 查阅源码与 MIT 许可证。安装完成后需 重启 dsh web(host 与客户端 bundle 需重新加载)。

从 Release(推荐)

dsh plugin --profile <profile> add https://github.com/JeffKeeping/dsh-session-manager/releases/latest/download/dsh-session-manager.tgz

也可先下载 dsh-session-manager.tgz 再本地安装:

dsh plugin --profile <profile> add /absolute/path/to/dsh-session-manager.tgz

本地目录安装是 link 方式,安装后不要移动或删除该目录。

从 GitHub 指定版本

dsh plugin --profile <profile> add 'github:JeffKeeping/dsh-session-manager#v0.4.1'

从本地目录(示例 profile 为 web)

dsh plugin --profile web add /absolute/path/to/dsh-session-manager

典型用法

设置页集中管理

  1. 打开侧边栏底部 设置(齿轮)。
  2. 进入 会话管理 分栏。
  3. 主列表为未归档会话;底部展开 已归档会话 可恢复或删除。
  4. 删除会话进入 回收站;在回收站内恢复、彻底删除,或使用 清空回收站 一次性永久清除。
  5. 行内操作:继续会话、运行中时可 暂停、统计、文件夹、删除;顶部支持全选与批量删除。
  6. 拖拽工作区标题调整顺序;悬停工作区标题可置顶、重命名或删除工作区分组。

通用设置:压缩阈值

  1. 设置 → 通用设置(General)。
  2. 调整「上下文压缩阈值」滑块或输入框(17%–90%),保存后立即生效。

侧边栏删除与强制删除

  1. 会话行悬停「…」→ 删除本对话。
  2. 在原生确认框中确认后移入回收站。
  3. 若宿主返回错误,在同一弹窗中选择 强制删除(仍进回收站,除非会话正在运行)。

对话顶部抽屉

从 对话管理 打开右侧抽屉,行内 更多 收纳统计、文件夹、新聊天中继续;底部同样可管理已归档与回收站。

适用场景与注意

适合谁:长期在 DSH Web 里维护多工作区、多会话的开发者;需要可回收删除、归档恢复、活动统计、全局压缩阈值,或要清理非标准 session id / 孤儿子代理会话时。

兼容性:README 写明本版本在 DSH 0.2.1-rc.2(桌面端)验证;上游曾声明适配 0.1.1-rc.1 与 0.2.0-rc.2。DSH 升级后若插槽或 ctx API 变化,可能需要插件同步适配。

限制摘要:

  • 不能删除正在思考的会话;多标签页请先确认会话已停止。
  • live 会话删除后,内存状态依赖 DSH 重启清理;彻底删除的 id 会写入浏览器 localStorage,避免刷新后列表「复活」。
  • 插件不修改 harness 核心;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-session-manager 把会话生命周期里常见的删除、回收、归档恢复、统计、运行控制和工作区整理收进 DSH 原生 UI,并在 v0.4.1 中补上强制删除、清空回收站与重挂载稳定性。若你已在用 DSH Web 做日常开发,可按上文安装命令接入,再从设置页的「会话管理」或对话顶部的「对话管理」开始使用。

  • 插件目录:https://www.skillhub.cn/plugins/JeffKeeping/dsh-session-manager
  • GitHub:https://github.com/JeffKeeping/dsh-session-manager
羽毛球分组比赛记分
小程序二维码

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

Xiaoye