🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话批量管理 21hbguo/dsh-session-batch-manager

DeepSeek Harness
21hbguo50 天前有提交已提供中文文档扫描:含敏感能力

批量归档、恢复或删除本机会话记录

30.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 21hbguo/dsh-session-batch-manager
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/11/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 50 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✗npm 包@dsh-external/dsh-session-batch-manager(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/15 11:40:30

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 删除本地文件
    src/index.ts:187
    await unlink(location.path)
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 批量选择会话
  • 归档会话
  • 恢复或删除会话

README

由 DeepSeek 最新模型翻译生成
dsh-session-batch-manager DeepSeek Harness (DSH) Web GUI 插件:在侧边栏与设置页提供「批量选择会话」面板,批量归档、批量恢复(unarchive)、批量删除会话。 批量选择会话面板 ✨ 功能特性 - 🗂️ 双入口共享面板:侧边栏底部「☑ 批量选择」按钮(主入口)+ 设置页「会话管理」区块(补充入口),打开同一覆盖面板 - 📊 全量会话列表:列出本机全部会话(含已归档与冷会话),标题栏实时统计 共 N · 归档 M · 运行中 K - 🔍 视图切换 + 搜索:全部 / 未归档 / 已归档 / 运行中 互斥分段按钮(默认「未归档」);按标题 / cwd 子串过滤(大小写不敏感),与视图叠加 - ☑️ 多选与全选:checkbox 逐行勾选 + 全选(勾选态按当前可见行计算,切换视图保留选中集) - 📦 批量归档:只作用于「选中 ∩ 未归档」,逐条调用官方归档 RPC,幂等,可恢复 - ♻️ 批量恢复:只作用于「选中 ∩ 已归档」,调用插件自实现端点移出归档集合,幂等、非破坏性、无确认弹窗 - 🗑️ 批量删除:二次确认后物理删除会话日志文件(不可恢复);运行中 / subagent 会话自动跳过并汇总原因
展开完整文档(README 剩余 1 节)
dsh-session-batch-manager

DeepSeek Harness (DSH) Web GUI 插件:在侧边栏与设置页提供「批量选择会话」面板,批量归档、批量恢复(unarchive)、批量删除会话。

批量选择会话面板

✨ 功能特性

- 🗂️ 双入口共享面板:侧边栏底部「☑ 批量选择」按钮(主入口)+ 设置页「会话管理」区块(补充入口),打开同一覆盖面板
- 📊 全量会话列表:列出本机全部会话(含已归档与冷会话),标题栏实时统计 共 N · 归档 M · 运行中 K
- 🔍 视图切换 + 搜索:全部 / 未归档 / 已归档 / 运行中 互斥分段按钮(默认「未归档」);按标题 / cwd 子串过滤(大小写不敏感),与视图叠加
- ☑️ 多选与全选:checkbox 逐行勾选 + 全选(勾选态按当前可见行计算,切换视图保留选中集)
- 📦 批量归档:只作用于「选中 ∩ 未归档」,逐条调用官方归档 RPC,幂等,可恢复
- ♻️ 批量恢复:只作用于「选中 ∩ 已归档」,调用插件自实现端点移出归档集合,幂等、非破坏性、无确认弹窗
- 🗑️ 批量删除:二次确认后物理删除会话日志文件(不可恢复);运行中 / subagent 会话自动跳过并汇总原因
- 🧩 零 UI 框架:面板为原生 DOM 渲染,仅触发器为 React 组件(slot 系统要求),运行时唯一外部依赖 react

📐 架构

┌─────────────── DSH Web GUI(浏览器) ───────────────┐ │ 侧边栏 footer action ─┐ │ │ 设置页「会话管理」区块 ─┼─► 批量选择覆盖面板 │ │ │ · 列表/视图/搜索/多选 │ │ │ · 归档 / 恢复 / 删除 │ │ 归档: api.workspace.archiveSession(官方 RPC) │ │ 删除/恢复: rpc.call('/session-batch', ...) │ └─────────────────────────┬───────────────────────────┘ │ connection 通用 RPC 通道(loopback) ┌─────────────────────────▼───────────────────────────┐ │ host(src/index.ts) │ │ POST /session-batch/delete │ │ · 运行中会话 → skipped/running │ │ · subagent 会话 → skipped/subagent │ │ · sessionPersistence.locate → fs.unlink(幂等) │ │ POST /session-batch/unarchive │ │ · workspace registry 私有写路径(与官方 │ │ archiveSession 同一持久化通道,幂等) │ └─────────────────────────────────────────────────────┘

- host(src/index.ts):注册 connection 通用 RPC 通道 /session-batch(端点 delete、unarchive,authority: loopback)。官方无删除会话 API,删除由本插件自实现;恢复(unarchive)同样无官方 RPC,通过 workspace registry 的私有写路径(enqueueOperation / requireState / setState)与官方 archiveSession 走同一持久化通道。
- client(src/client/index.ts):注册 sidebar.footer.action(主入口)与 settings.section(补充入口),渲染覆盖面板。wire 类型从 @deepseek-ai/dsh-client-connection/client type-only 导入(@deepseek-ai/dsh-api-remotes/client 的 d.ts 在本插件编译上下文跨包解析失败,类型会退化为 any)。

RPC 端点线格式

POST /session-batch/delete (connection 通用 RPC 通道,authority: loopback)
payload: { "sessionIds": string[] }
result: { "ok": true, "value": { results, deleted, skipped } }
| { "ok": false, "error": { code, message, details } }
results[i]: { sessionId, status: 'deleted' | 'skipped',
reason?: 'running' | 'subagent' | 'not-found' | 'no-location' | 'file-error',
message?: string }

POST /session-batch/unarchive (connection 通用 RPC 通道,authority: loopback)
payload: { "sessionIds": string[] }
result: { "ok": true, "value": { results, restored, skipped } }
| { "ok": false, "error": { code, message, details } }
results[i]: { sessionId, status: 'restored' | 'skipped',
reason?: 'not-archived', message?: string }

🚀 快速开始

前提

- 一个可运行的 DeepSeek Harness (DSH) 环境(插件运行在 DSH 进程内,依赖其 sessions / agents / connection / slot 等服务)
- 本机有 DSH 源码 checkout(编译期类型依赖来自 checkout 的 vendor 包与 packages/,npm 上不公开,因此必须用 checkout 构建)
- bash / node / npm

安装

方式一:注入器环境(推荐,免重启)

1. 构建(DSH_CHECKOUT 指向含 packages/ 的 DSH 源码目录)
DSH_CHECKOUT=/path/to/deepseek-harness bash scripts/build.sh

2. 在 DSH 注入器环境内注入 dev_inject_plugin /path/to/dsh-session-batch-manager

方式二:手动装配(无注入器工具时)

1. 构建:DSH_CHECKOUT=/path/to/deepseek-harness bash scripts/build.sh(产物在 lib/)
2. 把本目录作为 link: 依赖加入目标 profile 的 package.json,并加入 bundles 数组
3. 在目标 profile 的 node_modules 下为包名建立 junction/symlink,指向本目录
4. 重启 DSH

验证

1. 打开 DSH Web GUI
2. 侧边栏底部(设置入口上方)出现「☑ 批量选择」图标按钮;设置页出现「会话管理」区块
3. 点击任一入口打开批量选择面板:显示全部会话(标题 / 状态 / cwd),标题栏有统计
4. 勾选若干会话 → 点击 归档 (N):会话移入「已归档」视图;点击 恢复 (N):回到未归档;点击 删除 (N)(需二次确认):物理删除日志文件

排错表

| 现象 | 原因 | 解决 |
| 构建报 cannot locate the dsh checkout | 探测路径均无 packages/ 目录 | 显式设置 DSH_CHECKOUT 指向 DSH 源码 checkout(须含 packages/ 与 node_modules/.bin/tsc) |
| 构建报 tsc 找不到 @deepseek-ai/ 模块 | checkout 版本过旧或目录不完整 | 确认 checkout 是完整 DSH 源码仓库(含 vendor/ 与 packages/*),重跑 build.sh |
| 侧边栏 / 设置页无入口 | client 半区未注入,或运行在非 web 平台 | 确认注入成功(注入器清单可见本插件),确认 profile 的 client 平台为 web |
| 删除返回 internal 错误 | connection 服务缺席(host 日志有 connection service unavailable)或 RPC 通道未注册 | 确认 host 半区已注入;重启后重试 |
| unarchive 返回 internal | DSH 升级后 workspace registry 内部结构变更,私有写路径不可用 | 升级本插件到适配新版 DSH 的版本;归档集合不受影响 |
| 删除后列表仍显示该会话 | workspace 记账无官方移除 API,id 成为「幽灵 id」 | 属已知限制:重启 host 后不再出现 |

⚙️ 配置项

插件无运行时 Config 配置。

| 项 | 类型 | 默认值 | 说明 |
| 环境变量 DSH_CHECKOUT | string | 自动探测 $HOME/dsh-harness、$HOME/dsh、$HOME/.dsh/dsh-harness | 构建期:DSH 源码 checkout 路径(须含 packages/) |
| RPC 通道 | /session-batch | — | connection 通用 RPC 通道,端点 delete / unarchive,authority: loopback |
| 侧边栏入口 | sidebar.footer.action | order 10 | 主入口,仅图标按钮 |
| 设置页入口 | settings.section | order 50,label「会话管理」 | 补充入口 |

🔐 安全说明

- 删除不可恢复:批量删除物理移除会话 JSONL 日志文件(fs.unlink),面板有二次确认(window.confirm)
- 运行中 / subagent 会话保护:批量删除自动跳过这两类会话,面板汇总展示跳过原因
- RPC 通道仅限回环:/session-batch 通道以 authority: loopback 注册,不接受外部来源调用
- 无凭据处理:插件不读取、不存储任何 API key / token
- 无遥测:插件不发起任何外部网络请求,不上报使用数据

❓ 常见问题

归档后的会话怎么恢复?
面板切到「已归档」视图,勾选会话后点「恢复 (N)」——只移出归档集合,不触碰文件,非破坏性。

删除的会话还能找回吗?
不能。删除是物理移除日志文件(幂等:文件已不存在也按已删除计)。建议删除前先归档。

为什么某些会话删除时被跳过?
运行中会话(避免破坏活跃状态)与 subagent 会话(子代理会话)被保护性跳过,面板会展示每个原因的跳过数量。

为什么删除后列表里还有这个会话?
workspace 记账(workspace.sessionIds / archivedSessionIds)无官方移除 API,删除后 id 保留为「幽灵 id」;重启 host 后列表不再出现。归档集合中的幽灵 id 可直接用「恢复」清除(不校验会话存在性)。

删除会清理目录和记账吗?
不会。仅物理删除 JSONL 日志文件本身;会话所在目录与 workspace 记账保留(见「已知限制」)。attached 空闲会话删除文件后,若后续事件 flush 可能重建文件,建议只对已归档 / 冷会话执行删除。

没有持久化后端时能删吗?
不能定位日志文件时会标记 skipped/not-found 或 skipped/no-location,不执行删除。

📄 License
BSD-3-Clause © 2026 21hbguo
预览分享卡片长什么样 ↓21hbguo/dsh-session-batch-manager
分享 · DeepSeek Harness Hub
21hbguo/dsh-session-batch-manager

批量归档、恢复或删除本机会话记录

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部