前言¶
在 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)
核心功能¶
会话列表与入口¶
- 设置页:左侧导航新增与 Notifications 同级的 会话管理 分栏,按工作区分组展示会话(标题 / 工作目录),组内可按最后使用时间切换「最新在前 / 最旧在前」。
- 对话顶部:保留 对话管理 与 回收站 入口;自绘右侧抽屉与设置页数据同源,可图钉固定或点击外部收起。
- 侧边栏:会话行「…」菜单最下方新增红色 删除本对话(
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
典型用法¶
设置页集中管理¶
- 打开侧边栏底部 设置(齿轮)。
- 进入 会话管理 分栏。
- 主列表为未归档会话;底部展开 已归档会话 可恢复或删除。
- 删除会话进入 回收站;在回收站内恢复、彻底删除,或使用 清空回收站 一次性永久清除。
- 行内操作:继续会话、运行中时可 暂停、统计、文件夹、删除;顶部支持全选与批量删除。
- 拖拽工作区标题调整顺序;悬停工作区标题可置顶、重命名或删除工作区分组。
通用设置:压缩阈值¶
- 设置 → 通用设置(General)。
- 调整「上下文压缩阈值」滑块或输入框(17%–90%),保存后立即生效。
侧边栏删除与强制删除¶
- 会话行悬停「…」→ 删除本对话。
- 在原生确认框中确认后移入回收站。
- 若宿主返回错误,在同一弹窗中选择 强制删除(仍进回收站,除非会话正在运行)。
对话顶部抽屉¶
从 对话管理 打开右侧抽屉,行内 更多 收纳统计、文件夹、新聊天中继续;底部同样可管理已归档与回收站。
适用场景与注意¶
适合谁:长期在 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