Introduction¶
After running DSH for a while, the left sidebar chat list often piles up a bunch of sessions: those finished but not closed, those hung halfway through, and those untouched for weeks but with hot contexts. Native lists only answer “which sessions exist,” not “which is burning the most tokens,” “which is approaching context limits,” or “how do I dispatch a sentence to that unfinished session.” The daily practice is to open them one by one to check status, or rely on memory of titles and directory names, which isn’t realistic for large scale.
onlyinliu/dsh-session-console is a community-maintained client plugin, maintained by onlyinliu, categorized as “Client.” It expands this list into a dashboard covering all sessions: reads global status, locates a specific session using a sentence of natural language, and dispatches a task to that session and reads back the result. Below is an introduction to its exposed capabilities, installation, and usage.
What is it¶
The plugin places an icon in the DSH sidebar; clicking opens the main panel. The README describes it as a “Left Sidebar Chat Administrator.” It solves three actions that were originally manual: flipping through chats to check status, finding chats by directory name, and switching to other chats to send messages.
The plugin marketplace entry (awesome-dsh-plugin) describes it as a dashboard covering every session, natural language session positioning, and cross-session task dispatching. The repository currently has 10 files in main, topics include dsh-plugin; the npm package name is dsh-session-console, and the current latest is 0.1.1 (released 2026-11-04, content is a compatibility fix). The star count on the plugin marketplace directory page is 0. This plugin is community-maintained and has no official affiliation with DeepSeek / Fangfang.
Dashboard: Read Global¶
The main panel lists all sessions; each row displays a batch of metrics:
| Metric | Meaning |
|---|---|
| Total Sessions / Running / Cold Sessions / Empty | Global Status Distribution |
| Cumulative Tokens (Input / Output / Cache Read / Cache Write) | Derived from tokenUsage projection, no archive scanning |
| Cache Hit Rate | cacheRead ÷ (input + cacheRead + cacheWrite) |
| Today’s Active / This Week’s Active | Bucketed by last active time of sessions |
| Context Pressure | Derived from contextPressure projection, showing percentage of pressureTokens ÷ contextWindow |
| Model | next from modelSelection projection (merged pending), showing provider/model |
| Heat | 100/(1+silentHours/6) + log10(1+token)*8 + log10(1+events)*5 + running40 |
| Hottest / Aggregated by Workspace | Who is burning tokens, which directory is busiest |
The list supports filtering for All / Running / Today / Cold Sessions / Empty Sessions, sorting by Heat, Consumption, or Recent, and provides instant filtering by title and path. Data comes from DSH’s existing projections and session headers, no archive scanning, and overhead is concentrated in this process.
Reference: Locate a session using a sentence of natural language¶
In the “Reference and Dispatch Task” input box, enter a sentence of natural language, e.g., How is the content related to the example project going? The plugin’s processing involves four steps:
- Strip colloquialisms like “怎么样了 / 情况 / 进度 / 相关 / 内容 / 帮我 / 看看”, leaving the subject
示例项目; - Compare the subject against each session’s title,
cwd, directory tail, agent preset, and session id, with weights of 6 / 4 / 3 / 1 / 1 respectively; - Substring hits get full weight bonuses; others use CJK bigram plus Latin word Dice similarity;
- “Locked” only if
score ≥ 40and no cross-workspace opponents with the same score exist; otherwise, candidates are listed for you to click.
The comparison uses the real cwd in the session header, not the encoded name ~6570~636E~… from the archive directory, so when a directory is named 示例项目-v2, a sentence saying “示例项目” can still match it. Brother sessions with the same score in the same workspace are not considered ambiguous; the hottest one is taken directly. Only when a cross-workspace opponent with the same score appears is it considered ambiguous and candidates are listed.
Dispatch Task: Write a sentence into another dialogue¶
After selecting the target, write a sentence; two dispatch methods:
queue(Queue): Insert as the next round of input; runs immediately when the target chat is idle;steer(Interrupt Insert): If it is running, insert this sentence into the current round.
It uses the same channel as the UI input box (sessionController.prompt), so cold sessions are automatically restored, and messages are persisted. After dispatching, you can read the latest user / assistant messages, round / tool call / tool failure / exception round statistics, and the last failure reason in the details card, or click to jump directly to that chat to see the full context.
Installation and Enablement¶
Published to npm:
plugin_manager install_bundle target=dsh-session-console
Can also install directly from GitHub:
plugin_manager install_bundle target=github:onlyinliu/dsh-session-console
Install from local directory during development (changes take effect immediately):
plugin_manager install_bundle target=D:\create\dsh-session-console
After installing, restart DSH once for the icon to appear in the sidebar. The package name and the github: line are from the original README text; do not concatenate commands yourself based on the plugin name.
Two known installation issues, explained in the README:
declares no dsh.bundlewhen installing by package name: The mirror hasn’t synced to the latest version yet, resolving to the0.0.0-stageplaceholder version left by the npm release. The solution is to switch the installation source to the official npm source, or usegithub:onlyinliu/dsh-session-console. Retry after the mirror’slatestsyncs to0.1.1.incompatible-versionwhen installing: The installed version is0.1.0. Itsengines.dshupper bound is written as<0.2.2-0. According to semver pre-release rules,0.2.2-rc.1is greater than0.2.2-0, so it is judged incompatible;0.1.1has widened the upper bound to<0.3.0-0.
The declaration for 0.1.1 is:
"engines": { "node": ">=18", "dsh": ">=0.2.0-rc.2 <0.3.0-0" }
Pay attention to DSH’s judgment behavior when loading plugins: as long as the manifest declares engines.dsh, it only recognizes that; @deepseek-ai/dsh-* in peerDependencies will be ignored, compared with includePrerelease: true. So an upper bound written like <0.2.2-0 with -0 means every time DSH releases a new rc will be judged incompatible, which is exactly why 0.1.0 couldn’t be installed on 0.2.2-rc.1. For old versions wanting to upgrade: those installed by package name can use “Update” in Settings → Plugins → Entry Details page; those installed from local directory / link: / github: / tarball have no “Update” entry, remove first then re-add. The README also states that when a package with the same name is already installed, install_bundle directly reports already-installed, there is no way to bypass it by writing a precise version, you must remove it first then install. The tools/compat-check.mjs in the repository can replicate this judgment outside of DSH:
node tools/compat-check.mjs package.json
# dsh-session-console@0.1.1 engines.dsh = ">=0.2.0-rc.2 <0.3.0-0"
# dsh 0.2.2-rc.1 compatible
# ...
# ALL_COMPATIBLE
Typical Usage¶
The following flow is given in the README and can be understood as a complete operation.
- Open the sidebar icon to enter the panel, use filtering and sorting to find the target session; when unsure which one it is, enter a sentence of natural language in the “Reference and Dispatch Task” input box, e.g.,
How is the content related to the example project going?, and see if the candidate is locked. - After locking, write a sentence to say. Select
queueorsteer. If the target session is in a cold state, it will automatically recover. - In the details card, read the latest user / assistant messages and round / tool call / tool failure / exception round statistics, and the last failure reason when there is a failure. Click to jump to that chat if you need the full context.
The Host side exposes same-origin HTTP routes (only loopback address accessible) and aggregation entry points; the client panel fetches data through these routes. In addition to the sidebar panel, the plugin also registers 5 tools for agents; specific names and parameters refer to the repository lib/index.js.
Applicable Scenarios and Notes¶
Suitable for developers who have multiple DSH sessions open at the same time, need to quickly locate by workspace or topic, and wish to temporarily dispatch work to other sessions. Its read operations cover global token usage and context pressure, which can reduce the burden of opening each one to check status; task dispatching uses the UI input channel, cold sessions recover, and messages are persisted.
Before using, be clear about two points:
- The plugin runs with the permissions of the current DSH process, can see statistics information for all sessions, and can also dispatch input to other sessions. Before installing, read the source code first to confirm that the exposure scope of routes and tools matches expectations.
- The license is MIT (from
package.json), release credentials and internal tokens are not in the repository, and are not content introduced by this plugin.
Also note the release rhythm: the domestic region of the plugin marketplace prioritizes reading the npm package dsh-plugin-catalog, which is only published on the schedule / workflow_dispatch branches of build-site, so the domestic directory may lag until the next night. If you need to see it urgently, switch “Global” in “Market Settings → Download Region” in the UI, or simply write the installation source as the official npm source.
Conclusion¶
The value of this plugin lies in turning the high-frequency small task of “flipping through the list to find a session” into a static overview, paired with a sentence of natural language for positioning and a channel for cross-session dispatch. The benefits are obvious: click fewer times, switch windows fewer times. Inappropriate scenarios are also clear: if only one or two sessions are needed, or the workflow is managed via the command line, the benefits are limited.
- Plugin Marketplace Directory Page: https://www.skillhub.cn/plugins/onlyinliu/dsh-session-console
- Source Code Repository: https://github.com/onlyinliu/dsh-session-console