Preface¶
In daily usage of DSH, some tasks don’t actually require a workspace or tool calls: asking about a concept, looking up a piece of information, writing a short snippet, or polishing a paragraph to sound more natural. If you had to open a separate chat application every time for these “casual conversations,” the experience would feel a bit fragmented.
Here is dsh-chat. It is maintained by MarkJun236, with a current version of 0.1.0 and an MIT license. This plugin adds a sidebar “Chat” entry to the DSH Web GUI: it is not tied to a workspace and does not include tools. It directly reuses the providers/models already imported into DSH, supporting streaming output and multi-session management.
Its goal is specific: keep casual conversations that don’t need complex context within the DSH Web GUI, reducing the steps of opening another app just for a simple Q&A.
What is this¶
dsh-chat is a casual conversation plugin for the DSH Web GUI. It provides an independent “Chat” panel in the sidebar for simple Q&A, writing, and text organization.
It does not introduce a new model adaptation layer, nor does it require reconfiguring model keys. Instead, it reuses DSH’s ctx.llm model routing. In other words, providers/models already imported into DSH can be switched and used within this chat panel.
It is mounted via the profile’s cordis.patch.yml and node_modules symlink, without modifying the DSH source code.
Core Features¶
Independent Sidebar “Chat” Entry¶
dsh-chat provides a “Chat” entry in the DSH Web GUI sidebar. Clicking it opens an independent chat panel that does not occupy the workspace interface and does not require binding to a specific workspace.
Reuse of DSH Model Routing¶
The plugin directly reuses DSH’s ctx.llm model routing, supporting switching between imported providers/models.
You can select a model at the top; the plugin remembers your last selection by default.
Streaming Output¶
Conversations use streaming output. NDJSON frames support real-time display of delta, reasoning, and usage, corresponding to content increments, thought processes, and usage information, respectively.
Multi-session Management¶
The left side provides a session history list, supporting:
- Creating new sessions
- Switching sessions
- Renaming sessions
- Deleting sessions
AI Auto-Titles¶
The plugin can generate session titles based on conversation content.
This feature can be disabled, and a separate model can be specified for title generation.
Markdown Rendering¶
Supports a subset of Markdown GFM rendering, including:
- Code blocks
- Inline code
- Tables
- Blockquotes
- Lists
- Links
- Images
The rendering strategy uses escape-first and protocol whitelisting.
Follows DSH Theme¶
The interface follows DSH’s light and dark themes.
Hot-Swap Mounting¶
The plugin is mounted via the profile’s cordis.patch.yml and node_modules symlink, without modifying the DSH source code.
Installation and Activation¶
The verified materials do not provide a directly copyable official installation command. Below is the profile bundle activation method provided in the materials.
-
Install
dsh-chatinto DSH’snode_modules, or its symlink directory. -
List this package in the
dsh.profile.bundlesof the target profile, or insert the plugin line into the profile’s owncordis.patch.yml.
Example configuration:
- insert:
- id: chat
name: 'dsh-chat'
- After starting DSH Web, look for the “Chat” entry in the sidebar.
Typical Usage¶
-
Click the “Chat” entry in the sidebar to enter the panel.
-
Select a provider/model at the top. The last selection is remembered by default; model selection is saved in the browser’s
localStorage. -
Press
Enterto send input, andShift+Enterfor a new line. -
Manage multiple sessions via the left history list — you can create, switch, rename, or delete sessions.
-
Open settings via the gear button. In settings, you can disable AI auto-titles or specify a separate model for title generation.
Data and Local Storage¶
Session history is saved locally:
~/.dsh/dsh-chat.json
Related files have permissions set to 0600 and use atomic writes.
Model selection and title model selection are stored in the browser’s localStorage.
If the storage file becomes corrupted, the plugin renames it to .corrupt-<timestamp> and starts with an empty session, rather than silently overwriting the original data.
Security and Notes¶
The following behaviors come from verified materials:
- All
/api/dsh-chat/*routes are restricted to local loopback access only. - Markdown rendering uses escape-first and protocol whitelisting.
- Client disconnection automatically aborts model calls.
- Session history is stored only locally in
~/.dsh/dsh-chat.json.
Based on its execution context, it works alongside the DSH Web GUI host, directly calling DSH’s ctx.llm model routing and reading/writing local session files. Before installation, it is recommended to review the source code, dependencies, and the MIT license to confirm it aligns with your current DSH process environment and your boundaries for local model credential usage.
Links¶
- GitHub: https://github.com/MarkJun236/DSH-chat
- Directory clue (not included in verified scraped materials): https://www.skillhub.cn/plugins/MarkJun236/DSH-chat