DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Multiroot Workspace — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-multiroot-workspace

Multiroot Workspace

DeepSeek Harness 的多根逻辑工作区

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-multiroot-workspace@0.1.0-rc.1
README兼容性版本
Plugin screenshotPlugin screenshotPlugin screenshot

兼容性与来源证明

Multiroot Workspace 以 dsh-multiroot-workspace 发布,当前版本为 0.1.0-rc.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.1.0-rc.1prerelease
2026/8/15
查看其余 1 个版本收起版本
0.1.0-rc.0prerelease
2026/8/15

相关插件

正在加载相关插件…

最新版
0.1.0-rc.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
257.8 kB
文件数
10
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 3
周下载
38
最近提交
2026/8/15
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Agent Teams@nanmicoder/dsh-agent-teamsAgentTeams for DeepSeek Harness:通过自然语言驱动多智能体团队协作(队长、成员、具有依赖关系的任务、消息传递),并在 Web GUI 中提供树状监视器Deepseek Ipptdeepseek-ipptiPolloWork PPT Studio 及其精选幻灯片模板,作为原生 DeepSeek Harness 对话视图。

README

dsh-multiroot-workspace

External DeepSeek Harness bundle providing logical Workspaces with multiple named filesystem roots. It replaces the stock Workspace UI only while installed, using a source fork pinned in UPSTREAM.md; it does not modify Harness repository files.

Prerequisites

The first public prerelease targets DeepSeek Harness 0.1.0-rc.6 exactly on macOS and Linux. Harness supplies the pinned Cordis, DSH client and Host services, Schemastery, React, and ReactDOM peers when it loads the plugin; consumers should install the plugin through a Harness profile instead of installing those peers into the plugin package. Source development uses Node.js 24.11.1 and pnpm 11.9.0.

Install and start

One command, from any DeepSeek Harness installation:

dsh plugin --profile web add dsh-multiroot-workspace@next

Then start the Web UI with dsh web and open http://127.0.0.1:3080/. The plugin disables only the stock Workspace client row while installed; Sessions, their ordinary Host Workspace membership, and all non-Workspace UI remain owned by Harness.

The bundled configuration keeps cross-root Bash disabled:

- id: multiroot-workspace-tools
  config:
    crossRootBash: off

To deliberately choose ancestor or unfenced, put that row in a local patch and start Web with --patch <file>. The security differences are described under “Model tools and permissions” below.

The Host row also accepts one deployment-declared logical Workspace:

- id: multiroot-workspace
  config:
    title: Product repository
    roots:
      - alias: app
        path: /srv/product/app
        primary: true
      - alias: docs
        path: /srv/product/docs
        primary: false

roots must be non-empty, aliases are unique case-insensitively, and exactly one root must set primary: true. This row becomes the read-only logical Workspace config-roots: it cannot be renamed, edited, reprioritized, or deleted through the UI/API. Paths may be absent during startup so deployments can mount them later; file and shell operations still require the selected path to exist when used. Purge clears its Session selections and shadow mapping but preserves the declared record and any adopted Host Workspace. Startup reapplies the configuration; a later new Session whose cwd matches the primary root creates or adopts a Host shadow and attaches that Session.

Development

pnpm install --frozen-lockfile
pnpm run test
pnpm run typecheck
pnpm run build
pnpm exec playwright install chromium
pnpm run test:browser

The browser check packs the current plugin, creates an isolated temporary DSH home, installs it through the exact public @deepseek-ai/dsh@0.1.0-rc.6 CLI, and starts Web on a random loopback port. It exercises the public UI with stable fixture titles, aliases, and path suffixes, then stops the server and removes the temporary profile and directories in finally; no sibling Harness checkout or manually managed DSH_WEB_URL is used.

The check writes ten review screenshots under tests/browser/screenshots/: light and dark variants of the wide sidebar, rail, create dialog, manage dialog, and Hero picker. Runtime directories remain exclusive temporary paths, while their visible screenshot text is normalized to a stable display prefix. These generated PNGs are local review artifacts and are intentionally not staged with release commits; the directory itself is retained by .gitkeep.

Pull requests and main run the same Node.js 24.11.1 / pnpm 11.9.0 release gate in GitHub Actions, including packed-profile, deterministic-build, client-bundle, and browser checks. A v<package-version> tag may publish the next dist-tag only after that reusable gate passes. Publication uses npm Trusted Publishing through .github/workflows/release.yml with GitHub OIDC; no long-lived npm token is used.

The Host API is served under /plugins/multiroot/api. Creating a logical Workspace immediately creates or adopts its primary Host Workspace and returns shadowWorkspaceId. The browser joins logical metadata by that id and leaves the stock Workspace list authoritative for Session membership, search, grouping, ordering, and selection.

ws_cd stores the current-root selection as plugin-owned state keyed by Session id, so it survives plugin and Harness restarts without adding a custom Session event. A Session with no stored selection uses its logical Workspace's primary root. Deleting or purging that logical Workspace clears its selections. Forked Sessions do not inherit the source Session's selection and therefore begin on the primary root.

The selection table is additive within storage-domain version 4. Harness rc.6 has no domain migration API and rejects a changed version stamp, while its supported backends safely materialize a newly declared table at the existing version; this preserves previously stored logical Workspaces.

Model tools and permissions

Sessions opened in a logical Workspace receive these tools:

  • ws_list lists aliases, canonical paths, and the primary/current markers.
  • ws_cd changes the plugin-owned current alias for that Session.
  • ws_read, ws_write, and ws_edit access a root-relative text file. The tools reject lexical traversal and canonical targets outside the selected root (including symlink escapes); reads are limited to 1 MiB. Mutations use the Harness read-before-write/version waterfalls and publish fs/observed events.
  • ws_glob and ws_grep run ripgrep inside the selected root and cap output at 200 lines. Ripgrep exit 1 is an empty result; real command failures and cancellation are surfaced.
  • ws_bash runs in one selected root by default and passes that exact root to the active sandbox policy. workdir cannot escape the selected root.

crossRootBash controls an explicit non-empty roots list. The default, off, rejects multiple roots. ancestor fences the process to their tightest common ancestor, which can expose sibling content below that ancestor. unfenced requests danger-full-access with no workspaceRoot; enable it only when the deployment deliberately accepts unrestricted host access. Unknown aliases are always rejected before a shell process starts.

UI behavior

  • 按工作区 shows ordinary and logical Workspace project rows. Logical rows add the root count and primary alias.
  • 全部会话 is the stock flat view: it hides project rows and shows every visible Session once.
  • The branch icon in the Workspace header opens multiroot creation. A logical Workspace row's existing action menu opens management.
  • The management dialog shows complete directory names and paths in a two-column layout. When a Workspace has many roots, only the root list scrolls; the name field, add action, and footer remain fixed.
  • Forms use Harness Modal, Button, icon, and theme primitives; no Unicode folder/archive icons are rendered.

Storage, purge, and removal

Logical Workspace records, shadow ownership, and per-Session current-root selections live in the plugin's multiroot_workspace storage domain. An existing Host Workspace at the primary path is adopted; the plugin never deletes an adopted Workspace. If no suitable Workspace exists, the plugin creates and owns a shadow so stock Session grouping keeps working. Purge deletes owned shadows, user-created logical records, and all current-root selections while preserving adopted user Workspaces, Sessions, and the deployment-declared config-roots record.

With Web still running, purge plugin-owned data before removing the package:

curl -fsS -X DELETE http://127.0.0.1:3080/plugins/multiroot/api/data
# Stop the Web process, then remove the profile dependency.
dsh plugin --profile web remove dsh-multiroot-workspace

Removing without the purge request leaves the plugin's durable records for a later reinstall; it does not make the plugin delete them implicitly.