Bookmark assistant replies with notes and tags; browse every bookmark in one cross-session center and export to Markdown.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-bookmarks
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:penguin-oo/dsh-bookmarks
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 — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Bookmark assistant replies in DeepSeek Harness (DSH) Web UI: bookmark any finalized assistant reply with a note and tags, browse every bookmark from every session in one center panel, and export them to Markdown in one click.
Screenshots


Features
- Per-message bookmark — an archive button on each finalized assistant reply (right next to the 👍/👎 feedback buttons), with an inline editor for a note and comma-separated tags.
- Server-derived snippet — the bookmark stores a text preview of the actual reply, so the center stays useful even without a note.
- Cross-session center — one panel listing bookmarks from all sessions and workspaces, with full-text search, tag filter, inline editing and deletion.
- Jump back — every entry opens its session in one click.
- Markdown export — one click downloads all bookmarks as
dsh-bookmarks.md. - Keyboard —
Alt+Btoggles the center from anywhere. - Safe writes — per-item compare-and-set versions (multi-tab safe), server-side validation, and durable storage via the DSH storage domain.
Install
dsh plugin --profile web add dsh-bookmarks
Then restart DSH (dsh web). The plugin appends itself to the profile bundle layer automatically; nothing else to configure.
For a local checkout:
# from the plugin repo
dsh plugin --profile web add file:./ # relative file spec, anchored to your cwd
Config
The bundle row exposes three limits (all optional):
| Key | Default | Meaning |
|---|---|---|
maxNoteBytes |
4096 |
Max UTF-8 bytes of one note ("" clears a note; omitting the field keeps it). |
maxSnippetChars |
300 |
Max characters of the server-derived reply snippet. |
maxTags |
8 |
Max tags per bookmark; each tag ≤ 32 chars, trimmed and deduplicated. |
Override them in the profile patch layer ($DSH_HOME/profiles/web/cordis.patch.yml):
- id: bookmarks
config:
maxNoteBytes: 2048
maxSnippetChars: 200
maxTags: 5
How it works
One npm package hosts both halves of the plugin:
- Host half (
lib/index.js) — thebookmarksRemote service (Typert), backed by a storage-domain table ($DSH_HOME/storages/bookmarks.json).putinspects the persisted session log to validate the target reply and derive its snippet, mirrors the officialmessage-feedbackdurability barrier, and serializes mutations with per-item version tokens. - Browser half (
src/client, bundled tolib/client.js) — mounts the Remote contribution throughctx.remote.$mount, then registers two UI slots:conversation.chat.assistant-actions(the per-message button) andsidebar.footer.action(the center toggle).
Development
npm install # zod + esbuild (dev only)
npm run build # bundles src/client into lib/client.js
lib/client.js is committed and shipped; no build step runs on install.
Limitations
- Bookmarks are stored in one global row: fine for personal use, not a shared multi-user store.
- The center panel jumps to the bookmarked session; it does not auto-scroll to the exact message yet.
- The panel toggle lives in the sidebar footer; use
Alt+Bwhen the sidebar is collapsed.
License
Acknowledgements
This project is promoted on the LINUX DO community.
Links
More in this category
Minglink/dsh-infinite-gen-4★ 2092
System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status badge driven by a session projection.
liangmianya/dsh-synapse★ 434
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
ranxianglei/billion-context★ 335
The official billion-context plugin: a context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).
Nwflower/dsh-chat-import★ 203
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
Totoro-qaq/dsh-plugin-bridge★ 165
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Anionex/dsh-turn-rewind★ 119
Rewind conversation and workspace state, powered by a persistent Change Ledger.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.