Evidence snapshot reviewed Sep 16, 2026GitHub checked Aug 21, 2026
Evidence-verifiedPlugin BundleInterface & ExperienceWeb Profile

Better Workspace

A DSH web sidebar plugin that organizes slash-named workspaces and sessions into a folder-like tree.

At a glance

What it does

A DSH web sidebar plugin that organizes slash-named workspaces and sessions into a folder-like tree.

Use cases
Interface & ExperienceUINavigationPersonalization
Works with
Deepseek HarnessDsh
Compatibility

Web Profile
>=0.1.0

Trust & status

Evidence-verified
Checked Sep 15, 2026, 1:55 PM UTC

Code-evidenced contributions

What it adds to DSH

Web UIHierarchical Workspace Tree

Replaces DSH’s workspace sidebar area with a tree derived from slash-separated workspace and session titles, plus group management and appearance controls.

Mechanism evidence

Before you choose it

Better Workspace takes over the DSH workspace sidebar with a hierarchical tree. Names such as `web/frontend` and `web/backend` become virtual groups rather than real directories. It adds group-aware workspace creation, context-menu actions, drag-and-drop organization, per-row appearance controls, and locally persisted view state.

Best for

DSH web users who keep many workspaces or sessions and want folder-style sidebar organization without changing the underlying workspace directories.

Common tasks

  • Group related workspaces by naming them with slash-separated paths.
  • Create empty virtual groups or add a workspace directly under an existing group.
  • Organize slash-named sessions, collapse branches, and customize row colors, icons, and text styling.
  • Manually synchronize supported appearance, group, and toggle settings between web and desktop clients.

Permissions and data

Changes the DSH web sidebar and persists plugin state locally in the browser.

Permissions
  • Registers a replacement for the public DSH workspace-sidebar slot.
  • Uses host-provided workspace and session snapshots and host actions for operations such as opening, renaming, deleting, forking, and archiving.
Data handling
  • Stores group collapse state, session expansion state, explicit empty groups, appearance customizations, plugin settings, and recent real session titles in browser-local client storage.
  • Supported cross-device synchronization sends selected settings through host settings storage; folded state and local session order remain device-local.
Credentials
  • No separate credential requirement is declared in the supplied evidence.

Limitations

  • Virtual groups are naming projections, not real directories.
  • Dragging a session onto a session row in another group only reorders it; use a group row or rename to change its title-based group.
  • Search filters local titles; host content search is not connected.
  • Empty groups are local to a browser or device.
  • The flat workspace view is not replaced.

What DSHub checked

  • Pinned source bundle structure, package identity, and the DSH bundle patch are verified.
  • The manifest declares Node >=18 and DSH >=0.1.0.
  • The repository declares an MIT license.

What DSHub did not check

  • Installation and runtime behavior were not executed during this curation.
  • The npm registry package identity is verified, but its package contents were not audited.

Pinned install

Install Better Workspace

This plugin bundle does not have a DSH Plugin install action. Use its source documentation for the delivery method.

Visit the source project

Maintainer source

Project README

View at commit c72bdf9
Maintainer-authored contentCaptured from README.md on Sep 15, 2026. The text and repository-relative media are fixed to commit c72bdf90a597 with content hash d6ca4f9cf8c4; provider-hosted badges may update independently. README commands are upstream documentation; the DSHub copy action above is the verified, version-pinned install.

dsh-better-workspace

Awesome DSH Plugin

简体中文 | English

DeepSeek Harness (DSH) 的侧边栏「工作区」列表装上一套文件夹系统——工作区还是那个工作区(一个目录),但名字里的 / 就是层级,让「网页前端」「网页后端」这类工作区可以归到同一个 web 分组下。

web/                 ← 虚拟分组(不是真实目录,纯命名层级)
├─ 前端              ← 工作区「web/前端」
└─ 后端              ← 工作区「web/后端」
测试/                
└─ 两个插件维护      ← 原有的单层工作区照常工作

功能与效果

<table> <tr> <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> </tr> </table>

添加工作区:选完文件夹,再选「所属分组」

点「添加工作区」并选完文件夹后,弹出一个小对话框,一行选择工作区所属分组——直接输入(如 web)、从下拉里选已有层级(datalist 原生补全),留空就是根分组。确认后插件创建工作区并把分组前缀写进名称,树上自然落位。

分组的增删

右键任意分组行即可:新增子分组(路径自动带上父分组前缀)、新增子工作区(选完目录后所属分组输入框自动预填)、重命名分组、删除空分组;标题栏不再放独立按钮。空分组持久保存在浏览器本地;一旦有工作区落进去,分组就由名称自然派生。

会话也吃这套规则

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

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

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

<table> <tr> <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> </tr> <tr> <td align="center" width="58%"><img src="docs/screenshots/2-customized-tree.png" alt="外观自定义效果"/></td> <td valign="top"><b>改完即见</b><br/>颜色、文字发光、字体粗细、阴影与图标按行应用,和展开状态一起经 dsh 客户端 store 持久化在当前浏览器。</td> </tr> </table><table> <tr> <td align="center" width="58%"><img src="docs/screenshots/5-context-menu.png" alt="右键菜单"/></td> <td valign="top"><b>右键菜单</b><br/>操作都收进右键:工作区行——重命名 / 删除 / 分叉 / 归档 / 自定义外观;工作区分组行——新增子分组 / 新增子工作区 / 重命名分组(同步更新组内所有工作区名称)/ 删除空分组 / 自定义外观;会话与会话分组行——重命名 / 分叉 / 归档 / 自定义外观。</td> </tr> </table><table> <tr> <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>区——颜色 / 发光 / 字体粗细 / 字体阴影 / 字体描边开关 / 描边粗细一次配好,没有单独自定义过的行全部继承(只有描边默认开,其余同「无自定义」),并随宿主设置存储跨端同步。展开状态与外观自定义经 dsh 客户端 store 持久化在当前浏览器。</td> </tr> </table>

其余亮点

  • 文件夹式收起:点工作区行 = 收起/展开该工作区的全部会话(收起后行上保留会话数角标);会话分组同样可收起;搜索时自动全部展开。
  • 拖拽还原原版能力:工作区行可拖拽——拖到另一工作区行上/下半即调整顺序(写回宿主 registry 序),拖到分组行则移动进该分组;会话行可拖拽——同工作区拖到另一会话上/下调整顺序,拖到会话子分组即移动进该分组。显示顺序 = 宿主手动序,拖拽结果立即生效。拖拽工作区期间,单链合并显示的行(如 工作/A)临时展开回文件夹树——路径里的每一级都是可投放的分组行,松手后自动合并回去。
  • 不丢原生能力:会话行(打开/重命名/分叉/归档)、每工作区「新会话」(点 + 总是先展开该工作区,让新会话立刻可见)、当前会话高亮、官方状态灯(蓝色运行环 / 琥珀待交互 / 绿色完成提醒)、状态呼吸灯(折叠藏起的状态灯向外冒泡:工作区/分组行图标按状态色呼吸发光——琥珀待交互/绿完成,自定义过发光的标题一起呼吸;运行中只在会话行本层蓝色呼吸,不外渗;可在设置关闭)、活跃定时任务角标(有活动 Schedule 的会话显示闹钟图标,与官方行一致)、未分组会话兜底、界面文案跟随 DSH 的语言设置(内置 21 种语言,含简繁中文)。
  • URL/斜杠标题不拆层:宿主自动生成的会话标题落地时若含 /(如复述了 URL),整串自动包上 “” 原样显示,绝不解析成层级——只对本次启动后新建的会话生效,并等命名稳定(约 20 秒,让原生 AI 命名先落地)才处理;存量会话与你手动命名的 / 分组标题永不被改动。引号内(含手动添加)的 / 永不切分,孤立引号只当普通字符;无引号但含 URL 的旧标题也有平铺兜底。
  • 对话空态页同样生效:会话空态页的「添加工作区」菜单走的也是本插件的拾取交互,同样带所属分组弹窗。

安装

dsh plugin --profile web add dsh-better-workspace   # npm 公开包
# 源码与 Release: https://github.com/KannaKuron/dsh-better-workspace

纯 JS、零构建、零 npm 依赖(只依赖 dsh 客户端基线模块),安装不触发任何构建脚本。装完重启 DSH 即生效。

<details> <summary>手动挂载(不用 CLI 时)</summary>

把包放进 profile 的 node_modules 后,在 profile 的 cordis.patch.yml 里加:

- insert:
    - id: better-workspace
      name: 'dsh-better-workspace'
</details>

工作原理

DSH 的侧边栏浏览区是一个公开插槽 sidebar.workspaces(single),官方工作区浏览器是它的占用者;本插件以更低优先级注册同一插槽,整区替换为层级树版本。数据全部来自插槽标准注入(useWorkspaces / useSessions 快照钩子),动作(打开会话、重命名/删除工作区、归档等)也走注入的宿主动作——不碰任何私有 API。

「添加工作区」则落在 dsh 专门为第三方设计的一条缝里:sidebar.workspaces.directoryFlowconversation.hero.workspace.directoryFlow 两个目录流插槽。触发按钮、忙碌语义、错误弹窗全由官方持有;本插件只拥有「触发之后、交付路径之前」的交互——正好用来塞进「选完文件夹 → 弹窗选分组 → 创建 → 改名加前缀」这条链。

视图状态(分组折叠、会话展开、显式空分组)、外观自定义与插件设置都通过 dsh 客户端 store 持久化在浏览器本地(dsh.betterWorkspace.view.v1)。注意:该 store 的 hydration 是整值替换、不合并默认值——升级后如果遇到状态字段缺失,重启前的旧状态按旧结构保留,缺的键自动回退默认。

与 dsh-better-sidebar 的关系

同属 dsh-better-* 家族,但互不重叠:dsh-better-sidebar右侧的 VSCode 式面板(资源管理器/终端/Git);本插件只接管左侧工作区列表。两者可同装。

版本兼容

  • dsh 0.1.6-alpha.1:图标集与浏览器注入面都变了,本插件 0.10.2 起自动适配——图标网格只列本宿主真正导出的字形(退役的 IconSendOutline16 自动落到等价的 IconSendOutline14,已保存的旧选择不会变成空图标位),会话拖拽排序在宿主不再注入 insertSessionBefore 时改用浏览器本地顺序,功能不丢。升级 dsh 与升级插件谁先谁后都收敛。
  • 跨端:web 与桌面共用同一套客户端资产;外观 / 分组 / 开关可经设置卡片手动跨端同步,折叠状态与会话本地序每端本地(设计如此)。

限制与路线图

  • 会话拖到另一分组内的会话行仅做扁平重排(标题分组归属不变);要改分组请拖到分组行或走重命名。
  • 搜索为本地标题过滤;宿主内容搜索(session.search)计划接回。
  • 空分组持久在浏览器本地,不同浏览器/设备不共享(路线图:宿主侧分组登记 + 设置页)。
  • flat(平铺)视图未接管,层级树即视图。

开发

npm test        # 冒烟测试:清单一致性 / 基线 require 白名单 / 21 门词典键集对齐 / 语法
npm pack        # 出 tarball 后可本地安装验证

本地验证:把 npm pack 产出的 tarball 装进 web profile 并手动挂载(见上),重启 DSH,验证:层级树渲染、添加工作区弹窗、重命名即时重排、新建分组、卸载后回到原浏览器。

License

MIT

Operate deliberately

Install and manage

Prerequisites and target Profile

Target Web Profile

Delivery Dsh Bundle Git — KannaKuron/dsh-better-workspace#c72bdf90a59734497e7a5c05297d54558602e639

Verify, update, and remove

Show lifecycle commands
Verify
dsh plugin --profile web list

Compatibility and access

DSH web plugin; Node 18+ and DSH 0.1.0+ declared >=0.1.0

Review compatibility evidence

Risk facts

Local Data Storage

Stores view state, empty groups, appearance settings, and recent session titles in browser-local storage; some settings can be manually synchronized through host settings storage.

Evidence
Evidence and editorial reviewManifest, Bundle patch, distribution and freshness

Immutable evidence

Review status and source activity

AI reviewed

This is a UI replacement plugin, not a filesystem organizer: its folders are derived from titles containing `/`.

AI reviewed Sep 15, 2026, 1:56 PM UTCGitHub facts last checked Sep 15, 2026, 1:56 PM UTC

No material source change has been recorded since this evidence baseline.

Next step

Follow the Plugin installation workflow

Subscribe to material changes for Better Workspace