Bundle
dsh-session-management
Session management for DSH Web: archive / unarchive / truly delete chats / export data (bilingual). 会话管理:归档 / 取消归档 / 真正删除聊天记录 / 导出数据(中英双语)。
- Source
- cokiscarazo-rgb
- stars
- 4 stars
- License
- MIT
- Updated
- Updated 7 days ago
Readme
# dsh-session-management · DSH 会话管理
中文 | [English](README.en.md)

dsh-session-management 是 DeepSeek Harness(DSH)Web 的会话管理插件,**补足官方会话管理的缺失能力**。在「设置」面板内集中管理聊天会话:归档、取消归档、**真正删除本地聊天记录**、批量导出数据。支持中英双语,随 DSH 语言设置即时切换。

## 为什么需要这个插件
DSH Web 官方目前不提供完整的会话管理,长期使用会遇到三个痛点:
- **会话无法真正删除**:官方只提供「归档」,归档只是把会话从侧边栏隐藏,聊天记录仍完整保留在磁盘上,没有任何入口可以真正删掉它们;
- **归档后无法恢复**:官方没有「取消归档」功能,会话一旦归档就再也找不回来,只能「看不见但永远存在」;
- **导出只能逐个手动**:官方导出一次只能导出一个会话,会话攒多了要逐个点击很多次。
本插件逐一补齐:**真删**(删除磁盘上的会话日志文件)、**恢复**(单个 / 按组批量取消归档)、**批量导出**(与官方格式完全一致的 ZIP)。
| 能力 | DSH 官方 | 装本插件后 |
| --- | --- | --- |
| 归档会话 | 支持 | 支持,另有一键全量归档 |
| 取消归档 | 无入口 | 单个 / 按工作区 / 按月份批量 |
| 真正删除聊天记录 | 仅隐藏,不删除 | 删除磁盘日志文件,运行中会话自动跳过 |
| 导出会话数据 | 单个手动导出 | 一键批量导出,格式与官方字节级兼容 |
## 功能
### 已归档的聊天管理
点击「管理」打开管理窗口,两种分组视图随心切换:
- **按工作区**:每个工作区一个分组,组内按时间排序;
- **按月份**:按年月分组(`2026年8月`、`2026年7月`…),月份自动携带年份,跨年归档一目了然。
支持按创建日期 / 更新日期排序(升序 / 降序)、分组折叠与一键展开、按组批量操作——取消归档该组、**删除该组已归档的聊天**(仅作用于该组的归档会话,不影响未归档记录)。
| 分组与排序 | 组头批量操作 |
| --- | --- |
|  |  |
### 归档所有聊天
一键归档全部会话:记录完整保留,仅从侧边栏列表隐藏,随时可在管理窗口取消归档。
### 删除所有聊天
**真正删除**本地聊天记录:删除磁盘上的会话日志文件(`session.jsonl` / `session.jsonl.zstd` 及对偶文件),并同步清理工作区记账与归档标记。运行中的会话自动跳过,防止日志被写回。
### 导出数据
一键批量导出全部会话:自动遍历所有根会话(含其子代理会话),逐个生成与官方格式一致的 ZIP 归档(`dsh-session-<id>.zip`),无需再一个个手动点击。
- **内容完整**:会话日志、子代理会话与媒体附件一并打包;
- **格式兼容**:字节级兼容官方导出格式,可直接用官方工具查看或迁移;
- **删除前备份**:可先「导出数据」再「删除所有聊天」,清理的同时留住需要的数据。
### 中英双语
界面文案随「设置 → 通用设置 → 语言」即时切换,中英文档与界面同步维护。
## 安装
DSH 插件通过 **profile** 挂载(`dsh web` 对应 `web` profile)。安装后需**重启 `dsh web`** 生效。
**前置要求**:Node.js(含 npm);`dsh plugin` 依赖 `pnpm`(缺失时见下方「常见问题」)。
### 方式一:从 npm 安装(推荐)
插件已发布到 npm(`dsh-session-management`)。安装命令取决于你如何运行 dsh:
- **全局安装 dsh**(`dsh` 命令可直接使用):
```sh
dsh plugin --profile web add dsh-session-management
```
- **通过 npx 运行 dsh**(未全局安装,平时用 `npx @deepseek-ai/dsh web` 启动):
```sh
npx -y @deepseek-ai/dsh plugin --profile web add dsh-session-management
```
装完重启 `dsh web`,打开「设置」即可看到「会话管理」入口。升级:将 `add` 换成 `update`(非全局安装时同样加 `npx -y @deepseek-ai/dsh` 前缀)。
> **版本提示**:若 npm/pnpm 的元数据缓存或镜像源同步延迟,导致安装到旧版本(提示 `declares no dsh.bundle`),请指定最新版本号重装:
>
> ```sh
> npx -y @deepseek-ai/dsh plugin --profile web add dsh-session-management@<最新版本号>
> ```
>
> 查询最新版本:`npm view dsh-session-management version`。
### 方式二:从 GitHub 仓库安装
```sh
git clone https://github.com/cokiscarazo-rgb/dsh-session-management.git
cd dsh-session-management
# Windows(PowerShell)
powershell -ExecutionPolicy Bypass -File scripts/install.ps1
# macOS / Linux
bash scripts/install.sh
```
安装脚本幂等,重复执行安全。它会完成两步:
1. 复制插件包到 `$DSH_HOME/profiles/node_modules/dsh-session-management/`;
2. 在 `$DSH_HOME/profiles/web/cordis.patch.yml` 注册 loader 条目:
```yaml
- insert:
- id: dsh-session-management
name: dsh-session-management
```
### 验证与卸载
安装成功后重启 `dsh web`,打开「设置」出现「会话管理」即生效;也可用 `dsh --profile web --dump-config`(非全局安装加 `npx -y @deepseek-ai/dsh` 前缀)确认插件配置层已挂载。若没有新入口,多半是安装后没有重启。
卸载:`dsh plugin --profile web remove dsh-session-management`(非全局安装加 `npx -y @deepseek-ai/dsh` 前缀),重启 `dsh web`;手动安装的则移除 `$DSH_HOME/profiles/node_modules/dsh-session-management/` 目录并删除 `cordis.patch.yml` 中的 insert 条目。
### 常见问题
- **提示 `'pnpm' 不是内部或外部命令` / `pnpm: command not found`**:`dsh plugin` 内部依赖 pnpm,先安装它:
```sh
npm install -g pnpm
```
或使用 Node 自带的 corepack:`corepack enable pnpm`。验证:`pnpm --version`。
- **安装后仍是旧版本 / 提示 `declares no dsh.bundle`**:npm/pnpm 元数据缓存或镜像源同步延迟所致。先确认 registry 源:`pnpm config get registry`(若为 npmmirror 等镜像,可切回官方源 `pnpm config set registry https://registry.npmjs.org/`),然后指定版本号重装(见上「版本提示」)。
- **首次安装提示 `ERR_PNPM_IGNORED_BUILDS`**:pnpm 拒绝依赖的构建脚本,按提示把相关包加入 profile 的 `pnpm-workspace.yaml` `allowBuilds` 后重新执行即可。
- **设置里没有「会话管理」入口**:确认已重启 `dsh web`;再确认 `$DSH_HOME/profiles/web/cordis.patch.yml` 中存在 `id: dsh-session-management` 的 insert 条目。
## 工作原理与边界
- **归档**:基于官方 `workspaceRegistry.archiveSession`,归档集持久化于 workspace 域,客户端经官方帧机制自动同步;**取消归档**为官方未提供的操作,插件直接更新 workspace 域归档集合,变化经官方 `domain/changed` 事件自动广播。
- **删除即真删**:定位会话日志文件(含 zstd 对偶文件)后经系统命令删除,随后清理工作区记账与归档标记;搜索索引由官方 SQLite 自动 reconcile 清理。
- **边界说明**:
- 运行中的会话拒绝删除(避免日志被重新写回);
- 聊天中的图片附件采用 content-addressed 存储、可能被多会话共享,删除会话不会连带删除附件;
- 子代理会话为独立记录,删除父会话不级联删除(可单独删除)。
## License
[MIT](LICENSE) © cokiscarazo-rgb
Install
dsh plugin --profile web add github:cokiscarazo-rgb/dsh-session-management#ae5258e3e780d10c468268682169e7e5fe01e45b
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-session-management from the hub