DSH Hub
dsh-better-workspace cover

KannaKuron/dsh-better-workspace

dsh-better-workspace

UIWeb UI23 GitHub stars· updated 2026-10-27

DSH web plugin: a hierarchical workspace tree for the sidebar — titles containing / group into virtual folders; the add-workspace flow gains a parent-group popup

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-better-workspace

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-better-workspace DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-better-workspace.svg)](https://dshhub.dev/plugins/dsh-better-workspace)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from KannaKuron/dsh-better-workspace, cleaned of badges and images.

dsh-better-workspace

简体中文 | English

给 DeepSeek Harness (DSH) 的侧边栏「工作区」列表装上一套两层文件夹系统——磁盘层按目录路径嵌套(官方 workspace-tree 语义:子目录里的工作区挂在父目录工作区之下),名称层吃工作区名字里的 /(「网页前端」「网页后端」归到同一个 web 分组),两层正交组合。

磁盘层(目录路径,自动嵌套)        名称层(名字里的 /,虚拟分组)
~/projects/                        web/
├─ web/        ← 工作区(目录)     ├─ 前端     ← 工作区「web/前端」
│  └─ api/     ← 子目录工作区      └─ 后端     ← 工作区「web/后端」
└─ docs/       ← 同级工作区

功能与效果

<td align="center" width="58%"><img src="docs/screenshots/1-workspace-tree.png" alt="工作区分层树"/></td> <td valign="top"><b>层级树</b><br/>工作区名称里的 / 即分组:web/前端、web/后端归到同一个 web 分组下,支持任意多级;不带 / 的工作区照常显示在根层。重命名工作区后树<b>即时重排</b>——分组只是名字的投影,没有第二份需要同步的数据。</td>

添加工作区:官方目录流

点「添加工作区」走的是 DSH 官方的目录拾取流(v0.12.0 起):webserver 只绑本机 loopback 且有显示会话时,弹出宿主桌面上的原生选择器;绑到 0.0.0.0(局域网访问)、SSH 转发或宿主没有可用显示会话时,自动切换为官方应用内目录浏览器(多栏目录、从根开始的面包屑、可编辑路径、行内新建文件夹、隐藏文件开关)——这正是 0.11.x 自绘浏览器打磨的场景,官方补齐后整体让位。选完目录即创建工作区并开始一个新会话,与官方浏览器行为一致;对话空态页的「添加工作区」用的是同一套官方占用者,只是入口由本插件渲染(见下)。

分组不靠添加时弹窗——改名即归组:新建后重命名工作区(名称里的 / 就是分组),或直接拖拽进分组行。

分组:名字的投影

分组由工作区名称里的 / 自然派生,没有第二份需要同步的数据——右键分组行可重命名分组(批量改写组内所有工作区名称的前缀),分组树即时重排;根分组 = 名称不带 / 的工作区。

会话也吃这套规则

工作区里的会话名称同样用 / 分层(如 测试1/两个插件维护)。会话分组用次级配色且无文件夹图标渲染,和工作区文件夹一眼可辨;会话分组可整组重命名(批量改写成员标题)。

重启后标题不回退:DSH 重启后的冷列表只为命中投影缓存的会话携带标题——分叉出的会话与从未写过检查点的会话会暂时回退成「工作区名」显示,真实的标题其实还在会话日志里。本插件把每个会话最近一次的真实标题持久化在浏览器里(带防抖的本地缓存,变更合并整写一次),回退窗口内直接用记忆标题渲染,/ 分级分组照常成立;打开会话后官方数据到位即自动纠正。

跨端手动同步(Web ↔ 桌面客户端):外观自定义、默认外观与开关默认保存在各设备自己的浏览器里;设置卡片新增「跨端同步」区——Web 上点「从客户端获取」、客户端上点「从 Web 获取」,可选覆盖本设备或合并两端(并集保留各自独有项),另一端的数据经宿主设置存储(~/.dsh/settings.yaml,两端共享)送达;旁边有「发送本设备数据」按钮,旧版本的历史数据首次同步推一次即可,之后每次修改都会自动写入宿主、对端随手可取。折叠状态仍保持每端独立。

<td align="center" width="58%"><img src="docs/screenshots/3-appearance-dialog.png" alt="外观自定义弹窗(实时预览)"/></td> <td valign="top"><b>外观自定义</b><br/>右键任意一层(工作区分组 / 工作区 / 会话 / 会话分组)→「自定义外观」:颜色(预设色板 + 取色器 + RGB)、发光强度(0..14 拖动条,只作用于文字)、字体粗细、字体阴影开关、**字体描边**(开关 + 0.5–4px 粗细,**新安装默认关闭**——干净主题下描边更像浮凸噪点,配背景图时再打开;描边颜色默认**灰**,可改黑 / 白 / 任意取色,或选「自动」按字体颜色取反差色——浅色字配黑边、深色字配白边,并跟随主题与背景插件的界面明暗。升级安装不受影响:已开启描边的浏览器保持原样)、图标(与 dsh 图标库同族的 69 个,工作区与工作区分组专属),底部带实时预览。清除自定义一键复原。</td> <td align="center" width="58%"><img src="docs/screenshots/2-customized-tree.png" alt="外观自定义效果"/></td> <td valign="top"><b>改完即见</b><br/>颜色、文字发光、字体粗细、阴影与图标按行应用,和展开状态一起经 dsh 客户端 store 持久化在当前浏览器。</td> <td align="center" width="58%"><img src="docs/screenshots/5-context-menu.png" alt="右键菜单"/></td> <td valign="top"><b>右键菜单</b><br/>操作都收进右键:工作区行——重命名 / 删除 / 分叉 / 归档 / 自定义外观 / <b>修改工作区默认预设</b>(v0.32.0 起,改写该工作区常驻新会话所用的 agent 预设,走官方同一通道;内置预设显示官方本地化名——标准模式 / PTC 模式 / 极简模式 / 创造模式,v0.33.0 起;工作区暂无待命新会话时,确认后会预备一个带所选预设的新会话作为该工作区默认);工作区分组行——重命名分组(同步更新组内所有工作区名称)/ 自定义外观;会话与会话分组行——重命名 / 分叉 / 归档 / 自定义外观;会话行另有<b>复制 Session ID</b>(v0.30.0 起,对齐 dsh 0.2.1-alpha.5 官方会话菜单第五项——写剪贴板走宿主原语,复制成功与否均有提示)。</td> <td align="center" width="58%"><img src="docs/screenshots/4-settings-card.png" alt="插件设置卡片"/></td> <td valign="top"><b>设置卡片</b><br/>设置 → 插件 → 插件配置 里新增「更好的工作区」卡片(官方折叠卡片样式),提供<b>单链分组合并</b>开关(如 测试层1 下只有 AI交易 一个工作区时,合并显示为一行 测试层1/AI交易)、<b>状态呼吸灯</b>开关(被折叠藏起的状态灯沿层级向外冒泡呼吸发光,默认开)、<b>行密度</b>三档(紧凑 / 标准 / 宽松,默认=官方行高,v0.34.0 起)与<b>显示会话数</b>开关(行尾会话数角标,默认关=官方,v0.34.0 起);另有<b>默认外观</b>区——颜色 / 发光 / 字体粗细 / 字体阴影 / 字体描边开关 / 描边粗细一次配好,没有单独自定义过的行全部继承(描边新装默认关,其余同「无自定义」),并随宿主设置存储跨端同步。展开状态与外观自定义经 dsh 客户端 store 持久化在当前浏览器。</td>

其余亮点

…

Related plugins