In the DeepSeek Harness (DSH) plugin ecosystem, developers often need to switch between the conversation flow and external tools. DSH uses a plugin-based architecture; the dsh-notes plugin is designed to address this pain point. It provides a persistent full-height vertical column between the sidebar and the conversation area, serving as a lightweight notes and to-do tool. It supports both global and workspace scopes, with data persistence.
Features¶
The plugin occupies a persistent vertical column between the sidebar and the conversation area (full height below the top bar) and provides the following capabilities:
- Persistent session card: The upper part is an independent conversation area that supports a message list, streaming display, send/stop, and preset and model settings. This card is independent of any workspace, and its state is saved in
~/.dsh/session-card.json. - Top/bottom split: The divider can be dragged to adjust the ratio between the session card and the notes area, and the ratio is persisted.
- Scope support:
- Global notes: not separated by workspace; they follow the user.
- Workspace notes: isolated per workspace and follow the current workspace.
- To-do area: Supports adding entries, checking/unchecking, double-clicking to open a details card (title + description), deleting, clearing completed items, pinning to the top, drag-and-drop reordering, and undoing deletion (within 5 seconds).
- Free notes area: Free-form multi-line text, with debounced input and automatic saving on blur.
- Agent isolation: Notes content is completely invisible to the model. Data is stored only in an isolated storage domain, no model tools are registered, it is not included in prompts, and it is not written to session logs. The persistent session is an independent chat channel and does not interact with
notes.json. - Persistence: Data is written to
~/.dsh/storages/notes.json. - Theme adaptation: Uses only DSH semantic tokens (
--dsw-alias-*) and automatically adapts to light and dark themes.
Installation and Activation¶
- Run the installation command:
dsh plugin --profile web add github:ErrorLst/dsh-notes
- After installation, you must restart the DSH process for the plugin to take effect.
Data Location and Persistence¶
Notes data uses the DSH storage domain + JSON backend chain, and the file is located at ~/.dsh/storages/notes.json.
Conversation message logs are located under the ~/.dsh/sessions/ directory. Note: the path recorded in older documentation (v0.7.16 and earlier) (for example, ~/.dsh/sessions/<cwd>/<sessionId>/session.jsonl.zstd) has been deprecated. The actual layout is:
<root>/<projectKey(cwd)>/<encodeSegment(sessionId)>/session.v3.jsonl.zstd
where <root> defaults to ~/.dsh/sessions. The directory names are composed of encoded safe segments, not the original cwd or sessionId. The current log format generation is v3.
Development and Debugging¶
If you need to develop locally or modify the source code:
git clone https://github.com/ErrorLst/dsh-notes
cd dsh-notes
pnpm install
pnpm build
dsh plugin --profile web add .
dsh web
After modifying src/, run pnpm build. Client-side changes only require refreshing the browser, while Host changes require restarting DSH.