把同级工作区合并成可折叠的文件夹节点
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add huguangyu666/dsh-plugin-better-folders该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/1) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-plugin-better-folders(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.5 · 基线 Node 22.19 满足
✓dsh CLI 依赖要求 >=0.1.2-rc.1 · 最新 0.2.1-rc.2 兼容
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/20 04:30:00
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
命令参数由运行时变量拼接读写/删除本地文件
查看扫描证据(共 6 处,展示前 6 条)
- 删除本地文件递归build.mjs:17
rmSync(resolve(ROOT, 'lib'), { recursive: true, force: true }) - 写入本地文件build.mjs:18
mkdirSync(resolve(ROOT, 'lib'), { recursive: true }) - 执行外部命令表达式求值build.mjs:21
execSync([ - 执行外部命令表达式求值build.mjs:37
execSync([ - 读取本地文件build.mjs:54
const host = readFileSync(resolve(ROOT, 'lib/index.js'), 'utf8') - 读取本地文件build.mjs:55
const client = readFileSync(resolve(ROOT, 'lib/client.js'), 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 合并同级工作区
- 生成可折叠文件夹节点
- 复用按工作区树视图
DeepSeek Harness 插件:更好的 DSH 文件夹 —— 自动整理工作区,把同一上级目录下的工作区汇合成可折叠的文件夹节点(复用内置「按工作区树」视图,不覆盖官方 UI)。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-better-folders · 更好的 DSH 文件夹
自动整理 DSH 工作区:把同一个上级目录下的多个工作区汇合成一个可折叠的文件夹节点。
仓库:
它解决什么问题
DSH 的工作区(Workspace)=「一个项目目录 + 跑在它下面的会话」。真实使用中这些目录往往成堆地躺在同一个父目录里:
C:\Users\me\Documents\MyProjects\plugin-workspace
C:\Users\me\Documents\MyProjects\dsh-plugin-memory
C:\Users\me\Documents\MyProjects\demo-app
C:\Users\me\Documents\MyProjects\quant
... ← 十几个同级目录 C:\Users\me\code\sandbox C:\Users\me\code\webapp
侧边栏默认的「按工作区」是平铺的,十几个同级目录排成一大列,找起来很累。
展开完整文档(README 剩余 1 节)
dsh-plugin-better-folders · 更好的 DSH 文件夹
自动整理 DSH 工作区:把同一个上级目录下的多个工作区汇合成一个可折叠的文件夹节点。
仓库:
它解决什么问题
DSH 的工作区(Workspace)=「一个项目目录 + 跑在它下面的会话」。真实使用中这些目录往往成堆地躺在同一个父目录里:
C:\Users\me\Documents\MyProjects\plugin-workspace
C:\Users\me\Documents\MyProjects\dsh-plugin-memory
C:\Users\me\Documents\MyProjects\demo-app
C:\Users\me\Documents\MyProjects\quant
... ← 十几个同级目录 C:\Users\me\code\sandbox C:\Users\me\code\webapp
侧边栏默认的「按工作区」是平铺的,十几个同级目录排成一大列,找起来很累。
本插件把它们汇合成:
📁 MyProjects ← 自动生成的文件夹节点 ├ plugin-workspace ├ dsh-plugin-memory ├ demo-app └ quant 📁 code ├ sandbox └ webapp notes ← 单个工作区保持原样
工作原理(为什么不用重画侧边栏)
DSH 侧边栏自带 「按工作区树」 视图(groupBy = "workspace-tree",由 @deepseek-ai/dsh-client-ui-workspace 提供):它会把每个工作区挂到最近的已注册祖先工作区下面。
所以「把相同上一级目录的工作区汇合在一起」在本插件里等价于:
把那个共同的上级目录本身注册成一个工作区(文件夹节点)。
注册完,内置树视图会自动把子工作区嵌进去 —— 插件不需要、也没有去覆盖官方 UI,因此不会出现「插件一挂,侧边栏白屏」这类事故。
功能
| 能力 | 入口 |
| 一键整理 / 预览 / 还原 | 设置 → 插件 → 更好的 DSH 文件夹 |
| 侧边栏快捷整理按钮 | 侧边栏底部 📁 整理文件夹 |
| 对话斜杠指令 | /folders status \| plan \| organize \| unmerge |
| Agent 原生工具 | organize_workspaces(action: status / plan / apply / unmerge) |
| 自动整理 | 工作区列表变化后自动汇合(可关) |
| 原生设置表单 | 设置命名空间 better-folders |
整理规则(全部可在设置里调)
| 配置 | 默认 | 含义 |
| enabled | true | 插件总开关 |
| autoOrganize | true | 工作区列表变化后自动整理 |
| minChildren | 2 | 至少多少个同级工作区才汇合出一个文件夹节点 |
| maxDepth | 1 | 向上追溯几级目录寻找共同上级(1 = 只看直接上级) |
| autoTreeView | true | 整理后把侧边栏切到「按工作区树」视图 |
| keepOrder | true | 把文件夹节点排在它的第一个子工作区之前 |
关于向上级联(已内置防护):如果某上级目录本身也是一个工作区、且它下面正好还有另一个工作区,那么它也会被当作一个汇合点。为了避免「每建一层就在更上一层凑出新配对、一路级联到盘符根」,插件对自己创建的文件夹节点做了排除:它们不再算作上一层的同级成员。用户自己注册的父级工作区不受此限制(例如你已把 sandbox 建成工作区,它仍会正常挂在 code 下)。根目录(C:\、/)永远不建节点。
安全边界
* 只增不删:整理只调用 workspaceRegistry.create(),从不删除任何工作区、目录或会话历史。
* 还原是安全的:unmerge 只删除本插件自己创建过、且没有任何会话的文件夹节点(记录在 ~/.dsh/better-folders/state.json)。用户手动建的工作区、已经在里面开过会话的节点,一律保留。
* 还原会顺手关掉「自动整理」:删除节点本身会触发工作区变化事件;如果自动整理还开着,下一次自动整理会立刻把刚删掉的节点重建出来,用户永远还原不掉。所以还原会显式把 autoOrganize 置为 false,把「要不要继续自动整理」的决定权交回你(在面板里一键就能重开)。
* 删除工作区注册 ≠ 删除数据:即便手动删掉文件夹节点,磁盘目录和会话历史都还在。
* 幂等:重复整理不会重复建节点;由 domain/changed 触发的自动整理会自然收敛。
安装
1) 构建
npm install # 只装 esbuild
npm run build
2) 跑测试
npm test
3) 装进 profile(默认 web),带备份与 dump-config 复核
node tools/install-into-profile.mjs --profile web --dry-run # 先看将执行什么
node tools/install-into-profile.mjs --profile web
装完重启 DSH(插件在启动时装配)。
从 GitHub 克隆安装:
git clone https://github.com/huguangyu666/dsh-plugin-better-folders.git
cd dsh-plugin-better-folders
npm install && npm run build
node tools/install-into-profile.mjs --profile web
卸载:
node tools/install-into-profile.mjs --profile web --uninstall
使用
1. 打开 设置 → 插件 → 更好的 DSH 文件夹。
2. 点 预览 看清将要新建哪些文件夹节点。
3. 点 一键整理。若 autoTreeView 开着,侧边栏会自动切到「按工作区树」。
若没切过去(客户端服务不可用时会退回写 localStorage),手动选视图选项 → 分组方式 → 按工作区树,或刷新页面。
4. 不满意就点 还原。还原会同时关闭「自动整理」,避免刚还原就被自动重建;想继续自动整理就在面板里把开关重新打开。
对话里也可以:
/folders # 查看现状 /folders plan # 预览 /folders organize # 执行整理 /folders unmerge # 还原
HTTP API
面板与侧边栏按钮通过同源接口驱动(ctx.webServer 注册的 prefix 路由):
| 方法 | 路径 | 说明 |
| GET | /better-folders/api/status | 现状 + 分组 + 已建节点 + 上次运行结果 |
| GET | /better-folders/api/settings | 当前配置 |
| POST | /better-folders/api/settings | 写入配置(部分字段) |
| POST | /better-folders/api/preview | 预览计划,不写入 |
| POST | /better-folders/api/apply | 执行整理 |
| POST | /better-folders/api/unmerge | 还原 |
工程结构
dsh-plugin-better-folders/
├── src/
│ ├── plan.js # 纯分组算法 + 整理器(零外部依赖,可单测) │ ├── index.js # Host 端:设置 / 自动整理 / HTTP API / 工具 / 指令 / 提示词 │ └── client-source.js # Client 端:设置面板 + 侧边栏按钮 + 树视图切换 ├── lib/ # esbuild 产物(lib/index.js + lib/client.js) ├── test/ │ ├── contract.test.mjs # 包元数据 / patch / 产物契约 │ ├── plan.test.mjs # 分组算法与整理器 │ └── mock-lifecycle.test.mjs # Fake Context 生命周期与工具/指令行为 ├── tools/install-into-profile.mjs ├── build.mjs ├── cordis.patch.yml └── package.json
实现备注
* Host 端 inject 只声明 workspaceRegistry。settings / webServer / tools / commands / systemPrompt 全部通过 ctx.inject(...) 按需挂载 —— 在 headless profile 里没有 webServer 时,插件依然能提供工具与指令,而不是整个挂掉。
* @deepseek-ai/schemastery 懒加载:DSH 运行时会提供;本地裸跑测试时加载失败只会降级为「没有原生设置表单」,不影响整理能力。
* BOM 铁律:状态文件与备份一律用 fs.writeFileSync(..., 'utf8'),不经过 PowerShell 的 Set-Content,避免 DSH 启动时 JSON.parse 被 BOM 打挂。
* 视图切换双通道:优先调用客户端服务 ctx.uiWorkspace.view.setGroupBy('workspace-tree') 即时生效;不可用时退回改写 localStorage 的 dsh.workspace.view.v5(下次刷新生效)。
测试
npm test
32 个用例覆盖:路径规范化(Windows / POSIX / UNC)、汇合计划(同级 / 多级 / 已注册父目录 / 根目录保护 / 顺序锚点)、整理器(预览 / 应用 / 幂等 / 还原 / 会话保护 / 用户工作区保护)、 Fake Context 生命周期(工具 / 指令 / 提示词 / 路由注册与行为)。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
huguangyu666/dsh-plugin-better-folders
把同级工作区合并成可折叠的文件夹节点
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目