前言¶
DSH 官方侧栏按工作区列出会话,但默认能力有限:没有归档筛选、没有标题搜索、没有批量操作、没有只读预览,也没有一个地方可以持久告诉模型「该怎么称呼我、我的职业是什么、有哪些长期指令」。实际用下来,会话一多就得靠翻找,模型的行为设定也只能靠每次在对话框里重复。
tsechiyuan/dsh-session-manager 就是针对这两块缺口的插件。它由 Tsechiyuan 维护,版本 1.0.0,MIT 许可证,要求 Node.js ≥ 22.13.0、dsh web ≥ 0.2.0-rc.2。插件是单包混合结构,Host 半负责路由、存储和系统提示注入,Client 半负责全部界面,四个功能各自有独立开关,改开关和改设定都不需要重启 dsh web。
下面按功能、安装、用法的顺序介绍。
这是什么¶
一句话:它是一个会话管理页面 + 会话设定系统,外加官方侧栏的两种工作区过滤。
- 会话管理页:左侧按「全部会话 / 未分组 / 各工作区」浏览,右侧列出该范围的会话,提供归档三态筛选、标题搜索、行内重命名与归档、批量归档、全宽只读预览。
- 会话设定页:全局和工作区两级,保存称呼、职业、给模型的指令,Host 半在组装系统提示时注入。
- 侧栏过滤:复用了原
dsh-workspace-focus的思路,提供「只显示最近使用的工作区」和「主动隐藏工作区」两个按钮。 - 四个功能分别由
page、settings、sidebarRecent、sidebarHide四个开关控制,默认全开。
安装与启用¶
插件没有提供 dsh plugin add 形式的命令行安装方式,安装走插件页。
前置条件¶
- 已安装并运行 dsh web,版本 >= 0.2.0-rc.2
- Node.js >= 22.13.0
- 使用本地目录安装时,准备好插件的绝对路径,例如 /path/to/dsh-session-manager
方式 A:让 Agent 安装(需要批准)¶
帮我安装 dsh 插件 https://github.com/Tsechiyuan/dsh-session-manager
方式 B:手动安装¶
- 打开 DSH 插件页,点击「增加插件」。
- 输入仓库地址
https://github.com/Tsechiyuan/dsh-session-manager;本地开发也可以填插件目录的绝对路径。 - 重启
dsh web(首次安装必须重启)。 - 打开左侧栏「会话管理」,或侧栏「更多」→「会话设定」。
首次安装后必须重启一次;之后的加载规则见插件 README 的兼容性章节。
卸载¶
dsh plugin --profile web remove dsh-session-manager
执行前需要先在 profile 的 bundle 列表(dsh.profile.bundles)中移除 "dsh-session-manager",然后重启 dsh web。存储文件 $DSH_HOME/storages/session_manager_settings.json 不会被自动删除,需要时手动删除。
会话管理页¶
入口是左侧栏「会话管理」,是一个全宽页面,左侧是范围列表,右侧是会话列表。范围列表包含「全部会话」「未分组」和每个工作区(带会话数)。列表不显示子代理会话和空白会话。
筛选与搜索只作用于当前范围:
- 归档三态:默认只看未归档,可切「全部」或「仅已归档」。
- 搜索:按标题或会话 ID 子串过滤。
- 「全部会话」在未搜索时按工作区分组显示,搜索时改为平铺列表。
每行显示标题、置顶 / 运行中 / 已归档状态、创建时间、上次使用时间、token 用量。创建时间来自 Host 路由 GET /times,只读查询,不会激活会话;上次使用时间来自 sessionListMetadata.lastPromptAt,没有则回退 updatedAt。列表显示相对时间,悬停可看精确时间。
行尾操作:
- 重命名:只改标题,不唤醒 Agent。
- 归档 / 取消归档:归档仍在运行的会话时先确认「停止并归档」。
- 打开会话:切回对话视图;已归档会话需先取消归档。
- 置顶:与官方工作区栏会话行的「置顶会话」共享同一份 Host 状态,两边实时同步。
多选模式下可以批量归档、批量取消归档。批量归档会先处理能直接归档的会话,仍在运行的会话提示数量,确认后才处理;其余失败项单独提示。
只读详情页默认加载最近 30 条记录,通过 remote.session.events 分页拉取,打开详情不会激活会话。工具调用折叠成一行,thinking 不展示。
需要注意的限制:插件不支持删除会话,DSH 目前没有对应的 Host / Client API,用「归档」代替即可(可撤销、不丢数据);只读预览是简化渲染,附件只在文本末尾显示 [n× 附件] 计数占位。
会话设定¶
入口是侧栏「更多」→「会话设定」。设定存两份:全局一份,每个工作区一份。会话按它所属的工作区解析生效值:
| 场景 | 注入内容 | sources |
|---|---|---|
| 未分组会话 / 子代理会话 | 只有全局设定 | global 或 none |
工作区设定存在且 override=false |
全局在前、工作区在后叠加 | global+workspace |
工作区设定存在且 override=true |
只注入工作区设定 | workspace 或 none |
工作区 override=true 且工作区总开关关闭 |
什么都不注入 | none |
| 全局总开关关闭、工作区不覆盖 | 只注入工作区设定 | workspace |
未分组会话与子代理会话只受全局设定影响,不继承父会话。
表单字段和限制:
- enabled 布尔 总开关
- name <= 40 字 注入为「请称呼我为「…」」
- occupation <= 60 字 8 个预设或自定义
- instructions <=1500 字 实时字数计数
- override 仅工作区 true = 只注入工作区设定;false = 与全局叠加
职业预设为:教师、学生、工程师、产品经理、设计师、运营、研究员、自由职业,另有「自定义」。「会话称呼」为空且当前环境已登录 DeepSeek 账号时,打开表单会用登录用户名自动预填;只有点保存才会写入存储。
保存后从匹配会话的下一轮请求开始生效,不会改写正在生成的回复。注入到系统提示的文本形如:
## 会话设定
以下是用户为本会话保存的个性化设定,请按此调整回复:
### 全局设定
- 会话称呼:请称呼我为「凉」。
- 我的职业:贝斯手。请在讲解深度、术语和举例上适配这一身份。
- 给模型的指令(请严格遵守):
回答用中文;术语第一次出现时用一句话解释。
### 工作区设定(deepseek-harness)
- 会话称呼:请称呼我为「凉」。
指令的每一行会缩进两个空格,空行保持为空。没有任何有效内容时,整个段落不注入。
侧栏过滤¶
两个按钮都在官方侧栏工作区栏的标题行,搜索按钮右侧,功能独立。
- 最近工作区(时钟按钮):只显示最近使用的 1–10 个工作区,默认 5;当前会话所在工作区始终显示。
- 主动隐藏工作区(眼睛按钮):勾选「保留」的工作区,其余隐藏;当前会话所在工作区自动保留。未勾选任何工作区时,应用后隐藏全部工作区(当前会话所在工作区除外)。侧栏使用「单列表」分组时眼睛按钮不可用,需先切回按工作区分组。
- 两者同时开启时,只显示两边都保留的工作区。
功能开关¶
开关位置:插件页 → dsh-session-manager 行 →「配置」。
| 开关 key | 界面名称 | 关闭后的行为 |
|---|---|---|
page |
会话管理页 | 导航入口保留,页面显示「功能已关闭」;GET /times 返回 404 |
settings |
会话设定页 | 侧栏菜单行保留;/settings、/settings/clear 返回 404;系统提示不再注入;两个 Agent 工具报错 |
sidebarRecent |
只显示最近的工作区 | 时钟按钮和设置项立即消失 |
sidebarHide |
主动隐藏工作区 | 眼睛按钮和设置项立即消失 |
开关存在 Host(GET/POST /_dsh/session-manager/features),Host 半在每次请求、每次工具调用、每次组装系统提示时读取,所以保存后立即生效,无需刷新页面。关闭任何开关都不会清空已保存的设定。只有改代码才需要重启 dsh web。
数据与安全¶
设定存储在:
$DSH_HOME/storages/session_manager_settings.json
DSH_HOME 未设置时回退 ~/.dsh。文件在第一次保存时创建,备份复制该文件即可,迁移则拷到目标机器的同一路径。仓库里的 templates/session-manager-settings.template.json 是一份格式示例,手动修复时可对照;替换线上文件前先停 dsh web。
一点必须说明的:插件以当前 dsh web 进程的权限运行。安装前应先打开源码和许可证(MIT)确认,再决定是否放入生产环境。同时它属于社区目录中的第三方插件,与 DeepSeek / 幻方没有官方从属关系。
适用场景¶
适合会话数量较多、需要按工作区整理和归档的人,以及希望把「怎么称呼我、我的职业、长期指令」这类稳定设定持久化、而不是每次重写的 Agent 使用者。只想要其中一个功能的话,可以在插件配置里关掉其余三个,入口保留但页面会提示「功能已关闭」。
项目地址:https://www.skillhub.cn/plugins/Tsechiyuan/dsh-session-manager
仓库地址:https://github.com/Tsechiyuan/dsh-session-manager