DeepSeek Harness Hub
← 返回列表

EugeneVl/dsh_session_folders

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

一个用于 DeepSeek Harness Web UI…

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/15 · 已提供中文文档

DSH Web 侧边栏的会话文件夹:每个工作区一级命名文件夹,通过拖放或上下文菜单对会话进行分组,服务端持久化。无需修改测试框架。

综合分
38.1
GitHub 分
38.1
用户评分
★ Stars
7
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-session-folders
npm 包 dsh-session-folders 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

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

npm 包dsh-session-folders @ 0.4.3
Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 16:49:41

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

README

dsh-session-folders

中文版 README · Русская версия README

一个用于 DeepSeek Harness Web UI 的会话文件夹插件:侧边栏的工作区浏览器被替换为一个新增了会话文件夹功能的浏览器——每个工作区支持一级命名文件夹。会话可以通过拖拽移入文件夹,或通过上下文菜单移动;文件夹数据在服务端持久化,页面刷新后依然保留。状态徽章与内置会话浏览器保持一致。无需修改 harness。

截图

功能

组织

- 会话文件夹:每个工作区支持一级命名文件夹;文件夹之外的会话位于“收件箱”(散落)分组中
- 移动会话:将会话拖拽到文件夹上,或使用行上下文菜单——“移动到文件夹…”,其中有一个“新建文件夹…”条目,可当场创建文件夹并将会话移入其中;子菜单中的“工作区”条目可将会话从文件夹移回散落分组
- 文件夹管理:创建、重命名、删除(带确认);名称在每个工作区内唯一(不区分大小写)
- 就地重命名:双击会话标题即可就地重命名——Enter 提交,Esc 取消
- 自动重命名:会话上下文菜单提供“自动重命名”——会话自身的模型会读取其第一条用户消息,并推导出一个不超过 3 个词的简短标题(描述过程、功能或任务,使用消息所用的语言);结果会像手动重命名一样被固定
- 拖拽排序:拖动工作区行可重新排序工作区;拖动文件夹行可重新排序其工作区内的文件夹(文件夹始终位于散落会话之上,会话按时间排序的方式不变);顺序在服务端持久化
- 显示更多 / 显示更少:在每个文件夹和归档块中,最多显示五个会话,直到点击溢出行为止;展开状态按文件夹区分,且仅存在于当前浏览器会话中

会话操作

- 上下文菜单:每个会话 / 文件夹 / 工作区行在右键单击时都会打开其操作菜单(每行的“…”按钮已移除);每个操作都带有图标
- 固定 / 取消固定会话:已固定的会话始终位于其文件夹或散落分组中的最前面;固定状态在服务端持久化,并会随会话一起移动;没有状态徽章的已固定会话会在其状态槽位显示一个小图钉图标
- 悬停时快速归档:悬停在会话行上时,时间戳会替换为一个小归档图标——点击一次即可归档该会话(与上下文菜单操作相同);替换是原地发生的,因此布局永远不会偏移
- 会话 ID 徽章:紧挨着快速归档图标,悬停在会话行上时还会显示一个小 ID 徽章——点击一次即可将该行的 session- 复制到剪贴板
- 新建会话按钮:工作区行上的加号图标会在该工作区中启动一个新会话;文件夹行上较小的加号会直接在该文件夹内启动一个会话(创建的空白会话会被移动到该文件夹中并打开)
- 状态徽章 运行中 / 已完成——与内置会话浏览器一致

归档与恢复

- 归档块:工作区行上的归档图标会显示/隐藏一个虚拟归档文件夹,其中包含该工作区的所有已归档会话;显示时,该图标会呈现为带删除线的样式。显示该文件夹时还会将其展开;它按最新归档的会话优先列出(前五个,并带有一行“显示另外 N 个 / 显示更少”),并且支持拖放:将会话拖放到其上会将其归档(与上下文菜单操作相同);将已归档会话拖放到文件夹或松散区域会将其恢复到那里
- 从归档恢复:右键点击已归档会话会提供“恢复到原始文件夹”(会话会返回到归档时所在的文件夹,或返回到松散区域);左键点击会将会话恢复到工作区的 已恢复 文件夹(按需创建)并在聊天中打开它。已恢复的会话与常规会话分开保存:已恢复文件夹始终位于最前面(就在归档块正下方),并且只要其中没有可见会话就会隐藏自身

导航

- 最近部分:在工作区列表上方,显示五个最近的工区会话(来自文件夹或松散区域),最新的在前;点击其中一个会在聊天中打开它,展开已折叠的工作区/文件夹层级以使其可见,并且它会在最近部分及其工作区/文件夹中保持高亮。标题栏可折叠/展开该部分(状态会持久保存)
- 最近来源卡片:悬停在最近会话上时,会在该行右侧弹出一张小卡片,显示它所在的工作区和文件夹
- 文件夹树引导线:虚线引导线从每个文件夹图标向下延伸到其会话;包含已打开会话的文件夹的整棵树会绘制为蓝色。可在浏览器标题栏中切换(默认开启)
- 会话搜索,带匹配高亮——按标题和内容搜索
- 打开工作区文件夹:工作区行上的第一个按钮(文件夹图标)会通过宿主机的原生 openPath API,使用操作系统的默认文件管理器打开工作区根目录
- 全部折叠 / 展开:浏览器标题栏中的一对尖括号按钮可一键折叠和展开每个工作区分组、文件夹、最近部分和归档块
- 工作区聚焦:工作区行上的准星开关(也在其上下文菜单中)会隐藏其他所有内容——其他工作区、Recent、Ungrouped——直到关闭该开关;聚焦状态在重启后重置

持久化与 UI

- 服务端持久化:文件夹存放在 DSH 存储域中,页面重新加载后依然存在;视图状态(折叠的文件夹等)存放在浏览器 localStorage 中
- 服务端是唯一事实来源:每个操作都在服务端进行校验(工作区是否存在、会话归属、名称冲突);客户端只是镜像这些规则
- 双语 UI:根据页面语言自适应(zh / en)
- 折叠侧边栏:在窄栏中只渲染搜索和新建工作区按钮,与内置浏览器保持一致

安装

从 npm 安装

dsh plugin --profile web add dsh-session-folders

从注册表安装预构建版本——跳过 allowBuilds 构建审批步骤。

从 GitHub 安装

dsh plugin --profile web add 'github:EugeneVl/dsh_session_folders#v0.4.3'

安装后重启 dsh web(宿主插件和客户端 bundle 在启动时加载)。

用法

快速上手

1. 打开侧边栏:在每个工作区中,文件夹显示在散落会话的上方

文件夹

1. 创建文件夹——右键点击工作区行 → “New folder”;名称在工作区内必须唯一
2. 重命名 / 删除文件夹——右键点击文件夹行 → “Rename”;删除时会要求确认,文件夹中的会话将变为散落状态
3. 重新排序——将工作区行拖到新位置;在工作区内拖动文件夹行(放到某一行的上半部分/下半部分可将其放在该行之前/之后)

会话

1. 移动会话——将会话行拖到文件夹上(只能拖入同一工作区的文件夹),或右键点击会话 → “Move to folder…” → 选择一个文件夹,或选择 “New folder…” 创建一个文件夹并立即移动
2. 移回散落区域——右键点击会话 → “Move to folder…” → “Workspace”(第一项)
3. 固定会话——右键点击它 → “Pin”:会话会跳到其所在文件夹(或散落区域)的顶部,并在其他会话来来去去时保持在那里;“Unpin” 恢复按最新优先排序;没有状态徽标的已固定会话会在其状态槽中显示一个小图钉图标
4. 新建会话——工作区行上的加号按钮会在该工作区中启动一个会话;文件夹行上较小的加号会直接在该文件夹内启动一个会话
5. 重命名会话——双击其标题(Enter 提交,Esc 取消),或右键点击 → “Rename”
6. 自动重命名——右键点击会话 → “Auto rename”:会话的模型会根据第一条用户消息生成一个最多 3 个词的标题。菜单空闲时不生成任何内容;失败会显示在通知栏中
7. 快速归档——悬停在会话行上:时间戳会被替换为归档图标;点击它即可归档该会话

归档与恢复
1. 归档 — 工作区行上的归档图标用于显示/隐藏虚拟的归档文件夹(该工作区的所有已归档会话,最新的在前,每次显示五个)。将会话拖放到它上面即可将其归档;将已归档的会话拖放到某个文件夹或松散区域即可将其恢复到那里
2. 恢复 — 右键点击已归档的会话 → “恢复到原始文件夹”(回到它原来的位置);点击它则恢复到 已恢复 文件夹,如果该文件夹处于折叠状态会自动展开,并打开该会话。已恢复文件夹始终位于最前,并在为空时隐藏自身

查找与导航

1. 搜索 — 浏览器顶部的输入框;匹配项会被高亮显示且可点击
2. 最近 — 工作区列表上方的区域显示最近的五个会话(文件夹 + 松散区域)。点击其中一个即可打开它;“最近”中的行以及工作区/文件夹图标会标记当前会话。点击标题可折叠该区域
3. 打开工作区文件夹 — 文件夹按钮(工作区行上的第一个)会在系统文件管理器中打开工作区根目录

视图

1. 全部折叠 / 展开 — 浏览器顶部的这对箭头按钮:
- 折叠:收起所有工作区分组和文件夹
- 展开:再次展开它们

工作原理

| 层级 | 实现 |
|---|---|
| 宿主 | lib/index.js — 一个 cordis 插件:10 个 POST 路由 /dsh-session-folders/{list,create,rename,delete,move,reorder-folders,reorder-workspaces,pin,unarchive};它有自己的存储域 dsh_session_folders(一条全局记录,保存文件夹列表);变更通过 promise 链串行化,因此两个浏览器无法互相覆盖;工作区和会话成员资格通过 ctx.workspaceRegistry 进行验证 |
| 客户端 | lib/client.js — 通过 window.__ModuleLoader__.load 加载的 bundle,注册在 sidebar.workspaces 插槽中(优先级 -1);服务为 slots / locale / sessions / workspaces;视图状态保存在 localStorage 中(dsh.session-folders.view.v1) |

- 文件夹不影响会话的记账:工作区拥有会话,文件夹只是分组。未列在任何文件夹中的会话按定义就是松散的
- 删除工作区不会删除文件夹记录:它们不再被提供(按活动工作区 id 过滤),并无害地保留在存储中
- DSH 域保证持久性优先的写入;存储文件为 ~/.dsh/storages/dsh_session_folders.json
- 不更改系统提示,不新增模型工具 — 零 token 影响

限制

- 仅支持一层文件夹:不支持嵌套文件夹
- 会话只能移动到拥有它的工作区中的文件夹;不属于任何工作区的会话(未记账)无法进入文件夹
- 文件夹名称上限为 80 个字符;重复名称会被拒绝(不区分大小写)
- 重新排序以服务器为事实来源:客户端提交完整的有序 id 列表,服务器对其进行验证(工作区不能被丢弃到活动集合之外,文件夹不能离开其工作区)
兼容性

当前版本面向 DSH 0.1.0-rc.6(sidebar.workspaces 插槽,webServer / storageDomain / workspaceRegistry 服务,@deepseek-ai/dsh-storage-domain、@deepseek-ai/dsh-workspace、zod)。DSH 升级若更改插槽/服务 API,可能需要适配。

开发

没有构建步骤:lib/ 是已提交的打包产物(宿主端 + 客户端)。直接编辑文件并进行语法检查:

node --check lib/index.js
node --check lib/client.js

客户端侧的更改(菜单项、按钮、渲染)通常只需刷新浏览器——打包产物按需提供;宿主侧的更改(路由、校验)需要重启 dsh web。

发布清单

1. 在 package.json 中提升 version,并在 CHANGELOG.md 中添加一条记录
2. 提交,打标签 vN.N.N,推送 master 和该标签
3. 将 profile 指向新版本:dsh plugin --profile web add 'github:EugeneVl/dsh_session_folders#vN.N.N',然后重启 dsh web

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

💬 加入 DPharness 群聊

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

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群