dsh-workspace-promote
Manifest validDSH host plugin: promote the workspace you just submitted a task in to the top of the sidebar — once per submission, and never while the task is running. When submitting a task, promote that workspace to the top; do not reorder during task execution.
dsh-workspace-promote
English | 中文
A DeepSeek Harness (DSH) host plugin that promotes the workspace you just submitted a task in to the top of the sidebar — once per submission, and never while the task is running.
One command, no patch editing — the package ships its own profile bundle patch:
dsh plugin --profile web add dsh-workspace-promote
Restart dsh web afterwards (host-plane plugins mount at boot).
The gap it fills
DSH's sidebar handles the two layers very differently:
| Layer | Native behaviour | Enough? |
|---|---|---|
| Sessions inside a workspace group | View options default to orderBy: "updated"; a session with new activity is promoted to the top of its group | ✅ Native, no plugin needed |
| Workspaces themselves | Order comes from the durable workspaceIds array, i.e. manual drag order; it never reacts to what you are actually working on | ❌ This plugin |
So if you want "whatever project I am working on floats to the top", only the workspace layer is missing, and that is exactly what this plugin adds.
Trigger semantics
The plugin reorders on exactly one condition: a user/message event whose data.source.kind === "user" — a prompt a human actually submitted.
The same user/message event also carries two other kinds of content, distinguished by source.kind. All of them are ignored:
source.kind | What it is | This plugin |
|---|---|---|
user | A direct human prompt | ✅ promotes |
plugin | Synthetic agent.inject() context (file-change notices, AGENTS.md, skill content, cron notifications) and goal continuation rounds | ❌ ignored |
tool | A tool result (role is user too) | ❌ ignored |
Execution-time events — assistant/message, step/start, step/end, turn/start, turn/end — are ignored as well.
Net effect: one submission, one promotion. The sidebar does not move while a task is being executed.
Hooking the raw session/event feed instead (the obvious first implementation) is what makes the sidebar jump continuously, because tool results are themselves user-role events.
How it works
- On a qualifying event it calls
workspaceRegistry.insertBefore(id, currentFirst). - If the workspace is already first, or there are fewer than two workspaces, it returns immediately and writes nothing — so bursts of events cannot cause a write storm.
- No state file:
insertBeforemutates the durableworkspaceIdsorder, so the result survives restarts for free, with no "insufficient activity samples after restart" problem. - Ungrouped sessions and subagent child sessions do not participate.
- Any failure is logged only; it never affects the session itself.
Audit log
~/.dsh/workspace-promote.log (honours DSH_HOME). Append-only, and useful for answering "which behaviour is this process actually running, and when exactly did it fire":
2026-09-15T09:31:44.809Z boot pid=49220 trigger=human-prompt-only
2026-09-15T09:33:11.770Z promote workspace=039cce9b-... session=session-1ee5c45f-... from=a6680e0c-...
ctx.logger output has no guaranteed destination; this file does.
Trade-off
Real-time ordering competes with manual drag: if you drag workspace B to the top and then submit a task in A, A returns to the top. That is inherent to "dynamic ordering", not a bug.
Difference from dsh-workspace-sort
dsh-workspace-sort also orders workspaces by activity, but its semantics are "re-sort at most once per calendar day, then stay frozen" — the order in the morning reflects activity up to yesterday. This plugin triggers on the user's submission action instead, and keeps no state file.
Pick dsh-workspace-sort if you want the sidebar to stay put all day; pick this one if you want the project you are actively working on to be on top.
Verify
- Submit a task in some other project → that project jumps to the top.
- Watch the task execute (many tool calls, many steps) → the sidebar should not move again.
~/.dsh/workspace-promote.logshould gain exactly onepromoteline per submission.
Uninstall
dsh plugin --profile web rm dsh-workspace-promote
Then restart dsh web. If you instead wired it by hand into cordis.patch.yml, delete that workspace-promote row and restart.
Note: do not run both install paths at once. If you added the row manually and later install the package as a bundle, the same row id would be inserted twice — remove one first.
License
MIT
Comments
Loading…
From the same category
DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.
★ 41.7k
↓ 156/wk
MIT
Aug 24, 2026
dsh plugin --profile web add dsh-plugin-reactive-resumeby Tencent
Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.
★ 8.6k
↓ 6.1k/wk
MIT
TypeScript
Oct 10, 2026
dsh plugin --profile terminal add @wxg-prc-cpg/browser-skill-dsh-pluginby yjh051108
dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).
★ 7k
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby Q00
Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode,
★ 6.2k
MIT
Python
Oct 7, 2026
by dsh-market
The plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场
★ 6.1k
↓ 112.4k/wk
MIT
TypeScript
Oct 10, 2026
dsh plugin --profile web add dshmarketby superdesigndev
OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn
★ 5k
NOASSERTION
Python
Oct 11, 2026
dsh plugin --profile web add treg-dsh