证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle界面与体验Web Profile

Better Workspace

为 DSH Web 侧边栏提供文件夹式工作区与会话层级树的插件。

快速了解

它能做什么

为 DSH Web 侧边栏提供文件夹式工作区与会话层级树的插件。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
界面与体验UI导航个性化
适配技术
deepseek-harnessdsh
兼容性

Web Profile
>=0.1.0

可信度与状态

证据已验证
核对日期 2026/9/15 UTC 13:55

有代码证据的贡献

它为 DSH 增加什么

分层工作区树

将 DSH 工作区侧边栏替换为由斜杠标题生成的层级树,并提供分组管理和外观自定义。

机制证据

选择前先看

更好的工作区会用层级树替换 DSH 的工作区侧边栏区域。`web/frontend`、`web/backend` 这类名称会形成虚拟分组,而不会创建真实目录。它还提供按分组添加工作区、右键操作、拖放整理、逐行外观自定义,以及本地持久化的视图状态。

适合谁

适合使用 DSH Web、工作区或会话较多,并希望在不改变真实工作区目录的前提下按文件夹方式整理侧边栏的用户。

常见任务

  • 用带斜杠的名称把相关工作区归入层级分组。
  • 创建空虚拟分组,或直接在现有分组下添加工作区。
  • 整理带斜杠的会话名称、折叠层级,并自定义行颜色、图标和文字样式。
  • 在 Web 与桌面客户端之间手动同步受支持的外观、分组和开关设置。

权限与数据

修改 DSH Web 的工作区侧边栏,并在浏览器本地保存插件状态。

权限
  • 注册对公开 DSH 工作区侧边栏插槽的替换。
  • 使用宿主提供的工作区和会话快照,以及宿主操作来打开、重命名、删除、分叉和归档。
数据处理
  • 在浏览器本地客户端存储分组折叠状态、会话展开状态、显式空分组、外观自定义、插件设置和最近真实会话标题。
  • 受支持的跨端同步会通过宿主设置存储传递部分设置;折叠状态和本地会话排序仍仅保留在各设备。
凭据
  • 提供的证据未声明需要额外凭据。

局限

  • 虚拟分组只是名称投影,不是真实目录。
  • 将会话拖到另一分组内的会话行只会调整顺序;要改变基于标题的分组,请拖到分组行或重命名。
  • 搜索仅过滤本地标题,尚未接入宿主内容搜索。
  • 空分组仅保存在当前浏览器或设备。
  • 不会接管平铺工作区视图。

DSHub 已核对

  • 已验证固定提交中的 bundle 结构、包身份和 DSH bundle 补丁。
  • 清单声明 Node >=18 和 DSH >=0.1.0。
  • 仓库声明使用 MIT 许可证。

DSHub 未核对

  • 本次策展未实际执行安装或运行时行为验证。
  • npm 注册表中的包身份已验证,但未审计包内容。

固定版本安装

安装 Better Workspace

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit c72bdf9 对应的 README
维护者编写的上游内容原文于 2026/9/15README.md 获取,正文和仓库相对媒体固定到 commit c72bdf90a597,内容哈希为 d6ca4f9cf8c4。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。

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

有意识地管理

安装与管理

前置条件与目标 Profile

目标 Web Profile

交付方式 Git Bundle — KannaKuron/dsh-better-workspace#c72bdf90a59734497e7a5c05297d54558602e639

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile web list

兼容性与访问范围

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

检查兼容性证据

风险事实

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.

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

这是侧边栏 UI 替换插件,不是文件系统整理工具:其文件夹由包含 `/` 的标题派生而来。

AI 审查于 2026/9/15 UTC 13:56GitHub 事实核对日期: 2026/9/15 UTC 13:56

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: Better Workspace