← Back to home@Subwoofer91

dsh-default-workspace

DSH 插件:点击新对话页工作区前的文件夹图标,一键切回默认工作区

Stars
0
Language
JavaScript
Created
Oct 22, 2026
Updated
Oct 22, 2026

Introduction

dsh-default-workspace

test

在 DSH 新对话页的工作区选择器上增加一个快捷动作:点工作区名称前的小文件夹图标,直接切回默认工作区。不新增按钮,不改变原有菜单;点文字或右侧箭头仍然打开原来的工作区菜单。

仓库:https://github.com/Subwoofer91/dsh-default-workspace

切换前(其他工作区)点文件夹图标后(默认工作区)
beforeafter

行为

  • 只拦截新对话(hero)工作区胶囊最左侧的文件夹 SVG。
  • 当前已经是默认工作区时不做任何事,单击仍然打开工作区菜单,方便切到其他工作区。
  • 从其他工作区切回时,通过 uiWorkspace.openWorkspace 走原有导航流程,并尽量沿用内置选择逻辑迁移草稿和附件。
  • 默认工作区通过持久化标题 default-workspace 或目录名识别;工作区被改名时,回退到 Host 的 initializeDefault() 返回的持久身份。
  • 找不到默认工作区时完全不拦截,原有菜单行为不受影响。

安装

本插件是标准的 DSH bundle,包含 Host 空壳和 client/client.js 浏览器端实现。把它加入 Desktop profile 的依赖和 bundle 列表即可:

# package.json
"dependencies": {
  "dsh-default-workspace": "link:C:\\Users\\Subwoofer\\Documents\\deepseek-harness\\default-workspace\\dsh-default-workspace"
},
"dsh": {
  "profile": {
    "bundles": [
      "...",
      "dsh-default-workspace"
    ]
  }
}

然后在 profile 目录执行:

pnpm install

Desktop 的 profile 会在 HMR 可用时自动重组;如果当前进程没有热重载,重启 DSH 后生效。

目录

  • client/client.js — 浏览器端事件代理、默认工作区解析、导航与草稿迁移。
  • lib/index.js — Host 空壳入口,使 bundle 可以被 Cordis 正常挂载。
  • cordis.patch.yml — bundle 的 Host 行声明。
  • test/behavior.test.mjs — 不依赖浏览器的核心行为测试。

开发与测试

node --test dsh-default-workspace/test/behavior.test.mjs

在这个环境里 Node 测试运行器(node --test)会再 spawn 子进程,可能被 DSH 沙箱以 EPERM 拒绝;直接运行测试文件即可:

node dsh-default-workspace/test/behavior.test.mjs

已知限制

  • 依赖内置 hero 工作区胶囊的 DOM 结构(一个按钮内含文件夹 SVG、标签、chevron)。如果上游重做该组件,需要同步调整 folderIconOf。
  • 默认工作区被删除后,插件不会重新创建它;此时回退行为是保持原生菜单。