Workspace sticky notes for DSH, saved as multiple Markdown files under the current workspace.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:flyhigao/dsh-sticky-notes
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. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Workspace sticky notes for DSH (DeepSeek Harness). It adds a compact note entry to the current conversation header, letting you create, edit, and delete multiple notes for the current workspace.
Notes are stored as Markdown files in the dsh-notes/ directory of the current workspace. No hidden database, no extra index — just plain Markdown files.
Features
- Quick entry in the current conversation header, no sidebar clutter.
- Multiple notes per workspace: list, preview, edit, create, save, and delete.
- A workspace selector in the dialog, defaulting to the current conversation workspace and allowing other registered local workspaces.
- The note UI follows DSH's active language setting, with Chinese and English copy.
- Unsaved edits are automatically saved before switching notes, changing workspaces, or closing the dialog.
- Data is stored in the current workspace:
<workspace>/dsh-notes/*.md. - One Markdown file per note, easy to inspect and manage with any editor or Git.
- The server resolves workspace paths through
workspaceRegistry; it does not trust arbitrary paths from the browser. - Mutating endpoints only accept same-origin POST requests.
Compatibility
This plugin uses DSH's additive conversation.session.header.actions slot. It does not replace the whole conversation header or own the position exclusively.
- Uses a unique ID
sticky-notesto avoid conflicts with other plugins. - Uses
order: 30so it coexists with other header actions in a predictable order. - HTTP API is namespaced under
/dsh-sticky-notes/*. - Dialog styles are scoped with the
dsh-sticky-notes-modalclass and do not pollute global styles. - Registers through
ctx.slots.inject(...), so it does not depend on plugin load order.
Why multiple notes?
A workspace accumulates many kinds of loose thoughts: todos, ideas, meeting notes, and temporary code snippets. A single note would quickly become a dumping ground.
Multiple notes are closer to the sticky-note metaphor:
- Each note has its own topic.
- The list shows the title, preview, and last updated time at a glance.
- Each note is an independent file, easy to track with Git.
Install
From GitHub
dsh plugin --profile web add github:flyhigao/dsh-sticky-notes
Restart dsh web, open any conversation, and you will see the note icon on the right side of the conversation header.
Local development install
Clone the repository:
git clone git@github.com:flyhigao/dsh-sticky-notes.gitAdd it to the web profile
package.json:{ "dependencies": { "dsh-sticky-notes": "file:/path/to/dsh-sticky-notes" }, "dsh": { "profile": { "bundles": [ "@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-sticky-notes" ] } } }Install and restart:
cd ~/.dsh/profiles/web pnpm install # restart dsh web
Usage
- Open a conversation.
- Click the note icon in the conversation header.
- Select a workspace at the top of the dialog. The current conversation workspace is selected by default, and other registered local workspaces are available.
- In the dialog:
- Left side: notes from the selected workspace.
- Right side: title input and content editor.
- Bottom: new, delete, and save actions.
- Unsaved edits are automatically saved before switching notes, changing workspaces, or closing the dialog.
- The note is written immediately to
dsh-notes/in the selected workspace.
Data format
Each note is a Markdown file:
<working-directory>/dsh-notes/<note-id>.md
File content:
# Note title
Note body…
note-idis generated by the plugin, for examplenote-msw19zz2-7gbiyg.- Deleting a note deletes the corresponding
.mdfile. There is no extra index. - You can manually edit or add
.mdfiles; reopen the note panel to see the changes.
HTTP API
The plugin provides a small HTTP API for the browser half:
| Method | Path | Description |
|---|---|---|
| GET | /dsh-sticky-notes/list?workspaceId=<id> |
List all notes in a workspace |
| POST | /dsh-sticky-notes/save |
Create or update a note |
| POST | /dsh-sticky-notes/delete |
Delete a note |
Save body
{
"workspaceId": "workspace-id",
"note": {
"id": "optional-note-id",
"title": "Note title",
"content": "Note body"
}
}
Delete body
{
"workspaceId": "workspace-id",
"id": "note-id"
}
Development
- Server entry:
lib/index.js - Browser entry:
client/client.js - Plugin manifest:
cordis.patch.yml
This is a lightweight hand-maintained implementation and does not require a build step. client/client.js is a CJS bundle that DSH's client module loader can load directly.
License
Links
More in this category
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 4254
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 2026
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 1866
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/dsh-at-file★ 347
Codex-style `@file` mentions: search workspace files in the composer and attach their contents to prompts.
huiliyi37/dsh-tianshu-tui★ 209
A terminal UI (TUI) for DeepSeek Harness.
omdsh-dev/dsh-genui★ 196
Interactive UI components rendered inline in replies: layout, charts, forms, quizzes, mermaid, 3D scenes, and an action event loop back to the model.