DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Workspace Drag — DeepSeek Harness 插件(DSH Plugin)
← Plugins
W

dsh-workspace-drag

Workspace Drag

DSH Web UI 插件:将对话拖到侧边栏中的任意工作区即可进行整理。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:lanscer/dsh-workspace-drag#5f64643b71735f80d2ca8f7b199e7cb7d7aaad2e
README兼容性版本

说明

DSH Web UI 插件:将对话拖到侧边栏中的任意工作区即可进行整理。可在设置页启用或关闭。

兼容性与来源证明

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

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

版本

1.1.2stable
2026/9/17
1.1.1stable
2026/9/16
1.1.0stable
2026/8/20
查看其余 1 个版本收起版本
1.0.0stable
2026/8/20

相关插件

正在加载相关插件…

最新版
1.1.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/17
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。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 中提供树状监视器

README

dsh-workspace-drag

DSH Web UI plugin — drag a conversation onto any workspace to organize it

drag session row → workspace group → move(cwd + files + registry)


DSH Web UI plugin — in the sidebar grouped view, drag a conversation onto another workspace's title (or any session row within that group) and release to move the conversation there. Seamless drag-and-drop: no popups, no intermediate panels — drop it and it's organized.

Installation

Install from this GitHub repository with the official DSH plugin command:

dsh plugin --profile web add github:lanscer/dsh-workspace-drag

Or, for a local checkout, use the bundled one-command installer (run this from inside the plugin directory — the folder containing package.json; after cloning dsh-workspace-drag, cd into it first):

npm run install:plugin

Or directly (cross-platform, uses Node.js):

node install-plugin.mjs

Works on Windows (PowerShell), macOS and Linux — the installer is a plain Node.js script, no bash or PowerShell-specific syntax.

This registers the plugin into ~/.dsh/profiles/web (on Windows: %USERPROFILE%\.dsh\profiles\web) by adding a link: dependency to the profile's package.json and creating a node_modules symlink. It does not run pnpm install, so it avoids the pnpm minimumReleaseAge policy that rejects dependencies published within the last 24 hours. Idempotent — re-running is a no-op when already installed.

⚠️ Windows notes

  • Run the command inside the cloned plugin folder, not in your home directory — npm run needs a package.json in the current directory (the error ENOENT ... C:\Users\<you>\package.json means you ran it in the wrong folder).
  • Creating the symlink uses junction, which works on Windows without Developer Mode or Administrator rights.
  • If symlink creation is blocked by policy, the link: dependency is still written to the profile — then finish with dsh plugin --profile web add link:<plugin-path>.

After installation:

  • Client-only changes: refresh the browser page.
  • Host changes: restart dsh web.

Note: the plugin requires the zstd CLI (see Dependencies).

Features

  • Seamless cross-workspace drag-and-drop: drag a session row → hover over another workspace group (title or any session row within it) to highlight → release to migrate.
    • No floating panels, no confirmation dialogs; same-workspace drag-and-drop is left to DSH's native reordering, undisturbed.
    • A brief success banner appears after the move, and the conversation immediately appears in the target workspace.
  • Toggle: enable/disable with one click on the Settings → Drag to Organize page; when disabled, drag-and-drop is inert (no highlighting, no migration).
  • Safety:
    • Sessions whose agent is currently running cannot be moved (exact agent-status check, no more coarse 30-second mtime window).
    • For a conversation that just finished: the host automatically waits for the log to quiesce (up to 15 s) and then migrates — one drop completes the move, no "retry later" loop.
    • The host-side migration is a copy-verify-atomic-swap: the session directory is copied to a staging location, the rewritten log is verified, then published to the destination. The old directory is only removed after the new copy is verified — data is never lost on failure.
    • The migration physically relocates the session log file, rewrites the header cwd field, and updates the workspace registry ownership account plus in-memory state (live header / persistence write handle / registry index), so the conversation remains usable after the move.
    • Live-write-handle re-pointing (the ENOENT fix): DSH's jsonl backend derives every append path from the open write handle's header.cwd (JsonlSessionHandle.persistContiguous → appendLines → logPath(root, meta.cwd, id)) and routes live events through that same handle by id (tracker.writers). A move that rewrote only the file and the session object left the handle stamped with the old directory, so the next turn failed with ENOENT: no such file or directory, open '<old path>/session.v3.jsonl.zstd'. The move now re-stamps the handle's header before the old directory is deleted, and fails closed — original untouched, published copy removed — when the handle cannot be re-pointed.

Data Model

  • Each session's workspace identity is its header cwd (an absolute directory path).
  • Sessions are stored at ~/.dsh/sessions/<projectKey(cwd)>/<session-id>/session.jsonl[.zstd]; since DSH 0.1.5 new sessions use the v3 format session.v3.jsonl[.zstd] (the legacy session.jsonl[.zstd] is kept but no longer written).
  • Migration = relocating the session directory under the new workspace's projectKey directory + rewriting the first (header) line's cwd + using ctx.workspaceRegistry's detach/attach to update the workspace ownership ledger.
  • v3 support (0.1.5+): the move rewrites the header cwd in every session-log generation present in the directory (session.v3.jsonl[.zstd] and legacy session.jsonl[.zstd]). Otherwise the DSH persistence layer derives the expected path from (cwd, id) and rejects the mismatch with corrupt session log: header id ... and cwd identify ... — 0.1.5 reads session.v3.jsonl.zstd, so rewriting only the legacy file misses it.
  • zstd logs are concatenated multi-frame containers: frame 1 = exactly one header line (newline-terminated), frames 2..N = appended event batches. The DSH reader requires the first frame to decode to exactly this header line.
  • During migration, zstd logs undergo frame-preserving surgery: only frame 1 is decoded → the header cwd is rewritten → re-encoded as a single checksummed frame (matching the DSH backend) → concatenated with the remaining original frames (byte-identical). The log must never be compressed as a single frame (that would break the DSH reader's "first frame = header only" invariant).

File Layout

dsh-workspace-drag/
├── package.json          # dsh.bundle.patch + client inject
├── cordis.patch.yml      # registers the plugin row in the web profile
├── lib/
│   ├── index.js          # Host: config/move HTTP routes + migration logic
│   └── client.js         # Browser: settings page (toggle) + document-level drag engine
├── test/
│   ├── fixtures/multiframe-session.jsonl.zstd  # multi-frame zstd session sample (7 frames)
│   ├── verify-core.mjs              # zstd round-trip + DSH frame scanner compatibility
│   └── integration-move.mjs         # end-to-end integration test for moveSessionToWorkspace
└── README.md

Host HTTP API

MethodPathDescription
GET/api/dsh-workspace-drag/configRead toggle { "enabled": true }
POST/api/dsh-workspace-drag/configWrite toggle { "enabled": false }
POST/api/dsh-workspace-drag/move{ "sessionId", "targetWorkspaceId", "waitMs" } — move a conversation; optional waitMs (0–30000) makes the host wait for the agent/log to quiesce and finish automatically; failures carry a code (agent-running / writing / move-failed)

Configuration is persisted in ~/.dsh/dsh-workspace-drag.json.

Dependencies

  • The host half requires the zstd CLI. The plugin auto-detects the binary via PATH search, falling back to common paths (/opt/homebrew/bin/zstd, /usr/local/bin/zstd, /usr/bin/zstd). Install via brew install zstd (macOS) or apt install zstd (Linux).
  • Requires DSH built-in services: webServer / sessions / sessionPersistence / workspaceRegistry (all loaded by @deepseek-ai/dsh-web-app).

Tests

cd test
node verify-core.mjs      # Validate zstd round-trip + DSH frame scanner compatibility
node integration-move.mjs # End-to-end integration test (temp directory, does not touch real data)

Limitations

  • Conversations whose agent is currently running cannot be moved (you are asked to wait for the reply to finish); for a just-finished conversation the host waits for the log to quiesce and migrates automatically.
  • Migration changes the session's cwd — its workspace ownership and disk storage location. This is the essence of "organizing into a workspace."
  • The zstd CLI must be installed (auto-detected via PATH; no hardcoded path).

License

MIT


中文文档 · English