dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
🖥️ Agent-project workbench for DeepSeek Harness — sidebar app drawer + dockable split workspace + a live control room watching every project.
An agent-project workbench for DeepSeek Harness — a sidebar app drawer that turns every project into dockable windows, plus a built-in control room that watches them all in real time.
· · 🖥️ Control room — the built-in default project: a live card grid watching every project (working / needs you / done) with glassmorphism cards on a blueprint grid · 🧩 Worktable sidebar — the app drawer: projects, shortcuts and the pinned control-room entry · 🪟 Our projects — every project opens as a dockable split workspace (resident apps like Travel Atlas included)
· 🧩 Plugin type · Cordis plugin — host routes + web client, pure additive (no official plugin replaced) 🪟 Workspace engine · Self-built split engine rendered into the host shell overlay seat 💬 Chat pane · Reuses the host conversation; navigation uses the host's new or legacy session API 📡 Status data · Mirror of the host session runtime snapshots (subscription-driven) 💾 State · Projects/layouts/bindings in localStorage; media in IndexedDB; file panes access configured project directories 🎨 UI · TypeScript + React (host externals) + vanilla CSS, dark-first with light theme
v0.4.0 adds Windows official Desktop support within the tested scope below. Web compatibility lists only DSH 0.1.1-rc.2 / 0.1.2-rc.1 / 0.2.0-rc.2; Desktop checks cover Windows + 0.2.0-rc.2. Desktop page checks and targeted regressions do not establish full final-package Desktop end-to-end acceptance. Older versions rely on prior page checks plus code regressions, not a newly repeated full GUI suite. Back up important data and check other plugins before upgrading; GitHub Release is the publication authority.
A · one-liner (recommended) — straight from the GitHub Release tarball, no Git needed:
dsh plugin --profile web add "https://github.com/Aisland-SJL/dsh-worktable/releases/latest/download/dsh-worktable.tgz"B · local clone (for hacking on the source) — link: accepts a local absolute path only (no spaces in the path):
git clone https://github.com/Aisland-SJL/dsh-worktable.git
dsh plugin --profile web add "link:<absolute path of the cloned dsh-worktable directory>/01_content"
# e.g. cloned into D:\tools → dsh plugin --profile web add "link:D:/tools/dsh-worktable/01_content"Either way the add command registers dsh-worktable in the profile bundle list (writes to ~/.dsh, may ask for authorization). If the dsh command is missing, use npx @deepseek-ai/dsh instead.
Save your tasks, fully exit the app from its menu/tray (closing the window is not enough), replace the installation-directory placeholder, run in PowerShell, then reopen the app manually:
& "<Desktop installation directory>\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "https://github.com/Aisland-SJL/dsh-worktable/releases/download/v0.4.0/dsh-worktable-0.4.0.tgz"Use the Desktop-bundled CLI and desktop profile, not an unpinned npx or Web CLI. Preserve the actual DSH_HOME. Browser-local projects/layouts/media do not automatically sync between Web and Desktop origins, even when sessions share one data home.
Explicit Ungrouped in a custom-window task no longer silently joins a workspace. For a blank control-room conversation, the tested DSH 0.2 host disables the ungrouped composer: choose a group or join a usable existing conversation. The plugin explains this and blocks that blank creation, without changing your choice or sending an activation message. An empty existing-group selection cannot silently default either; legacy ungrouped creation stays unchanged.
One package ships the host Cordis plugin and the web client:
/api/worktable/* routes — health, file system, git, file read/write, site serving, mkdir, workspaces, native skin template; WebSocket /api/worktable/term for the terminal pane (PowerShell on Windows).dsh-worktable/project-/; sharing a folder does not make a new project inherit another project's windowscd 01_content
npm install
npm run build # lib/index.js + lib/client.js
node --check lib/index.jslib/ to the wrong place while the host keeps loading the old bundlewindow.__ModuleLoader__.load handshake; react and @deepseek-ai/* stay external04_test/functional-diag.cjs (20 steps, strict gate) plus targeted probes (control room, bind panel, collapsed rail, model inheritance), the path matrix (04_test/pathutil-matrix.cjs) and update-check scenarios (04_test/probe-update-scenarios.cjs)04_test/anchor-dom.test.mjs (8 scenarios, both host conversation-root shapes) and data-home resolution regression 04_test/server-home.test.mjs (3 groups: no-cycle fallback, path expansion, official-branch fixture)npm run pack only. It also runs 98 input/session/details/transport/widget regressions, installation and client-factory gates. npm run test:widget covers 26 ownership, session-isolation, shared-folder, late-result and retry cases; after uploading, run npm run verify:remote -- --expect-sha v0.4.0 and check latest separately.Q: After a DeepSeek Harness update, the worktable fails to open / the service fails to start?
Projects, bindings and layouts live in browser localStorage; media lives in IndexedDB, and project files remain in your project directories. Back up important data before changing your installation, and keep the same browser origin when you want to retain its worktable state.
Case A: Harness works, only the worktable needs updating
dsh plugin --profile web add "https://github.com/Aisland-SJL/dsh-worktable/releases/latest/download/dsh-worktable.tgz"Case B: Harness itself is down (service fails to start / "Failed to load plugins")
node_modules junction was a local workaround for a particular old link: loader issue. Do not create one as a general fix; remove an existing workaround only after verifying that the installed plugins no longer depend on it, preserving its target directory.Every window title bar has a small annotate button (chat-bubble with a plus) next to the collapse toggle. Click it, your cursor becomes a blue speech bubble — click anywhere in a window to drop an input box, type what you want changed ("make this text bigger"), and hit ✓. The message is packaged (window number + coordinates + the clicked element + your request), filled into the chat input without sending — press Enter when ready, and the agent works through the annotation protocol (verify with a screenshot or the window, or ask one targeted question instead of guessing).
widget-result.json files are not imported. To re-enable an old conversation, send one task via the target window's Custom → Send to conversation action. Later edits in that conversation may reuse the binding. Manually closing/replacing content revokes it; existing mistakenly mounted tabs must be closed once. Shared-folder projects can still overwrite the same artifact if explicitly told to write the same physical file.The plugin does not add an analytics service. Update checks use a read-only GitHub Releases request and can be disabled in Settings. It also communicates with host APIs/WebSockets, loads user-selected pages, and provides an interactive terminal whose commands can access files and the network. Preferences and media use browser storage. See the permissions and external-services disclosure for file access, inherited terminal environment and other limits.
MIT