WZZNNE/DSH-CyberWorkStation--plugins-dsh-quick-workspace11

dsh-quick-workspace

支持通过 HTTP 绝对路径直接创建 DSH 工作区,绕过原生文件夹选择弹窗,解决无工作区分组下无法直接点击“+”新建会话的问题。

AI 分析

核心用途是快速创建和注册工作区。适合配合 DSH 启动器使用,或希望通过直接输入绝对路径快速建立项目工作区并开始对话的用户。

包名
dsh-quick-workspace
版本
0.1.0
许可证
NOASSERTION
最近更新
2026年9月11日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:WZZNNE/DSH-CyberWorkStation#19f3b830792481331c03a6ecdac70949cc80779f&path:plugins/dsh-quick-workspace

dsh-quick-workspace

The core's "ungrouped" session group has no workspaceId, and its + button is guarded by group.workspaceId !== undefined (packages/client/ui-workspace/src/client/WorkspaceBrowser.tsx), so clicking it does nothing — a session must belong to a workspace by design. This plugin does not touch the core; it adds a side door: the DSH Launcher POSTs an absolute path, the workspace is created, and a page refresh lets you pick it and start chatting.

Routes

RouteWhat it does
POST /dsh-quick-workspace/create{ "path": "D:/projects/my-project", "title": "optional" } — creates the directory if it does not exist, then registers a workspace for it
GET /dsh-quick-workspace/listthe registered workspaces (id, path, title)

What it will do to your disk

create runs mkdirSync(path, { recursive: true }) on any absolute path this process can write, with no allow-list, and then registers it. That is the feature — it is how you make a workspace for a folder that does not exist yet — but it is worth knowing before you point it somewhere. On Windows a UNC path (\\host\share\x) makes the dsh process authenticate outbound to that share.

Fence

Both routes carry the suite's loopback + same-origin fence: a foreign Host header is refused on every method (DNS rebinding), a cross-site or same-site fetch is refused, the Origin must match the whole authority, a POST must be application/json, the body is counted in bytes and capped at 64 KB (a refused body is drained, not reset), and an array body is not an object.

Without that fence any web page could have made this route create directories, which is what a review round found: a cross-site POST created a directory on the running instance before the fence landed.