dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
补齐 DSH 在对话显示设为 Compact(紧凑)时无法自动折叠的能力。 Fills in the missing capability for DSH to auto-fold when the conversation display is set to Compact.
Fills in the missing capability for DSH to auto-fold when the conversation display is set to Compact. 补齐 DSH 在对话显示设为 Compact(紧凑)时无法自动折叠的能力
中文 · MIT
DSH has shipped a built-in Turn navigation rail (the turn-mark ladder on the right side of the transcript) since 0.1.2-rc.1: every started turn has a mark, and turns not yet paged in are labelled "Load and jump to turn N". Clicking the topmost mark (turn 1) drives the official loadThrough to page in the entire history and lands at the top; once hasMore becomes false, the official native Compact per-turn folding takes over — exactly the same end state this plugin produces.
This plugin is therefore redundant and no longer maintained for 0.1.2-rc.1 and later (the code is kept for reference):
It is still worth keeping only if you truly need "zero-click auto-backfill while staying at the tail"; otherwise uninstall:
dsh plugin --profile web remove dsh-auto-fold
When DeepSeek Harness Web opens an older conversation it only loads the latest 50 messages; older content requires clicking "Load earlier" page by page. The official native per-turn folding only engages once the whole history is loaded (hasMore === false) — each completed turn then collapses into one summary row (N tool calls · Thought for a while) with only the final answer visible. While history is incomplete the official client deliberately keeps everything expanded — that gate exists to guarantee the fold summary's counts and boundaries are authoritative.
This plugin automates the whole path:
Open an older session → everything expanded (official gate: data not complete yet)
↓ auto session.loadThrough(0), pages 200 messages at a time to the very beginning
History complete (hasMore=false) → official native per-turn folding takes over, one summary row per turn
transcriptView; the official "fold only when data is complete" guarantee stays intact;Pure browser-side plugin mounted on the official session-scoped slot conversation.composer.dock (renders nothing once loading finishes):
useSession) and sessionId from the slot's standard props;transcriptView from the official ui-chat settings namespace via settingsScope; continues only when it is compact (the default);openState === 'open' and hasMore === true, calls the official session method session.loadThrough(0);loadThrough pages backward (200 messages per page) until hasMore === false, with a built-in no-progress guard;hasMore === false, the official native per-turn folding engages.loadThrough is idempotent: repeated triggers (streaming appends / in-flight) are safe no-ops. Session switches are followed automatically.
dsh plugin --profile web add github:zhengmz/dsh-auto-fold
Or from a local checkout:
dsh plugin --profile web add /path/to/dsh-auto-fold
Restart DSH (dsh web) and refresh the browser afterwards.
dsh plugin --profile web remove dsh-auto-fold
Fully reversible; no official files are modified.
| Key | Value | Effect |
|---|---|---|
dsh-auto-fold.disabled | '1' | Disable auto-loading without uninstalling |
localStorage.setItem('dsh-auto-fold.disabled', '1') // disable
localStorage.removeItem('dsh-auto-fold.disabled') // re-enable
⚠️ No longer maintained — see the note at the top: since
0.1.2-rc.1the official turn navigation rail provides an equivalent capability.
0.1.2-rc.1 - 0.1.5-rc.2 (Web profile)openState / hasMore / loadingOlder), the conversation.composer.dock slot, and the ui-chat.transcriptView setting, verified against 0.1.2-rc.1 / 0.1.5-rc.2hasMore is per-session in-memory state, so switching back to a session re-triggers the backfill once);