Right-click session menu and sidebar session manager: pin, rename, archive, fork, export, copy cwd/id/deep link, and open in explorer or a new window.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Semidia/dsh-session-manager
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A client plugin for DeepSeek Harness web that adds a right-click context menu on sidebar conversation rows and a Session manager entry at the sidebar footer.
It answers the frequent request "the three-dot menu has too few options compared
to Codex". The stock three-dot menu is hard-coded (no public session-row action
slot in 0.1.0-rc.6), so this plugin works around it instead: right-click any
session row for a full action menu, and use the footer button for the current
session.
Features
Right-click a conversation in the sidebar:
| Action | Backing |
|---|---|
| Pin / Unpin chat | localStorage (dsh.session-pins.v1) — shared with dsh-session-pins |
| Mark as unread / read | Local state (dsh.session-unread.v1) with a dot on the row; opening a session marks it read |
| Rename chat | Official sessions.binding(id).session.rename() + a rename dialog |
| Archive chat | Official workspaces.archiveSession() |
| Continue in new chat | Official sessions.fork() then open the child |
| Open in file explorer | Official workspaces.openPath() on the session's workspace |
| Copy working directory | Workspace path from the workspaces store |
| Copy session title / ID | Clipboard (writeClipboard) |
| Copy deep link | Copies <origin>/?session=<id> — opens the session when dsh-deeplink is installed |
| Open in new window | window.open(.../?session=<id>) — needs dsh-deeplink to land on the session |
Sidebar footer "Session manager" (current session): export session ZIP, archive, fork, copy title / ID.
Not implemented (no backend in rc.6): continue in a new working tree, delete-session.
Install
dsh plugin --profile web add github:Semidia/dsh-session-manager#v0.1.1
# recommended companion for deep links:
dsh plugin --profile web add github:qyw233/dsh-deeplink#main
dsh web
Restart dsh web once after adding, then hard-refresh the page. No official
package is patched except one additive data-session-id attribute on the
session row (see below).
How it works
- A one-line additive patch adds
data-session-idto the sidebar session row (@deepseek-ai/dsh-client-ui-workspace→SessionNodeItem). Without it, no public API exposes which session a row represents. - The plugin registers a capture-phase
contextmenulistener and a menu in the publicshell.overlayslot, positioned at the cursor via the primitivesMenu(portal +getAnchorRect). - The footer entry registers in the public
sidebar.footer.actionslot (additive cell, idsession-manager, same slot as Session Pins). - All session/workspace actions use public client services
(
sessions,workspaces,locale,slots); no private host APIs.
The
data-session-idrow patch lives in the installed@deepseek-ai/dsh-client-ui-workspacepackage and is overwritten on a dsh upgrade — re-apply it (one line) after upgrading.
Compatibility
Targets @deepseek-ai/dsh@0.1.0-rc.6. DeepSeek Harness is in developer
preview; a new release candidate may change the slot contracts this plugin
relies on until compatibility is reviewed.
License
MIT
Links
More in this category
liangmianya/dsh-synapse★ 264
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
Totoro-qaq/dsh-plugin-bridge★ 163
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Nwflower/dsh-chat-import★ 125
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
Anionex/dsh-turn-rewind★ 106
Rewind conversation and workspace state, powered by a persistent Change Ledger.
Renzic-Stone/DSH-EasyRewrite★ 98
Inline-edit and recall your own user messages in dsh web — lazily and seamlessly, with a version pager and per-session draft persistence.
lamost423/dsh-trace-compare★ 60
Trace Compare & Live Maze: draw the agent's real exploration — main path, failed or dead-end detours, backtracks, and subagent branches — on one wall-clock timeline; upload 1–2 session logs for a same-axis compare, or watch it grow live in a session tab.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.