dsh-md-notes
DSH third-party plugin (bundle): MD Notes Manager
Features · Architecture · Changelog
Overview
A note-taking plugin for DeepSeek Harness (DSH). It adds an MD Notes entry to the web sidebar and a "Add to note" action to every assistant answer, so you can capture conversations into plain .md files that stay editable anywhere.
Who it's for: DSH web users who want local, file-based notes (no database, no cloud) — copy a conversation into a note with one click, then keep editing the .md file in any editor.
- Sidebar notes entry → notes manager (list + edit/preview)
- Assistant-message action (next to the copy button) → append that conversation to a note
- Notes are stored as plain
.mdfiles, editable directly on the filesystem - UI copy follows dsh's language setting (Chinese / English)
Compatibility
- Plugin version: 0.2.0 (see CHANGELOG.md for history).
- Requires: the
dshCLI (with thepluginsubcommand) and thewebprofile. - Last verified: 2026-08-16, against the deepseek-harness mainline checkout (dsh CLI
0.1.0-rc.xera). - The plugin is not pinned to a specific mainline commit; pin the plugin version at install time if you need a fixed combination. Runtime dependencies (
@deepseek-ai/*,react) are declared as optional peer dependencies and resolve from the dsh installation.
Install / Uninstall
Prerequisites: dsh CLI installed, target profile is web.
Install from npm (recommended):
dsh plugin --profile web add dsh-md-notes
Then restart dsh web (bundle layer and client package metadata are cached in the process; a restart is required for changes to take effect).
Upgrade:
dsh plugin --profile web update dsh-md-notes
A restart of dsh web is required for it to take effect.
Uninstall:
dsh plugin --profile web remove dsh-md-notes
For development/debugging from source: run
dsh plugin --profile web add ./dsh-md-notesfrom the parent directory of the plugin project.
Quick start
- Install the plugin (above), restart dsh web.
- Create a note: click the notes entry at the bottom of the sidebar (above Settings) → enter a title in the "New note title…" field → New → type in the editor → Save.
- Capture a conversation: below any assistant answer, click the notes icon (next to copy) → pick a target note (or create one on the spot) → Write to note. The user question + answer are appended to the note with a timestamped section.
Note files live in the configured local directory (default <cwd>/.dsh-notes/); you can open and edit them directly with any editor.
Configuration
All options are plugin Config keys, overridable in the profile's cordis.patch.yml (a patch replaces the whole config of the row):
- id: md-notes
config:
root: '/abs/path/to/notes' # notes directory; default <cwd>/.dsh-notes
route: '/plugins/md-notes' # HTTP API prefix; default is fine
| Key | Default | Meaning |
|---|---|---|
root |
<cwd>/.dsh-notes |
Directory where notes (.md files + meta.json) are stored. |
route |
/plugins/md-notes |
HTTP API prefix served by the plugin; also hosts the icon at <route>/icon.svg. |
There are no environment variables and no secrets in this plugin's configuration.
Permissions & data
- Filesystem: reads and writes notes as plain
.mdfiles (plus ameta.jsontitle/updated-time sidecar) under the configuredrootdirectory. Nothing else is touched. - Network: a loopback HTTP API (
POST <route>, browser ↔ local dsh server) and the icon served from the same origin. No external network calls, no telemetry. - Credentials: none collected or transmitted.
Troubleshooting
| Symptom | Fix |
|---|---|
| Changes don't appear after install/upgrade | Restart dsh web — bundle layer and client metadata are cached in the process. |
| Icon looks stale | Hard-refresh the page; the icon is served with no-cache and reflects assets/dsh-md-notes.svg on every request. |
| Plugin doesn't load | Verify the layer: dsh --profile web --dump-config and look for the md-notes row. |
Installed from git and add failed |
pnpm ≥10 blocks build scripts by default; add the printed package key under allowBuilds in the profile's pnpm-workspace.yaml, then re-run add. |
| Notes can't be created/saved | Make sure the configured root points to an existing writable directory. |
Rollback: dsh plugin --profile web remove dsh-md-notes restores the previous state (notes files are untouched).
Development
npm install --legacy-peer-deps # first time or after dependency changes
npm run link-deps # link deepseek-harness checkout types (before changing code)
npm run build # build lib/index.js + lib/client.js
After changing code and building successfully, restart dsh web for it to take effect.
Common scripts:
| Command | Purpose |
|---|---|
npm run build |
Full build (tsc host → tsc client → tsdown) |
npm run typecheck |
Type-check only (both programs) |
npm run link-deps |
Re-link @deepseek-ai/* types to the checkout |
npm run bundle |
Build only the client bundle |
Contributions are welcome: open an issue to discuss, then a PR. Design docs: docs/features.md · docs/architecture.md.
Repository structure
| Path | Contents |
|---|---|
src/ |
Source code (host half + client half) |
src/host/ |
Notes domain logic (notes.ts) + HTTP layer (http.ts) |
src/client/ |
Browser half: entry (index.ts) + feature modules under features/ |
src/client/features/locales/ |
zh/en UI dictionaries (dsh locale namespace md-notes) |
assets/ |
Plugin icon (SVG source + PNG) |
docs/ |
Design docs: features.md (functional), architecture.md, TODO.md |
scripts/ |
Dev tooling (e.g. link-deps.mjs) |
lib/ |
Build output (gitignored; what npm publishes) |
License & security
Licensed under the MIT License (see LICENSE).
Security issues: please report them privately via the repository's Security Advisory rather than a public issue, so they can be addressed before disclosure.
No comments yet. Be the first to write one.