🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

SunshineR04/dsh-session-manager

DeepSeek 客户端兼容 / 相关生态spec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

DSH 插件:彻底删除会话永久物理删除,回收磁盘,配套一个跨工作区的

基本兼容但装前注意:npm 同名包「dsh-session-manager」归属 hkkz9522/dsh-session-manager,装到的可能不是本插件 · 最近上游提交 2026/9/25 · 已提供中文文档

DeepSeek Harness(DSH)插件:管理已归档会话——列出、恢复、永久删除;设置页面 + 会话上下文菜单中的红色删除项

综合分
35.8
GitHub 分
35.8
用户评分
—
★ Stars
1
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/SunshineR04/dsh-session-manager.git
信任档位:已验证本站已于 1 天前真实安装成功(L4 · 真实安装)
是什么
生态插件(可安装,未声明 dsh 能力)
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 0 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/24
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/25(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-session-manager @ 0.5.1
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

npm 同名包「dsh-session-manager」归属 hkkz9522/dsh-session-manager,装到的可能不是本插件

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/21 23:53:25

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-session-manager

DSH 插件:彻底删除会话(永久物理删除,回收磁盘),配套一个跨工作区的
已归档会话汇总列表,以及会话三点菜单里的红色「彻底删除」项。

官方已经做了什么,本插件补什么

DeepSeek Harness 从不删除会话文件。 官方的删除工作区文案写得很直白:
「这只会把「{name}」从工作区列表移除。文件夹和会话日志都会保留。它的
会话会出现在未分组下。」 于是一个长期使用的安装会为每段对话永久保留一个
会话目录,没有任何回收磁盘的入口。

归档/恢复这半边已经不再是缺口。 从 dsh 0.1.7 起,官方自带三点菜单里的
归档与取消归档、侧栏的显示已归档 / 仅显示已归档视图筛选、撤销 toast,
以及一道准入闸门(归档会话及其子代理谱系会被阻止继续执行模型步骤)。请直接
用官方那套 —— 本插件不再试图替代它们。

| 能力 | 官方(dsh 0.1.7) | 本插件 |
| --- | --- | --- |
| 归档 / 取消归档 | ✅ 三点菜单,停止工作进行中任务的确认,撤销 toast | ✅ |
| 找到已归档会话 | ✅ 侧栏显示已归档筛选 | ✅ 所有工作区汇成一张列表 |
| 删除会话文件 | ❌ 从不 | ✅ 红色彻底删除 |
| 批量操作 | ❌ | ✅ 全选 + 一次确认批量删除 |

每次删除都是直接物理删除,没有备份层。

功能

1. 设置页:设置 → 会话管理

- 列出全部已归档会话:标题、所属工作区、项目目录、更新时间、运行状态
- 每个会话提供 恢复(回到归档前在工作区中的位置)和红色 彻底删除
- 全选 + 批量删除:勾选若干行(或表头全选框)后一次确认删除全部选中
会话。流程串行且容错——单个失败会完整列出原因而其余照常删除;正在运行
任务的会话会被跳过(确认框会先告知数量);每次批量给出统一结果:全部成功、
部分失败或全部因运行中被拒绝
- 删除前弹出破坏性确认框——每次删除都是直接物理删除,没有备份层
- 数据来自官方的 session / workspace 客户端 store,实时响应,无需手动刷新

2. 会话三点菜单:红色的「彻底删除」

左侧会话列表中,鼠标悬停会话行 → 右侧 ⋯ 菜单,在原有 重命名 / 分叉会话 /
归档会话 下方新增红色「彻底删除」项,点击后同样弹出确认框。

该行是官方插槽 sidebar.workspaces.session.menu.item 里的一个普通条目
(id session-manager-delete,order 500),用与内置 置顶 / 重命名 / 分叉 /
归档 行相同的 MenuItemButton 原语渲染 —— 危险红、分隔线、键盘行为都直接
来自官方菜单本身,而不是对它的样式模仿。

该插槽自 dsh 0.1.7-alpha.1 起提供。在此之前,这一行只能靠观测 DOM +
React fiber 树反查会话来注入,于是官方菜单任何标记变化都可能让它静默消失
—— 0.1.7-rc.2 给每个菜单项加上快捷键提示,就正好如此。

3. Agent 工具(模型可直接调用)

| 工具 | 说明 |
| --- | --- |
| session_list_archived | 列出已归档会话(JSON) |
| session_restore_archived | 按 id 恢复(可逆操作,无需确认) |
| session_delete_permanently | 按 id 彻底删除;必须 confirm: true;拒绝删除正在运行的会话 |

安装

需要 dsh 0.1.7 这条线(含 rc 版本)。它的两个硬依赖都自 0.1.7 起提供:
尺寸中性的产品图标,以及三点菜单那一行所注册的
sidebar.workspaces.session.menu.item 插槽。在更旧的版本上,三点菜单不会挂载
这一行,删除只剩下设置页一条路径。

git clone https://github.com/SunshineR04/dsh-session-manager.git
dsh plugin --profile  add "file:"

dsh plugin add 会通过 pnpm 安装并自动把包加入 dsh.profile.bundles;
本包的 cordis.patch.yml(bundle layer)自动挂载插件行,无需手改配置。
安装后需重启 dsh 桌面端(新 bundle 不会热加载)。

也可以在 profile 的 cordis.patch.yml 手工挂载(不推荐,bundle 通道更省事):

- insert:
- id: session-manager
name: dsh-session-manager

删除语义(重要)

「彻底删除」按经过设计的顺序执行:

1. 仅已打开的会话:在只读存在性检查之后、任何变更之前先写入持久
的待删标记(崩溃安全——半途崩溃时下次启动总有标记可扫);从该队列
文件读回的 id 会先通过格式校验才允许触达文件系统。
2. 登记清理(持久且广播):从所属工作区的 sessionIds 摘除
(detachSession),再从全局归档集移除。摘除时并不只信任工作区
sessionIds 的过滤视图——注册表的 canonical-cwd 头索引一旦失准,
getter 会把该 id「隐身」,导致 detach 被跳过、已删会话以「未分组」
身份复活(0.1.4 及之前的真实 bug),因此同时对照工作区的原始记录兜底。
3. 删除会话文件:~/.dsh/sessions///(
session.jsonl.zstd 日志本体)。目录解析走三级兜底:注册表头 +
persistence locate → persistence 头清单 → sessions 根目录原始扫描
(目录名与已校验的会话 id 精确相等),头接缝失准不再会静默漏删。
4. 删除元数据缓存:~/.dsh/storages/session_projcache/sessions/.json
及其 .bak-* 检查点。
5. 广播官方 api-session/removed 事件:所有已连接客户端的会话列表
立即移除该会话。(宿主自身只在 live 会话 dispose 时才发这个事件,
冷删除永远等不到。)

搜索索引(SQLite)会随源文件消失自动对账,无需处理;附件存储是内容寻址的,
保留不误伤其它会话,也不做删除。

- 每次删除都是直接物理删除——没有备份层,确认框请看清会话标题。
- 删除已打开的会话同样立即生效:登记、文件、元数据当场清除(后续
flush 不会复活任何东西——append 按路径打开日志,从不重建已删目录)。
由于 dsh 没有公开的「关闭会话」API,内存中的副本会存续到所属界面作用域
消失为止;此时该 id 以墓碑形式保留在归档集中——工作区浏览器与所有
列表都会继续隐藏它,重启 dsh 后自动完成收尾清理。有运行任务的会话会被
拒绝;allowDeleteRunning 只跳过这道拒绝——强制删除同样打墓碑并入队收尾。
- 待清理横幅:设置页顶部只列出仍可操作的条目。文件仍在盘上的
条目(例如删除中途崩溃的残留)提供「取消删除」,取消时先清墓碑、后摘
标记——注册表失败时条目完整保留、可安全重试。文件已删净的条目(打开
会话的正常删除)已无任何可执行动作,因此不再逐行占据横幅,而是折叠为
一行「已彻底删除 · 重启后自动清理」汇总(附展开按钮可查看具体 id)——
这也不仅是 UI 隐藏:通过 RPC/工具取消它同样会被宿主以
session/data-gone 拒绝(解除墓碑只会让无文件的内存残留以「未分组」复活)。
- 恢复操作只从归档集移除 id —— 归档本身保留工作区 sessionIds 槽位,
因此恢复后会话回到归档前的原位置。处于删除队列中的 id 会被以
session/pending 拒绝(文件仍在盘上时可先「取消删除」)——恢复它只会
暴露一个无文件的空壳。

配置

| 字段 | 默认 | 说明 |
| --- | --- | --- |
| sessionListLimit | 500 | 单次列表返回上限 |
| allowDeleteRunning | false | 强制删除正在运行任务的会话(仅跳过拒绝——强制删除同样打墓碑并入队收尾;危险) |
| toolDeleteRequiresConfirm | true | Agent 删除工具强制 confirm: true |
| menuDeleteAvailable | true | 是否在三点菜单挂红色删除项 |

开发

pnpm install
pnpm test   # 语法检查 + 宿主单测 + 客户端渲染冒烟测试

渲染测试(test/client.render.test.mjs)用 React + jsdom 真实挂载设置页
组件,能抓住宿主单测覆盖不到的 UI 崩溃(如 hooks 顺序 / 变量提升错误)。

接入验证:新建临时 profile 挂载本插件后

dsh --profile  --dump-config    # 检查 bundle 组装
dsh --profile  --help           # 完整启动(headless 模板)

浏览器端到端验证(隔离 DSH_HOME,不碰真实数据;需要本机 Chrome 与 puppeteer-core):

cp scripts/e2e-seed.local.example.json scripts/e2e-seed.local.json
^ 填入你自己的会话/工作区数据(已 gitignore,不会提交)
node scripts/e2e-seed.mjs  ~/.dsh          # 1. 播种隔离测试 HOME
2. 在该 HOME 下建 profile 装本插件,再启动测试 web 实例。
⚠ 桌面版 dsh 启动器把 DSH_HOME 写死为真实 home,因此前缀
DSH_HOME= 并不能隔离(已实测:profile 会落到真实 home)。
改为直接调用 CLI 入口——plugin add 已实测通过,serve 参数同形:
ELECTRON_RUN_AS_NODE=1 DSH_HOME= "" --expose-internals \
"/lib/desktop-cli.js" plugin --profile sm-test add
ELECTRON_RUN_AS_NODE=1 DSH_HOME= "" --expose-internals \
"/lib/desktop-cli.js" --profile sm-test --port 43123 --no-open
node scripts/e2e-check.mjs   # 3. 只读检查:三点菜单/设置页
node scripts/e2e-mutations.mjs         # 4. 闭环:恢复→归档→彻底删除

参考项目

本插件在开发前调研了以下 GitHub 项目(其中部分可直接在本地
~/.dsh/profiles/desktop/node_modules 中对照源码):

- omdsh-dev/DSH-better-sidebar ——
dsh 社区插件标杆:bundle patch、client 注入、settings.section 注册、
/sidebar/api 宿主路由,都是本插件结构的直接参照。
- ysr666/dsh-vision-router ——
同类「设置页 + 宿主 RPC + 手写无打包 client」插件,client 模块骨架完全照此。
- deepseek-ai/deepseek-harness ——
dsh 本体:dsh-api-workspace-controller(archiveSession / follow 流)、
dsh-api-session-controller、dsh-session-persistence-jsonl(目录编码、
zstd 日志)、dsh-workspace(归档集语义与恢复定位)等包是本文档所有行为
结论的依据。
- koishijs/koishi —— dsh 的 Cordis 插件
运行时上游,ctx.effect / ctx.inject / patch 体系的理解来源。
- tmux-plugins/tmux-resurrect ——
概念参照:终端会话的保存/恢复/清理产品形态。
- opencode-ai/opencode —— 概念参照:
编码代理的会话持久化与恢复入口设计。

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群