Biomimetic memory system for DeepSeek Harness: plain-Markdown data layer, memory tools, frozen-snapshot injection, graded approval gating, structured audits, memory metabolism (dream), memory pins, semantic recall, /memory command, and cross-session retrieval.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:KLRSL/dsh-biomemory
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
A cross-session memory plugin for DeepSeek Harness (DSH), designed like a human brain: layered memory, graded approval, memory metabolism, fully transparent and editable.
- Plain Markdown data layer (default
~/.dsh/memory, overridable via theDSH_MEMORY_ROOTenv var) — human-readable, edit-and-take-effect memorytool: add / query / remove / list / pin / unpin / dream / audit- Frozen snapshot injection at session start (pinned memories and user preferences at top priority, then recent knowledge/behavior)
- Graded approval gate: important memories (preferences/decisions/lessons) require human approval; ordinary facts are auto-saved; fails closed when no approval channel is available
- Audit: human-readable
audit.log(legacy, compatible) + structuredaudit.jsonl(JSON Lines) — every event traceable /memorycommand: list / query / add / remove / pin / unpin / dream / auditmemory_recalltool: cross-session recall ("do you remember…" scenarios)- Deduplication: content fingerprint skips duplicate entries
- Memory metabolism (
/memory dream): half-life decay, reference consolidation, conflict arbitration, low-weight archiving — with automatic backup & rollback - Memory pins: lock a memory so it never decays and always enters the snapshot
- Semantic retrieval: pure-JS TF-IDF + cosine — no native modules, no external dependencies
Install
# As a local bundle in a DSH profile
dsh plugin add dsh-biomemory
# Or pnpm local link
pnpm add link:./dsh-biomemory
Add dsh-biomemory to dsh.profile.bundles in the profile.
Memory Layout
~/.dsh/memory/
├── preferences.md # User/project preferences (top priority, frozen-injected)
├── hot/
│ ├── knowledge.md # L1 recent knowledge (facts/decisions)
│ └── behavior.md # L1 recent behavior (lessons/habits/workflows)
├── projects/<name>/ # L2 project archives
├── longterm/ # L3 long-term memory
├── archive/ # Memories archived by metabolism (decayed below threshold, never deleted)
├── backups/ # Automatic backups before dream runs (rollback source)
├── audit.log # Human-readable audit (legacy, kept for compatibility)
└── audit.jsonl # Structured audit (JSON Lines, v0.3)
Each entry is a single line: - [knowledge|auto] [fp:xxx] [w:10] [h:3] [t:2026-08-16 13:00] [pin] text
w= weight (default 10) — decay/consolidation baseh= reference count — consolidation inputt= write time — decay age sourcepin= locked (excluded from decay, always injected)
Memory Metabolism (Dream)
/memory dream (or memory action=dream) manually triggers memory metabolism — the housekeeping a sleeping brain does:
- Half-life decay (default 7 days): weight halves every half-life (
w × 0.5^(age/halfLife)), floored at 1. - Reference consolidation: entries referenced ≥
consolidateThreshold(default 3) times gain +1 weight, capped atweightCap(default 20). - Conflict arbitration: when behavior memory conflicts with preferences, preferences win — the behavior entry's weight is halved and a
CONFLICTaudit event is recorded. - Archiving: entries whose weight drops below
decayThreshold(default 3) move toarchive/— moved, never deleted.
Usage:
/memory dream # run metabolism
/memory dream --dry-run # preview only, no changes
memory action=dream dryRun=true # same via the memory tool
Dry-run example output:
【预览】扫描 120 条:衰减 12 · 巩固 3 · 冲突 0 · 归档 4
备份:(dry-run 不执行备份)
Backup & rollback: before an actual run, the whole memory store is automatically copied to backups/<timestamp>/ (including audit.jsonl). On startup, the self-check restores the latest backup automatically if a primary memory file is found corrupted. Rollbacks are recorded as ROLLBACK audit events.
Memory Pins
Lock a memory so it never participates in decay and always enters the snapshot:
/memory pin <fp> # lock
/memory unpin <fp> # unlock
memory action=pin fp="xxx"
memory action=unpin fp="xxx"
Snapshot injection priority: pinned > preferences > knowledge > behavior.
Audit
Two audit channels:
audit.log— human-readable one-line summaries, backward compatibleaudit.jsonl— structured, one JSON object per line
Events: WRITE, DECAY, CONSOLIDATE, CONFLICT, ARCHIVE, PIN, UNPIN, PREVIEW (dry-run), ROLLBACK.
Example line:
{"t":"2026-08-16T05:00:00.000Z","event":"DECAY","fp":"abc123","text":"..."}
Query:
/memory audit # recent events
/memory audit --since 7d # last 7 days
/memory audit --type DECAY # only DECAY events
memory action=audit type="DECAY" sinceDays=7
Semantic Retrieval
Keyword matching runs first; when hits are insufficient, results are supplemented with a pure-JS TF-IDF + cosine implementation — no native modules, no external dependencies, fully offline. Semantic hits are marked as "semantic" in query output.
Configuration
// Plugin config (bundle or profile layer)
{
halfLifeDays: 7, // half-life in days for decay
decayThreshold: 3, // weight below this → archived
consolidateThreshold: 3, // references ≥ this → consolidate (+1 weight)
weightCap: 20, // consolidation weight cap (prevents runaway growth)
hotTokenLimit: 5000, // snapshot hot-section token budget
maxQueryResults: 20, // query result cap
petEndpoint: null // optional: local notification service URL (off by default)
}
Compatibility
- Node >= 22.19.0
@deepseek-ai/dsh-*0.1.0-rc.5 runtime (implemented against actual lib sources)
Troubleshooting (FAQ)
- Node version: requires Node >= 22.19.0; older versions may fail to load the plugin.
- DSH runtime compatibility: targets
@deepseek-ai/dsh-*0.1.0-rc.5 — check the version of the runtime you actually run. - Memory directory issues: if writes fail, check read/write permissions on the memory root; if
DSH_MEMORY_ROOTis set, it must point to an existing, writable directory. - Native module conflicts: this plugin has no native dependencies — it is pure JS, so it cannot clash with native modules of other plugins.
Usage Scenarios
- Personal knowledge base, long-term maintenance: accumulate facts and decisions over time, query them later like a second brain; decay and archiving keep the store tidy without manual pruning.
- Project experience accumulation: lessons, habits and decisions live per-project in
projects/<name>/, consolidating (weight grows) as topics are referenced repeatedly. - Cross-session preference memory: preferences are injected at every session start, pin important ones for stability, and let conflict arbitration keep preferences authoritative over behavior.
Contributing
- Report issues: open an issue with the DSH runtime version, Node version, and reproduction steps.
- Pull requests: fork the repository, make the change, add/update tests, and run
npm testbefore submitting. - Tests: run
npm test(node:test). New behavior should ship with test coverage.
License
MIT
Links
More in this category
volcengine/OpenViking#examples/dsh-memory-plugin★ 28581
OpenViking memory and context bundle for DeepSeek Harness: pre-step auto-recall and profile injection, session capture, `viking://` URI guarding, and recall/write memory tools backed by an OpenViking server.
vectorize-io/hindsight#coding-agents★ 20024
Hindsight, agent memory that learns: long-term project memory with auto recall and retain, knowledge pages, deep reflection, and per-repo memory banks.
dsh-engramory★ 154
The Engramory curated-memory discipline as an installable plugin ([npm: dsh-engramory](https://www.npmjs.com/package/dsh-engramory)): a deterministic 200-line / 25 KB cap on the `MEMORY.md` index via `ctx.tools.guard()` — growth denied, a shrinking rewrite always passes — plus the protocol registered as a runtime skill. The store is plain markdown, one file per fact, shared with Claude Code, Codex, Kiro, and OpenClaw.
Co-Engram/Co-Engram★ 66
Self-evolving team memory as plain Markdown in git: a native Cordis plugin that registers 38 bare-name memory tools plus a prompt-signals section re-evaluated at every assembly, with RPE reinforcement, decay and sleep consolidation; shares one data repo with its Claude Code (MCP) and OpenClaw hosts; verified against DSH 0.1.0-rc.6.
bowenliang123/dsh-context★ 48
Context insight panel: see what the model's context window is made of and how it evolves — composition vs. window size, per-request history, compression/injection events, and per-message token stats.
omdsh-dev/dsh-mnemon★ 45
Cross-agent, local-first persistent memory plugin for DeepSeek Harness (DSH), powered by Mnemon. It shares long-term memory across Mnemon-enabled agents and adds runtime memory, searchable project documents, semantic recall, knowledge graph, and a Sidebar UI.