dsh-memory: A Long-term Memory DSH plugin for DeepSeek Harness
qwert702/dsh-memory
Long-term memory for DeepSeek Harness: project+global stores, auto extraction/injection, small-model consolidation, and Obsidian-style link graph.
Adds project-scoped and global memory stores to the DeepSeek Harness Web GUI, with automatic extraction, injection, consolidation, and an Obsidian-style memory graph.
dsh plugin --profile web add github:qwert702/dsh-memory- Category
- Memory & Context
- Platform
- DSH Plugin
- Author
- qwert702
- Distribution
- Plugin
dsh-memory Key Features
dsh-memory Repo Summary
dsh-memory is a long-term memory plugin (DSH plugin) for the DeepSeek Harness Web GUI, addressing the loss of context across conversations. It provides project-scoped and global memory stores with automatic extraction, automatic briefing injection, periodic consolidation, and an Obsidian-style memory graph. Maintained by qwert702 under the MIT license, last updated in 2026-08.
What core memory capabilities does the dsh-memory DSH plugin offer?
The plugin provides two scopes: per-workspace project memories (keyed by a hash of the session cwd) and one global store, with plain JSON under ~/.dsh/memory/ (respects $DSH_HOME) and atomic writes. A memory view tab sits beside Chat/Trajectory, showing a one-card-per-row list (type dot, tags, origin, reinforcement count, links) with inline edit/archive/link/delete, search, and a canvas force-directed graph with zoom/pan/drag, neighbor highlighting, and a detail card.
How does dsh-memory automatically inject and extract memories?
Auto-injection uses a global system-prompt/assemble waterfall listener that appends top-K memories (freshness x reinforcement x degree, interleaved scopes, char-capped) as dynamic context; agentless assemblies get globals only, and failures never touch the assembly. Auto-extraction on turn/end replays new events as a transcript and distills them into JSON candidates; near-duplicates (bigram Jaccard >= 0.65) reinforce instead of duplicating; 3 consecutive failures pause auto-extraction until a manual run recovers.
What periodic consolidation and configuration options does dsh-memory have?
Every N extracted turns per scope (default 20) or on manual trigger, the model proposes merge/link/archive/retag operations that are id-validated and applied transactionally. Settings include injectEnabled, autoExtract, extractProvider/extractModel (to pin a small model), consolidateEveryTurns, topK, maxInjectChars, autoArchiveDays (heuristic auto-archive age), memoryLocale (force memory language), embeddingsEnabled (local semantic embeddings, needs optional dependency), embeddingRemoteHost (HuggingFace mirror), and autoLinkThreshold (cosine threshold).
Which DeepSeek Harness versions and platforms does dsh-memory support?
As a DSH plugin, it integrates via the official bundle and targets the Web GUI environment, relying on DeepSeek Harness official capabilities. The codebase is well-structured, with host-side (settings, listeners, consolidation pipeline, routes), store layer, utility functions, optional embeddings module (transformers.js WASM), and a browser-side bundle. Tests cover smoke and six-stage end-to-end business flows.
