Han-Yao94/dsh-session-toolkit
dsh-session-toolkit
dsh-session-toolkit is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile <name> add dsh-session-toolkitRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-session-toolkit)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Han-Yao94/dsh-session-toolkit, cleaned of badges and images.
dsh-session-toolkit
English | 中文
Consolidated plugin toolkit for the DeepSeek Harness. Six previously separate local plugins — session identity, global prompt, session auto-resume, web restart service, Session-log button relocation, and peer-session messaging — merged into one installable package (official bundle form, dsh.bundle.patch), installed with dsh plugin add.
Features
- Session Identity — a per-session persona prompt injected into that session's system prompt (independent section
session-identity, order 40, resolved per agent at every assembly), with a default identity and per-session overrides. UI: identity dialog (enable switch, 4000-char soft limit, save/reset, edit default, inherit default) and status buttons in bothconversation.session.header.actions(idsession-identity, order 40) andconversation.input.left(idsession-identity-input, order 40). - Global Prompt — a settings page (
settings.section, idglobal-prompt, order 30) rendered as Tabs (Global / Per workspace). The Global tab injects one prompt into every conversation's system prompt (sectionglobal-prompt, order 50); the Per workspace tab injects per-workspace prompts (sectionworkspace-prompt, order 60).{runs are spaced out (/\{+/g) to avoid prompt-variable conflicts. - Workspace Prompt — per-workspace prompt injected for sessions whose
cwdprefix-matches a configured workspace directory (the directory + its subdirectories). The workspace list is derived from active sessions'cwd(ctx.agents.roots()), deduplicated and counted. When several enabled workspaces prefix-match a session'scwd, the most-specific (longest matching path) one wins.removedrecords paths the user removed so the active-workspace sync never re-adds them. The workspace row's enable switch is live-save (persisted immediately); the Save button only persists the prompt content + referenced files. - Referenced Files — both global and workspace prompts can reference a list of files. Every assembly re-reads each referenced file with
fs.readFileSync(UTF-8, live), sanitizes its content ({runs spaced out), and injects it after the prompt text. A read failure is skipped (the file's content is not injected) and reported in the UI with the reason. Supports plain text and markdown; no size cap. Per-file read status is projected to the UI via theprompt-file-statusnamespace (ok: N chars /fail: reason / pending). - Session Auto-Resume — sessions with the per-session switch on are resumed automatically after a GUI restart (
ctx.agents.resume, carrying the default model fromagentDefaultModel); switching a session on resumes it immediately (false→true edge). Filters: switch on, top-level only (no subagent origin, nodelegationDepth > 0, noparentSession), non-blank (seedLength !== 0). Concurrency-bounded (CONCURRENCY = 3) with per-item failure isolation and an in-flight set against duplicate resume. - Web Restart — a "Restart service" entry in the General settings (
settings.general.item, idweb-restart, order 90) that restarts the GUI server with no UAC prompt (the spawn inherits the server process token, so the restart script's elevated branch is never reached) and shows a full-screen progress overlay (probe-driven progress, fill-up animation before reload, 90 s timeout fallback with manual refresh). Routes:GET /api/restart(health probe, constant 200) and
…

