dsh-session-manager 0.5.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.zh.md CHANGED
@@ -1,137 +1,163 @@
1
- # dsh-session-manager — DeepSeek Harness 会话管理器
2
-
3
- [English](README.md) | 中文
4
-
5
- [![npm version](https://img.shields.io/npm/v/dsh-session-manager)](https://www.npmjs.com/package/dsh-session-manager)
6
- [![GitHub](https://img.shields.io/badge/GitHub-仓库-blue)](https://github.com/hkkz9522/dsh-session-manager)
7
- [![CI](https://github.com/hkkz9522/dsh-session-manager/actions/workflows/ci.yml/badge.svg)](https://github.com/hkkz9522/dsh-session-manager/actions/workflows/ci.yml)
8
- [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
9
-
10
- ## 0 简介
11
-
12
- DSH Web 会话管理:删除、归档、跨工作区移动、迁移预设;收藏、待看、搜索、排序、设置优先级、添加标签和备注;批量处理。欢迎至 GitHub 提意见。
13
-
14
- ## 1 功能
15
-
16
- ### 1.1 会话生命周期管理
17
-
18
- - **删除**:不可逆操作,UI 始终要求二次确认。subagent 会话和尚未落盘的空白会话占位不能删除。
19
- - **归档 / 移出归档**:把会话移出或移回主列表,不删除磁盘内容。
20
- - **移动至工作区**:跨工作区移动时保留历史、标题、归档状态和派生会话关系,同时把 `cwd` 重写为目标工作区,并就地更新 live writer 的 header,使挂起的工具调用继续落到新路径。
21
- - **迁移 Agent 预设**:原预设被改名或删除导致会话无法恢复时,可修复该会话。迁移会就地重写最后一条 `agent-preset/selected` 事件(若从未记录则修改会话 header),不改动历史消息。
22
-
23
- ### 1.2 会话快捷管理
24
-
25
- - **收藏 / 待回看**:长期标记和手动提醒;不会随归档或会话结束自动清除。
26
- - **搜索**:按标题、会话 ID、备注、标签不区分大小写匹配,自动去除首尾空格,不读取聊天历史。
27
- - **筛选与排序**:工作区(全部 / 未分组 / 具体)与归档状态(全部 / 未归档 / 已归档)可叠加;可叠加收藏 / 待回看、标签和优先级筛选;排序支持最近更新(默认)、最早更新、最新创建、最早创建以及**优先级(1 → 5)**。
28
- - **优先级**:下拉 **1 最高、2 高、3 普通、4 低、5 最低**,**默认 3(普通)**;旧数据中的 `null` 归一化为 3。
29
- - **标签 / 备注**:每会话最多 20 个标签(每个 ≤ 32 字符)、备注最多 2000 字符。英文 `,` 与中文 `,` 都是分隔符,首尾空白被去除,重复标签按大小写不敏感合并。
30
- - **AI 整理(手动、可选)**:标签 / 备注编辑窗口内的 **复制 Prompt** 把结构化提示复制到剪贴板,**导入** 解析剪贴板 JSON(可识别 Markdown 代码块、对话包裹、智能引号、孤立反斜杠和开头 BOM),按相同规则校验后填入字段;两者都不会自动调用模型。
31
- - 标记保存在 `dsh-session-manager/annotations.v1.json`,按会话 ID 关联;同源浏览器标签页通过 `BroadcastChannel` 同步;保存可跨进程崩溃恢复,版本冲突会提示"载入最新内容"。
32
-
33
- ### 1.3 批量处理
34
-
35
- - **批量模式入口**:在会话管理窗口顶部点击 **批量处理** 切换按钮,行左侧出现复选框,工具栏出现 **全选当前筛选 / 清空选择** 和 **批量按钮区**;退出批量模式会清空当前选中。
36
- - **批量按钮区** 列出所有批量动作:
37
- - **标记切换**:**归档 / 取消归档 / 收藏 / 取消收藏 / 待回看 / 取消待看**。
38
- - **变更操作**:**添加标签 / 清空标签 / 设置优先级 / 移动至工作区 / 迁移预设 / 删除会话**。
39
- - **执行流程**:非破坏性操作(归档 / 取消归档 / 收藏 / 取消收藏 / 待回看 / 取消待看 / 添加标签 / 清空标签 / 设置优先级 / 移动至工作区 / 迁移预设)立即执行,结果按会话逐条展示在 **结果对话框** 的 **成功 / 失败 / 跳过** 分组里,并提供 **重试失败项** 一键把失败 ID 重新加入选中;破坏性操作(**删除会话**)先弹 **预览对话框** 列出受影响的会话,再显示进度条,最后给出逐条结果。
40
-
41
- ## 2 UI入口
42
-
43
- ### 2.1 标题栏入口
44
-
45
- 标题栏右侧对**当前会话**提供:**归档 / 移出归档**、**标签 / 备注**、**移动至工作区**、**删除会话**。
46
-
47
- ### 2.2 会话管理入口与界面
48
-
49
- 从 DSH 侧边栏底部进入 **会话管理**,可浏览全部会话、切换工作区、按标题 / ID / 备注 / 标签搜索、应用筛选与排序,并对每条会话执行 **打开 / 归档 / 移出归档 / 标签 / 备注 / 移动 / 迁移预设 / 删除** 操作。窗口顶部承载工作区选择、归档筛选、收藏 / 待回看、标签、优先级筛选与排序控件,以及匹配 / 总数计数和"重置筛选"。
50
-
51
- ### 2.3 批量管理入口
52
-
53
- 会话管理窗口顶部的 **批量处理** 按钮即是入口:点一下进入批量模式,行左侧出现复选框,工具栏出现 **全选当前筛选 / 清空选择** 和 **批量按钮区**;再点一次退出批量模式。
54
-
55
- ## 3 安装
56
-
57
- ### 3.1 从官方插件管理入口安装
58
-
59
- 进入 DSH 应用内的 **插件管理**,搜索 `dsh-session-manager` 并安装。
60
-
61
- ### 3.2 从 dsh-market 安装
62
-
63
- ```powershell
64
- dsh plugin --profile web add npm:dsh-session-manager
65
- ```
66
-
67
- ### 3.3 从 GitHub 安装
68
-
69
- ```powershell
70
- dsh plugin --profile web add github:hkkz9522/dsh-session-manager
71
- ```
72
-
73
- 安装后重启 DSH Web;若浏览器仍加载旧的客户端代码,请使用 `Ctrl+Shift+R` 强制刷新。
74
-
75
- ### 3.4 本地开发 / 运行时注入
76
-
77
- ```text
78
- dev_inject_plugin {"dir": "<本仓库的绝对路径>"}
79
- ```
80
-
81
- ## 4 安全说明
82
-
83
- - **删除不可恢复**,UI 始终要求二次确认;删除前校验会话 ID、目录边界和工件 header,不允许通过路径穿越、符号链接或 junction 操作其他目录。
84
- - 移动和迁移预设保留 live session / agent;只有删除才会取消运行并释放会话。移动会更新保存的 cwd 和 live writer 的 header。
85
- - 会话管理列表隐藏 subagent 会话,移动接口也拒绝 subagent;尚未落盘的空白会话不能跨工作区移动。
86
- - 冷会话重写保留原工件格式(V1 / V2 / V3 / V4 都可读,绝不强制升级)。损坏或截断的 Zstd 日志、缺少完整尾行的 JSONL 会拒绝移动 / 重写,不会把部分历史当作完整日志保存。
87
- - 迁移预设按"备份 → 发布 → 回滚"分阶段处理。如果回滚失败,会保留恢复文件并在错误中报告路径;不要删除这些文件。
88
- - 启动扫描不完整时跳过工作区归属修复;完整扫描也不会清除仍在内存中或扫描期间新加入的会话。
89
- - 同一会话的插件写操作按顺序执行;请求体限制为 64 KiB。该队列不替代 DSH 自身的持久化写入协调。
90
-
91
- ## 5 兼容性
92
-
93
- | 插件版本 | 已验证 DSH 版本 |
94
- | ------ | ------------- |
95
- | 0.5.2 | v0.1.7-rc.1 |
96
- | 0.5.1 | v0.1.6-alpha.2 |
97
- | 0.4.11 | v0.1.5-rc.2 |
98
- | 0.4.10 | v0.1.5-rc.1 |
99
- | 0.4.9 | v0.1.5-rc.1 |
100
- | 0.4.7 | v0.1.5-rc.1 |
101
- | 0.4.6 | 0.1.3-alpha.2 |
102
- | 0.4.4 | 0.1.3-alpha.2 |
103
- | 0.4.1 | 0.1.3-alpha.2 |
104
- | 0.4.0 | v0.1.2-rc.1 |
105
- | 0.1.2 | v0.1.0-rc.7 |
106
- | 0.1.1 | v0.1.0-rc.7 |
107
- | 0.1.0 | v0.1.0-rc.7 |
108
-
109
- 运行时要求 Node.js 22.15+(22.x)或 24+,以提供内置 Zstd 支持。
110
-
111
- 本插件是 Cordis 插件,peer dependency 为 `cordis: ">=4.0.0-rc <5"`。
112
-
113
- ## 6 开发
114
-
115
- - `lib/index.js` 是 host 端 ESM 插件,`lib/client.js` 是 Web 客户端 bundle,无需构建步骤。
116
- - 提交修改前请运行:
117
-
118
- ```powershell
119
- npm run check
120
- npm test
121
- npm run check:package
122
- git diff --check
123
- ```
124
-
125
- 测试使用隔离临时目录和真实插件入口,不操作真实会话。CI 在 Windows / Linux、Node 22.15.0 / 24 上执行相同检查。
126
-
127
- 可选集成检查:在 DSH Web 已运行的测试环境中执行 `node scripts/smoke-test.mjs`;它会请求实际服务,不属于默认单元测试。
128
-
129
- 发布记录见 [CHANGELOG.md](CHANGELOG.md)。
130
-
131
- ## 7 致谢
132
-
133
- 感谢每一位安装和使用 dsh-session-manager 的用户,也感谢提交 Issue 与 Pull Request 帮助改进本插件的朋友们。本插件已被 [dsh-market](https://github.com/dsh-market/dsh-market) 和 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 收录。欢迎提出修改意见。
134
-
135
- ## 8 开源许可
136
-
137
- [MIT](LICENSE)
1
+ # dsh-session-manager — DeepSeek Harness 会话管理器
2
+
3
+ [English](README.md) | 中文
4
+
5
+ [![npm version](https://img.shields.io/npm/v/dsh-session-manager)](https://www.npmjs.com/package/dsh-session-manager)
6
+ [![GitHub](https://img.shields.io/badge/GitHub-仓库-blue)](https://github.com/hkkz9522/dsh-session-manager)
7
+ [![CI](https://github.com/hkkz9522/dsh-session-manager/actions/workflows/ci.yml/badge.svg)](https://github.com/hkkz9522/dsh-session-manager/actions/workflows/ci.yml)
8
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
9
+
10
+ ## 0 简介
11
+
12
+ DeepSeek Harness 会话管理插件:支持删除、归档、跨工作区移动、预设迁移、收藏、待回看、搜索、筛选、排序、优先级、标签、备注及批量操作。
13
+
14
+ 当前版本已在官方新版 DSH Web UI 与 Desktop 客户端完成实际测试;两种环境共用本插件的 Host 与客户端功能,具体安装方式见下文。
15
+
16
+ ## 1 功能
17
+
18
+ ### 1.1 会话生命周期管理
19
+
20
+ - **删除**:不可逆操作,UI 始终要求二次确认。subagent 会话和尚未落盘的空白会话占位不能删除。
21
+ - **归档 / 移出归档**:把会话移出或移回主列表,不删除磁盘内容。
22
+ - **移动至工作区**:跨工作区移动时保留历史、标题、归档状态和派生会话关系,同时把 `cwd` 重写为目标工作区,并就地更新 live writer 的 header,使挂起的工具调用继续落到新路径。
23
+ - **迁移 Agent 预设**:原预设被改名或删除导致会话无法恢复时,可修复该会话。迁移会就地重写最后一条 `agent-preset/selected` 事件(若从未记录则修改会话 header),不改动历史消息。
24
+
25
+ ### 1.2 会话快捷管理
26
+
27
+ - **收藏 / 待回看**:长期标记和手动提醒;不会随归档或会话结束自动清除。
28
+ - **搜索**:按标题、会话 ID、备注、标签不区分大小写匹配,自动去除首尾空格,不读取聊天历史。
29
+ - **筛选与排序**:工作区(全部 / 未分组 / 具体)与归档状态(全部 / 未归档 / 已归档)可叠加;可叠加收藏 / 待回看、标签和优先级筛选;排序支持最近更新(默认)、最早更新、最新创建、最早创建以及**优先级(1 → 5)**。
30
+ - **优先级**:下拉 **1 最高、2 高、3 普通、4 低、5 最低**,**默认 3(普通)**;旧数据中的 `null` 归一化为 3。
31
+ - **标签 / 备注**:每会话最多 20 个标签(每个 ≤ 32 字符)、备注最多 2000 字符。英文 `,` 与中文 `,` 都是分隔符,首尾空白被去除,重复标签按大小写不敏感合并。
32
+ - **AI 整理(手动、可选)**:标签 / 备注编辑窗口内的 **复制 Prompt** 把结构化提示复制到剪贴板,**导入** 解析剪贴板 JSON(可识别 Markdown 代码块、对话包裹、智能引号、孤立反斜杠和开头 BOM),按相同规则校验后填入字段;两者都不会自动调用模型。
33
+ - 标记保存在 `dsh-session-manager/annotations.v1.json`,按会话 ID 关联;同源客户端实例通过 `BroadcastChannel` 同步;保存可跨进程崩溃恢复,版本冲突会提示"载入最新内容"。
34
+
35
+ ### 1.3 批量处理
36
+
37
+ - **批量模式入口**:在会话管理窗口顶部点击 **批量处理** 切换按钮,行左侧出现复选框,工具栏出现 **全选当前筛选 / 清空选择** 和 **批量按钮区**;退出批量模式会清空当前选中。
38
+ - **批量按钮区** 列出所有批量动作:
39
+ - **标记切换**:**归档 / 取消归档 / 收藏 / 取消收藏 / 待回看 / 取消待看**。
40
+ - **变更操作**:**添加标签 / 清空标签 / 设置优先级 / 移动至工作区 / 迁移预设 / 删除会话**。
41
+ - **执行流程**:非破坏性操作(归档 / 取消归档 / 收藏 / 取消收藏 / 待回看 / 取消待看 / 添加标签 / 清空标签 / 设置优先级 / 移动至工作区 / 迁移预设)立即执行,结果按会话逐条展示在 **结果对话框** 的 **成功 / 失败 / 跳过** 分组里,并提供 **重试失败项** 一键把失败 ID 重新加入选中;破坏性操作(**删除会话**)先弹 **预览对话框** 列出受影响的会话,再显示进度条,最后给出逐条结果。
42
+
43
+ ## 2 UI入口
44
+
45
+ ### 2.1 标题栏入口
46
+
47
+ 标题栏右侧对**当前会话**提供:**归档 / 移出归档**、**标签 / 备注**、**移动至工作区**、**删除会话**。
48
+
49
+ ### 2.2 会话管理入口与界面
50
+
51
+ 从 DSH 侧边栏底部进入 **会话管理**,可浏览全部会话、切换工作区、按标题 / ID / 备注 / 标签搜索、应用筛选与排序,并对每条会话执行 **打开 / 归档 / 移出归档 / 标签 / 备注 / 移动 / 迁移预设 / 删除** 操作。窗口顶部承载工作区选择、归档筛选、收藏 / 待回看、标签、优先级筛选与排序控件,以及匹配 / 总数计数和"重置筛选"。
52
+
53
+ ### 2.3 批量管理入口
54
+
55
+ 会话管理窗口顶部的 **批量处理** 按钮即是入口:点一下进入批量模式,行左侧出现复选框,工具栏出现 **全选当前筛选 / 清空选择** 和 **批量按钮区**;再点一次退出批量模式。
56
+
57
+ ## 3 安装
58
+
59
+ ### 3.1 从插件安装
60
+
61
+ 在 DSH 的 **插件** 中添加插件,搜索 `dsh-session-manager` 并安装。该方式适用于官方 Web UI 和 Desktop 客户端。
62
+
63
+ ### 3.2 从第三方插件市场安装
64
+
65
+ 本插件已被 [dsh-market](https://github.com/dsh-market/dsh-market) 和 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 收录。
66
+
67
+ ### 3.3 通过 CLI 安装至 Web profile
68
+
69
+ 从 npm 安装:
70
+
71
+ ```powershell
72
+ dsh plugin --profile web add npm:dsh-session-manager
73
+ ```
74
+
75
+ 从 GitHub 安装:
76
+
77
+ ```powershell
78
+ dsh plugin --profile web add github:hkkz9522/dsh-session-manager
79
+ ```
80
+
81
+ 安装后重启 DSH Web。若浏览器仍加载旧的客户端代码,可使用 `Ctrl+Shift+R` 强制刷新。
82
+
83
+ > `desktop` profile 由官方 Desktop 客户端管理,普通 `dsh` CLI 不用于修改该 profile。Desktop 用户请通过客户端内的 **插件** 安装插件。
84
+
85
+ ### 3.4 本地开发 / 测试
86
+
87
+ #### Web profile
88
+
89
+ 通过 CLI 安装本地仓库:
90
+
91
+ ```powershell
92
+ dsh plugin --profile web add <本仓库路径>
93
+ ```
94
+
95
+ 本地仓库会作为插件 checkout 链接到当前 profile,适合直接修改源码并进行测试。
96
+
97
+ #### Desktop 客户端
98
+
99
+ 在官方 Desktop 客户端中打开 **插件**,使用本地仓库的绝对路径作为安装源。
100
+
101
+ 对于 Client 端代码,在 HMR 正常工作的情况下,保存修改后可以自动重新加载;若修改未立即生效,可重新加载当前界面或重启对应的 DSH Web / Desktop 客户端。
102
+
103
+ 修改插件依赖、`package.json`、bundle 配置等安装或加载相关内容后,建议重新安装插件或重启对应客户端。
104
+
105
+ ## 4 安全说明
106
+
107
+ - **删除不可恢复**,UI 始终要求二次确认;删除前校验会话 ID、目录边界和工件 header,不允许通过路径穿越、符号链接或 junction 操作其他目录。
108
+ - 移动和迁移预设保留 live session / agent;只有删除才会取消运行并释放会话。移动会更新保存的 cwd 和 live writer 的 header。
109
+ - 会话管理列表隐藏 subagent 会话,移动接口也拒绝 subagent;尚未落盘的空白会话不能跨工作区移动。
110
+ - 冷会话重写保留原工件格式(V1 / V2 / V3 / V4 都可读,绝不强制升级)。损坏或截断的 Zstd 日志、缺少完整尾行的 JSONL 会拒绝移动 / 重写,不会把部分历史当作完整日志保存。
111
+ - 迁移预设按"备份 → 发布 → 回滚"分阶段处理。如果回滚失败,会保留恢复文件并在错误中报告路径;不要删除这些文件。
112
+ - 启动扫描不完整时跳过工作区归属修复;完整扫描也不会清除仍在内存中或扫描期间新加入的会话。
113
+ - 同一会话的插件写操作按顺序执行;请求体限制为 64 KiB。该队列不替代 DSH 自身的持久化写入协调。
114
+
115
+ ## 5 兼容性
116
+
117
+ DSH 版本在上,插件版本在下;每列表示一组已测试的版本组合。
118
+
119
+ | v0.2.0-rc.2 | v0.1.7-rc.2 | v0.1.7-rc.1 |
120
+ | --- | --- | --- |
121
+ | 0.5.4 | 0.5.3 | 0.5.2 |
122
+
123
+ | v0.1.6-alpha.2 | v0.1.5-rc.2 | v0.1.5-rc.1 |
124
+ | --- | --- | --- |
125
+ | 0.5.1 | 0.4.11 | 0.4.10, 0.4.9, 0.4.7 |
126
+
127
+ | 0.1.3-alpha.2 | v0.1.2-rc.1 | v0.1.0-rc.7 |
128
+ | v0.1.3-alpha.2 | v0.1.2-rc.1 | v0.1.0-rc.7 |
129
+ | --- | --- | --- |
130
+ | 0.4.6, 0.4.4, 0.4.1 | 0.4.0 | 0.1.2, 0.1.1, 0.1.0 |
131
+
132
+ 以上版本组合已在官方 Web UI 和 Desktop 客户端中完成测试。其他版本组合可能同样兼容,但未逐一验证。
133
+ 以上版本组合已在官方 Web UI 或 Desktop 客户端中完成测试。其他版本组合可能同样兼容,但未逐一验证。
134
+
135
+ 使用独立 DSH CLI / runtime 时,需要 Node.js 22.15+(22.x)或 24+,以提供内置 Zstd 支持。官方 Desktop 客户端单独携带并管理与其版本匹配的 runtime。
136
+
137
+ 本插件是 Cordis 插件,peer dependency 为 `cordis: ">=4.0.0-rc <5"`。
138
+
139
+ ## 6 开发
140
+
141
+ - `lib/index.js` 是 host 端 ESM 插件,`lib/client.js` 是客户端 UI bundle,无需构建步骤。
142
+ - 提交修改前请运行:
143
+
144
+ ```powershell
145
+ npm run check
146
+ npm test
147
+ npm run check:package
148
+ git diff --check
149
+ ```
150
+
151
+ 测试使用隔离临时目录和真实插件入口,不操作真实会话。CI 在 Windows / Linux、Node 22.15.0 / 24 上执行相同检查。
152
+
153
+ 可选集成检查:对正在运行的 DSH Web profile 测试实例执行 `node scripts/smoke-test.mjs`;它会请求实际服务,不属于默认单元测试。
154
+
155
+ 发布记录见 [CHANGELOG.md](CHANGELOG.md)。
156
+
157
+ ## 7 致谢
158
+
159
+ 感谢每一位安装和使用 dsh-session-manager 的用户,也感谢提交 Issue 与 Pull Request 帮助改进本插件的朋友们。欢迎提出修改意见。
160
+
161
+ ## 8 开源许可
162
+
163
+ [MIT](LICENSE)