Cross-session archive: overview workbench, folded timeline, subagent lineage, full-text search, rule+LLM summaries, ZIP export, live tracking. Native session-page embeds: turn rail, docked right panel (live mode, pinned to original session on switch), rename (official-synced), conclusion digest, health monitoring + persistent header chip (idle / active / tool-wait / stalled). dsh v0.1.2+: fuses with the official TurnNavigatorRail — vector-icon info chips (duration, tool calls, errors, thinking) plus lazy tool distribution inside the official preview card, right-click opens the workbench; the classic piano-key strip is on by default and delegates unloaded-turn jumps to the official auto-load engine; the official rail can be hidden entirely. Settings dialog section with 10 tunable behavior params.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-session-flow
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:YeqingTang/dsh-session-flow
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
English | 中文
Restructures DSH session message streams into a foldable information flow with session-level summaries: every session becomes an archive card for cross-workspace review, search, and export. The built-in session views (Trajectory / Chat) excel at the microscopic inspection of what is happening right now; this plugin fills the missing layer of post-hoc review / archival / insight.
Interface tour
| Overview workbench | Session Flow tab |
|---|---|
![]() |
![]() |
| Session cards with status, conclusion line, first task; hover ✎ to rename inline | "Session Flow" tab embedded in the native conversation page |
| Turn rail | Cross-session full-text search |
|---|---|
![]() |
![]() |
| Turn navigation on the left of the Chat tab: collapsed dashes ⇄ expanded cards, one-click jump | Free text in the overview triggers full-text mode: recall across workspaces, hits jump & locate |
| Dock details right | Folded detail view |
|---|---|
![]() |
![]() |
| Dock the detail into the official right panel: conversation + flow side by side, drag to resize | Turns folded by default; expand in true chronological order; four-tab navigation |
Features
| Capability | Description |
|---|---|
| Overview workbench | Session cards (status / errors / duration) + conclusion line; sort, filter, workspace tabs |
| Structured search | tool: file: err: prefixes + free text |
| Folded detail view | Turns collapse to "user message + conclusion"; expand in true chronological order; on-demand loading |
| Four-tab navigation | User messages / tools / errors / search, click to locate & highlight |
| Lineage tree | Subagent derivation tree (offline archive + live runtime channels) |
| Dual-mode summary | Rule summary (zero cost, assembled live) + LLM summary (cached, prompts regeneration) |
| Live tracking | 3s polling for running sessions, breathing highlight + generating indicator |
| ZIP export | Overview + chunked timeline as a Markdown report |
| Session rename | Same data source as the official title (log-backed), synced both ways in real time |
| Health monitor | Four-level classification: active / tool-running / quiet / likely stalled; overview badges + detail live bar |
| Header health chip | Next to the mode label in the session header; a vertical bar that expands into a status card on hover, click to open detail |
| Session Flow tab | Embedded tab on the native conversation page, cross-navigates with the workbench |
| Turn rail | Turn jumps on the left of the Chat tab (Chat tab only) |
| Cross-session full-text search | Content-level recall, hits jump into the Session Flow tab and locate |
| Dock details right | Side-by-side with the main conversation |
| Cache management | View & clean index/timeline caches (never touches DSH data) |
Install
# From the plugin market (search dsh-session-flow), or:
dsh plugin add dsh-session-flow
dsh plugin add github:YeqingTang/dsh-session-flow
After installing: restart the DSH Web service and hard-refresh the browser (Ctrl+Shift+R). Success shows the "Session Flow" entry in the sidebar.
Requirements: DSH Web GUI (latest stable); Node.js ≥ 22.19 (built-in zstd decoding, zero third-party dependencies).
Usage
- Overview: sidebar "Session Flow" → all session cards. Search supports
tool:/file:/err:prefixes; free text of ≥2 characters additionally triggers cross-session full-text search. - Detail: click a card. Turns are folded by default — click a turn header to expand; the four-tab navigation locates entries; the header offers LLM summary, ZIP export, dock right, and lineage.
- Native conversation page: the "Session Flow" tab reviews the current session in place; the turn rail on the Chat tab jumps to any turn; hover the title for ✎ rename (synced with the official title in real time).
- Health status: the health chip right of the mode label in the header (vertical bar: green = active / amber = tool running / red = likely stalled) expands on hover; click to open the Session Flow detail. Overview cards and the live bar show the same badges.
- Live: click "Live" on a running session, auto-refresh every 3 seconds.
External dependencies & requirements
- Runtime: DSH Web GUI (0.1.2-rc.1 through 0.2.1-rc.2; per-release declaration in
package.json→dsh.compatibility.dshReleases); Node.js ≥ 22.19 (uses Node's built-in zstd decoding; no third-party decoder). - Runtime dependency: only
@deepseek-ai/schemastery(the DSH-vendored schema library used for the settings form schema and.volatile()hot updates). - No lifecycle scripts:
preinstall/install/postinstall/prepareare not declared, so installation runs no scripts. - Mounted as a Bundle Patch:
cordis.patch.ymlonly inserts this plugin's own entry — it never disables, replaces, or shadows official components. - An independent third-party project, not an official DeepSeek component; the package name does not use the
@deepseek-ai/*namespace.
Permissions & data boundaries
| Scope | Purpose | Boundary |
|---|---|---|
Read ~/.dsh/sessions/** |
Parse session archives (zstd/JSONL) into indexes and timelines | Read-only; never modifies or deletes session files |
Write ~/.dsh/session-flow/** |
Private index, timeline cache, rename map | Writes only here; cache management cleans only this directory |
Local POST /api/session-flow |
Index / detail / search / export / health | Registered on DSH's own webServer, behind the host's login auth; no outbound network calls from the host |
Read official session-list projections (sessions.list) |
List titles and rename sync | Read-only; never mutates official state |
Host llm service (optional) |
LLM summaries | Uses only the model configured in DSH; no extra providers |
- No telemetry, no usage reporting; ZIP exports are local files.
- Settings are saved into the DSH profile patch (
~/.dsh/profiles/<profile>/cordis.patch.yml), the same store as official settings.
Known limitations & risks
- Archive files are host implementation details: each dsh archive-generation migration (v1→v2→v3→v4) may change how logs are read. This plugin adapts to the highest generation and handles the v4
isErrorchange, but future formats are not guaranteed to work unchanged. - The index is an incremental cache: the first open after install/upgrade performs a full scan; very large sessions (hundreds of MB) can take a while on that first scan. Host data is never affected.
- "Dock details right" needs the official right-bar tab system (dsh ≥ 0.1.5) or the legacy details column (≤ 0.1.4); in a custom shell with neither, the button is disabled with an explanation.
- LLM summaries require a configured model in DSH; without one, only rule summaries are available.
- DOM-level enhancements (turn rail / official rail enhancement / health chip) are DOM-observation layers (the host exposes no extension slots); a major host DOM change can silently disable them until adapted.
- Does not take over or modify official UI behavior; coexistence with third-party skin/layout plugins may need extra adaptation.
Acknowledgements
- DeepSeek Harness (dsh) — the runtime this plugin builds on.
- @deepseek-ai/dsh-session-persistence-jsonl — the zstd multi-frame scanning algorithm (
lib/archive.jsadapted, MIT licensed). - dsh-web-ui (@linxin666 family) — reference for the sidebar-entry / panel mounting pattern; no code copied.
- dsh-webui-market-plugin — plugin-market mechanism and distribution channel.
Apache-2.0 licensed; original license notices for third-party code are retained.
License
Links
More in this category
ranxianglei/billion-context★ 7263
The official billion-context plugin: a context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).
Minglink/dsh-infinite-gen-4★ 4234
System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status badge driven by a session projection.
liangmianya/dsh-synapse★ 714
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
MichengAI/dsh-archive-manager★ 352
Adds an archived-sessions page in Settings to search, restore, and delete archived DeepSeek Harness sessions by workspace.
Nwflower/dsh-chat-import★ 310
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.
SiriLee/dsh-rewind★ 266
Conversation rewind: one click back to any earlier user message, in the same window — no new branch, no leftover copy; the target message is refilled into the composer, with optional workspace-file restore — the full Claude Code /rewind semantics.






Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.