DSH Hub

Han-Yao94/dsh-session-toolkit

dsh-session-toolkit

UIWeb UI2 GitHub stars· updated 2026-08-24

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-toolkit

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-session-toolkit DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-session-toolkit.svg)](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 both conversation.session.header.actions (id session-identity, order 40) and conversation.input.left (id session-identity-input, order 40).
  • Global Prompt — a settings page (settings.section, id global-prompt, order 30) rendered as Tabs (Global / Per workspace). The Global tab injects one prompt into every conversation's system prompt (section global-prompt, order 50); the Per workspace tab injects per-workspace prompts (section workspace-prompt, order 60). { runs are spaced out (/\{+/g) to avoid prompt-variable conflicts.
  • Workspace Prompt — per-workspace prompt injected for sessions whose cwd prefix-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's cwd, the most-specific (longest matching path) one wins. removed records 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 the prompt-file-status namespace (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 from agentDefaultModel); switching a session on resumes it immediately (false→true edge). Filters: switch on, top-level only (no subagent origin, no delegationDepth > 0, no parentSession), 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, id web-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

Related plugins