dsh-workspace-quick-create

新建工作区快速创建 —— 给 DSH Web GUI 的「新建工作区」流程做的 UI 增强:
- 在 GUI 里设置一个默认工作区根目录(例如
~/Documents/deepseek_projects);
- 之后新建工作区直接输入名字回车,即在根目录下
mkdir 并注册为新工作区,
全程不再弹出系统文件选择对话框(Codex 风格快速创建);
- 面板里的「浏览…」按钮仍可随时退回系统选择器,选任意目录。
本项目由本地脚手架 dsh-plugin-scaffold
(模板版本见 package.json 的 scaffoldVersion)生成,host/client 双半 +
Typert RPC 回环的静态插件(static-bundle)。
它是怎么工作的
DSH 的工作区「添加」流程把目录选择交给两个 slot 洞:
conversation.hero.workspace.directoryFlow (新会话页的选择器)
sidebar.workspaces.directoryFlow (侧边栏工作区的 + 按钮)
原生行为由官方包 @deepseek-ai/dsh-client-ui-directory-picker-native 占据——
每次都弹 OS 文件夹选择框。本插件在同一对 slot 上以更低 priority 注册自己的
面板(single-slot 影子语义:priority 最低者渲染),于是:
- 点 + / 新会话选择器 → 弹出本插件的面板(不再是系统对话框);
- 输入名字 → 实时预览完整路径
<默认根目录>/<名字> → 回车或点「创建并打开」;
- Client 调 Host RPC
ensure-workspace-dir:校验单个合法路径段、mkdir -p;
- 拿到绝对路径后走 ui-workspace 原生的
createWorkspace({ path }) 完成注册与跳转。
默认根目录保存在 <dsh-home>/storages/dsh-workspace-quick-create.json
(遵循 $DSH_HOME → ~/.dsh 的解析顺序),可在两处修改:
- 快速创建面板顶部的「更改」;
- 设置页「工作区快速创建」(settings.section)。
面板与设置页的所有控件均使用平台原语(Modal/Input/Button),自动跟随明暗主题。
安装
从 npm 安装(推荐)
dsh plugin --profile web add npm:dsh-workspace-quick-create
指定版本 / 更新:
dsh plugin --profile web add npm:dsh-workspace-quick-create@^0.1.0
安装后重启 dsh(或刷新 Web GUI)即生效;插件会出现在设置页「工作区快速创建」。
首次发布前上面的命令会 404 —— 请先用下面的本地联调方式安装。
本地开发联调
npm install
npm run install:local
卸载(二选一):
dsh plugin --profile web remove dsh-workspace-quick-create
npm run uninstall:local
软链安装 —— 移动/删除/改名本项目前务必先卸载,避免 Profile 里留下悬空软链。
使用
- 打开设置页「工作区快速创建」,把根目录设为如
/Users/you/Documents/deepseek_projects,保存;
- 侧边栏「工作区」点 + (或新会话页的工作区选择器)→ 输入名字 → 回车;
- 新工作区出现在列表里并自动打开会话;想挑任意目录时点面板里的「浏览…」。
RPC 面(Typert service workspaceQuickCreate)
ping | — | { ok, pong, plugin } 连通自检 |
get-config | — | { ok, root, home } 当前根目录 + Host 家目录 |
set-root | { root }(空串清除) | { ok, root } 校验 + mkdir -p + 持久化 |
ensure-workspace-dir | { name } 单个路径段 | { ok, path } join 到根目录后 mkdir -p |
名称校验:trim 后非空、≤80 字符、不含 / \ < > : " | ? * 与控制字符、
非纯点、不以点/空格结尾;中文名完全可用。输入框对 IME 组合中的回车做了防误触。
开发
npm run typecheck
npm test
npm run build
| 加 RPC 方法 | src/shared/contract.ts 的 METHODS + src/host/service.ts 加方法 |
| 改快速创建面板 | src/client/components/QuickWorkspaceFlow.tsx |
| 改设置页 | src/client/components/RootSettingsPage.tsx |
| 加文案 | src/client/i18n.ts 的 ZH/EN 字典 |
| 加样式 | src/client/styles.ts |
| 换 UI 挂点 / 用其他客户端能力 | 先读 docs/client-modules.md,按需调整两处 inject |
兼容性说明
- 针对 DSH
0.1.x-rc.7 的 slot 拓扑(conversation.hero.workspace.directoryFlow
为 single kind);若未来版本改变洞名/语义,需同步调整 src/client/index.tsx。
- 若与其他同样影子化这对 slot 的社区插件共存,priority 数值更低者胜出
(本插件用
-10)。
License
MIT © wqy8593521