dsh-web
zhu1090093659
DeepSeek Harness (DSH) Web 插件聚合生态 · 万物皆插件,通过创意工坊分发||DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Shrbuz/dsh-session-buddy
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 中文
[!WARNING] This project is no longer maintained.
dsh web has since added the capabilities this plugin existed to fill in, so it no longer has much reason to exist. Development has stopped: there will be no further updates, releases, or support, and issues and pull requests may go unanswered.
The repository stays online for reference only — the code, the published npm package, and this documentation are frozen as-is. If you still want to use it, please treat it as unmaintained software and check it against your dsh version before relying on it.
Session notifications + an in-conversation ladder outline for the DeepSeek Harness Web GUI (dsh web). Get notified when the AI finishes replying, asks you a question, or needs command approval — even while the tab is away — and navigate past questions via a compact outline rail.
Built independently with dsh + Deepseek-V4-Flash
reply: the AI finished replyingask: the AI explicitly asks you a question (ask-user tool) — a plain finished reply does NOT re-fireconfirm: a command approval is pending (approval dialog)(●) title badge, and an optional sound+older" footerdsh plugin add CLI (restart dsh web to apply)tool/result persisted with an empty tool call id, which dsh refuses to read back) — are marked with a small warning badge on the session rowThink reasoning blocks, the interleaved text "小结" notes, and any context injections between them merge into one "共 N 次思考" row (the turn's final summary stays visible); click to expand them againdsh plugin --profile web add dsh-session-buddy
dsh plugin --profile web add link:<this-dir>
After installing, restart dsh web, then configure it under 设置 → 插件 → 插件配置 → "Session Buddy @Shrbuz".
Two ways to upgrade to a newer version:
dsh plugin --profile web update dsh-session-buddy
The plugin is installed as a semver range (^0.x.y), so dsh plugin update picks up the newest compatible release. To force a specific version:
dsh plugin --profile web add dsh-session-buddy@<version>
Open the plugin settings card → "Version & upgrades" → "Check for updates", then click "Upgrade" when a newer version exists.
After upgrading either way, restart dsh web to load the new version.
+older footer to page in hidden history; the jump-to-latest button scrolls to the bottom+older footer stays fixed and always reachabledsh plugin update or the settings card ("Version & upgrades")| Layer | Implementation |
|---|---|
| Notifications | Host watches the session event log and relays reply/ask/confirm triggers over SSE (/api/session-buddy/events) to every tab; a notified ledger claimed at the loopback-only /api/session-buddy/toast route dedupes across tabs and reloads (one OS toast per event). Client-side DOM observation (MutationObserver + official anchors + the composer stop-button running signal) is the fallback while the stream is down |
| Outline | Rungs come from the official sessions service snapshot (independent of how much DOM is rendered); dsh conversation history is a paged window, so the outline pages hidden history in on demand and aligns rungs to the DOM via the official anchor keys |
| Upgrades | The host reads https://registry.npmjs.org/dsh-session-buddy/latest (fail-closed when offline) and runs the official dsh plugin CLI for the actual upgrade |
| Session cleanup | The host lists sessions via sessionPersistence, flags corruption by replicating the harness's own load-time message validation, and deletes a session's directory (resolved through the persistence service's locate(), never from user input); the browser marks corrupt rows and injects the delete item into the row menu |
| Tool-run collapsing | Pure client DOM pass over the official anchor rows: tool-call rows are grouped by their enclosing turn-tail row (the tail is only published after turn/end, so folding happens exactly when the turn is finished), each group collapses to a "共执行 X 步操作" chip with per-session expand state |
| Transcript folding | The same official-markers pass groups a turn's assistant-step rows (think blocks + text "小结" + context injections) by its turn-tail row into a "共 N 次思考" chip, leaving the final summary visible; over-long user rows are clamped to 6 lines with an expand bar. Both silently degrade if the official markers vanish |
| Outline positioning | The rail re-reads the conversation scrollport's right edge on resize, on container/ancestor resize, and on DOM mutations (coalesced to one pass per frame), so it always moves with the conversation width |
The UI is theme-aware and styled entirely with the official --dsw-alias-* design tokens.
data-chat-flow-kind / data-chat-anchor-key markers (question clamping additionally on the _text_ class); if a future dsh version drops them, the plugin silently stops folding (it never hides rows it cannot confidently attribute to a finished turn)dsh webpnpm install
pnpm build # tsc -b && tsdown → lib/
pnpm typecheck
Regression scripts:
node scripts/smoke-host.mjs # host-logic smoke (no web)
node scripts/verify-live.mjs # live check against a running dsh (boot graph + bundle + routes)
node scripts/verify-outline.mjs # CDP: restore session, page hidden history, rung click/flash
node scripts/verify-tooltip.mjs # CDP: hover tooltip on a paged-in rung
node scripts/verify-notify.mjs # CDP: notification fires while hidden, silent while visible
Apache-2.0
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: conversation-enhancement、session-buddy、web-ui。