DSH Plugins Marketplace

DSH Plugins

Plugins

/

Sessions & Messages

/

dsh-save-chat

x

dsh-save-chat

Manifest valid★ 1

Save DSH conversation turns as Markdown: per-session collections plus a personal knowledge base the model can search on demand. Zero dependencies.

UI (client)hasBundlePatch

dsh-save-chat

Awesome DSH Plugin npm license

Keep the good answers. One heart saves a whole conversation turn — your question and the complete reply — as a real Markdown file inside your project. Later, your own panel browses them, and the model can search them on demand.

中文 · Full reference

Zero dependencies. No database. Just Markdown files you own.

60-second start

Once it is installed, one pass through the plugin looks like this:

1. One heart, one turn kept. The heart on a reply's action row is the save button — the whole turn (your question plus the complete answer) is written to <session workspace>/.dsh-favorites/<session title>.md.

Save a turn from the action row

2. Browse it in the sidebar. A searchable tree grouped by workspace, session, and turn (the knowledge-base view is grouped by month) on the left, the selected section rendered beside it. The toolbar switches between this section and the whole file, reveals the file in your file manager, and closes the reader.

Browse collections and the knowledge base

3. Promote what is worth keeping. Right-click any row: pin, rename, copy a reference, add it to your personal knowledge base, or delete. The 知识库 switch at the top right opens the knowledge-base view, whose hint states how it behaves.

Add a turn to the personal knowledge base

The knowledge-base view and its hint

4. Use it in later conversations. Copy reference puts @/path/file.md on the clipboard; paste it into a new conversation and the model reads that record. You can also just ask "what did we conclude last time?" — it calls search_knowledge and answers with the file and the date. Knowledge-base content is retrieved only when the model needs it, never injected automatically.

Copy a reference to paste into a later conversation

Install

Either path works in both flavours — the desktop app and dsh web. The plugin installs into the profile that is running: desktop in the app, usually web for dsh web. The UI needs no profile name; the command needs the right one.

In the UI (works everywhere, including dsh web)

Open Settings → Plugins → Add plugin. It accepts a package name, a repository URL, a prebuilt .tgz, or a local path; in day-to-day use it is usually one of these two:

PasteComes from
dsh-save-chatnpm (the China mirror works too)
an absolute path to a local checkoutdevelopment

Then restart DSH — for dsh web, restart the process — and reload the page.

From the terminal

dsh plugin forwards its arguments to pnpm and requires --profile <name>: the profile you actually run (desktop for the app, web for dsh web, or your own). The directory you run it from does not matter.

# dsh web
dsh plugin --profile web add dsh-save-chat
# desktop app
dsh plugin --profile desktop add dsh-save-chat

The command takes the same kinds of specs (npm name, repository URL, prebuilt .tgz, local path) — for example the tarball, which needs no clone and no build:

dsh plugin --profile web add https://github.com/xypang33-sketch/dsh-save-chat/releases/latest/download/dsh-save-chat.tgz

dsh here is the command you already start DSH with — dsh web, or the copy bundled inside the desktop app. It runs from any directory; if you do not have that command (a desktop-app-only install, for example), use the UI above instead.

Plugin Market (optional)

If you have the community Plugin Market (dshmarket) installed, this plugin will also be listed there and installable with one click. The market is a plugin itself, not part of DSH, so this path only exists once you install it.

DSH does not auto-update plugins yet — to upgrade, uninstall and install the new version.

Why this one

There are already bookmark plugins. This one differs in four ways:

dsh-save-chat
What gets savedThe whole turn — your question and the complete answer — not a single message or a link.
Two layersPer-session collections (project-local, raw) plus a personal knowledge base you promote the good ones into (cross-project, durable).
The model can search itsearch_knowledge / read_knowledge let the model retrieve on demand. Nothing is auto-injected, so an unused library costs zero tokens.
Plain files, zero depsOne Markdown file per session, images copied beside it, no database, no lock-in, no npm dependencies — it survives core revisions and works with git, Obsidian, or grep.

What you get

  • A heart in the action row — one click, optimistic UI, revert on failure.
  • A collection panel — workspace → session → turn tree, per-turn ordinals, small-text timestamps, collapse at every level, search over the current view, month grouping for the knowledge base, “reveal in folder”, and a close button for the reader.
  • Row actions — pin, rename, copy reference (@/path/file.md, paste it into a later conversation), add to / remove from the knowledge base, delete.
  • Images are kept, not lost — an image a turn carried is copied next to the Markdown and rendered in the reader; promoting it to the knowledge base copies it again and writes a one-sentence image summary underneath, so the picture becomes findable by what it shows.
  • Search that knows what you saved — BM25 over paragraph-sized chunks with CJK bigrams, one result per turn, later turns win when two contradict.
  • Token honesty — the panel shows what naming your favorites has cost so far.

The model side

Two tools, both on demand — the model sees nothing until it asks:

ToolWhat it does
search_knowledgeSearches your knowledge base (or scope: "all" to include collections) and returns small hits: title, date, file#lines, a snippet, and an id.
read_knowledgePulls one section back in full (capped at 8 KB) when a snippet is not enough.

By default the model searches only the personal knowledge base — promoting a turn is how you tell it “this one is worth your attention”. Your raw collections stay yours unless you promote them or ask explicitly.

FAQ

Where are the files? <session workspace>/.dsh-favorites/<session title>.md; the knowledge base is ~/.dsh/knowledge/<YYYY-MM>.md (configurable). Both are ordinary Markdown — open them in any editor.

Does it send anything anywhere? No. Everything stays on your machine, and the routes it serves are loopback-only.

What does it cost? Favoriting makes one small model call to name the turn (a few hundred tokens, shown in the panel). Promoting an image makes one small vision call for its summary. Searching is local and free.

Does it slow DSH down? Parses are cached by file size and mtime, so the catalog only re-reads what changed.

What if I delete the project? Collection files go with it. Anything you promoted into the knowledge base stays — pictures included.

Can the model see my whole collection? Only if it searches with scope: "all", which it does when you ask about past work. Otherwise it sees what you promoted.

Development

npm test        # host unit tests + real-DOM tests (jsdom)

The reference — file format, every HTTP route, design notes, limitations — lives in docs/reference.md.

License

MIT

Comments

Loading…

From the same category

billion-context

by ranxianglei

基本稳定可用 100K tokens is enough. Universal context-compression proxy for ALL AI coding agents,10w上下文足矣

Sessions & MessagesManifest valid

★ 814

↓ 423.4k/wk

MIT

TypeScript

Oct 11, 2026

dsh plugin --profile web add billion-context

by Han-1413141

DeepSeek Harness session cost meter plugin: session/daily cost, budget, history, OpenCode Go quota, official & custom-provider balance, Codex-like token heatmap, peak/off-peak pricing with pre-switch

Sessions & MessagesManifest valid

★ 388

↓ 23k/wk

MIT

JavaScript

Oct 10, 2026

dsh plugin --profile web add dsh-cost-meter

by Nwflower

Import 14+ external agent chat histories (Claude Code, Codex, ChatGPT, Cursor, Gemini, Reasonix, opencode, ZCode, Grok Build, OpenClaw, Pi, Hermes, Kimi CLI, DSH) into DeepSeek Harness as resumable se

Sessions & MessagesManifest valid

★ 224

MIT

JavaScript

Oct 7, 2026

dsh plugin --profile web add dsh-chat-import

by Totoro-qaq

DeepSeek Harness plugin for previewable cross-preset session migration. Fixed-schema handoffs preserve state, source-model intent, and unresolved images; the original session stays untouched.

Sessions & MessagesManifest valid

★ 165

MIT

JavaScript

Oct 11, 2026

dsh plugin --profile web add dsh-plugin-bridge

by Anionex

deepseek harness对话和代码状态回退插件 | DSH — rewind conversation and workspace state, powered by a persistent Change Ledger

Sessions & MessagesManifest valid

★ 131

BSD-3-Clause

JavaScript

Oct 1, 2026

dsh plugin --profile web add @anionex/dsh-turn-rewind

by SiriLee

DSH 插件:真正便捷无感的同窗口内对话回退,从不新建分支;自带轻量工作区备份,可一并还原文件(完整 Claude Code /rewind 语义)。 · DSH plugin: genuinely effortless in-window conversation rewind — never forking a new session; ships a lightweight workspac

Sessions & MessagesManifest valid

★ 123

↓ 5.5k/wk

MIT

TypeScript

Oct 9, 2026

dsh plugin --profile web add dsh-rewind-plugin