deepseek-harness memory plugin · v0.1

Give your agent
one unified memory graph

No more fragmented "one markdown file per day" notes.
Facts, preferences, schedules, task progress — all in a single entity–time-fused memory graph.

0FC-SH selective forgetting · single-hop
best baseline 60.0 — beaten · #1 overall
0FC-MH selective forgetting · multi-hop
best baseline 7.0 · 7.4×
0LME(S*) accurate recall
best baseline 55.7 · +12.6 pts
Our belief

One agent, one whole memory
undivided, unbroken, as memory was meant to be.

memoplus4dsh is the unified long-term memory plugin for deepseek-harness. Everything your agent needs to remember — facts, preferences, schedules, task progress — lives in a single entity–time-fused memory graph. No per-day markdown shards, no forgetting between sessions. One memory, for the whole life of the agent.

We believe an agent's memory should work like a human's: whole, continuous, and growing. Not diary pages piling up in a filesystem, not a scratchpad wiped clean at every session's end — but one unbroken memory, written from day one to today. An agent that remembers yesterday, and last year; that knows where the task stands, and recalls the preference you mentioned in passing. When memory becomes whole, an agent truly begins to know you. We hope memoplus4dsh is a cornerstone on that path: simple, open, and verifiable — doing one thing well: one whole memory.

The cost of fragmented memory

Most agent projects' "memory" is a markdown file generated per day. Naive, unsearchable, unable to evolve.

✕ Per-day md fragments
  • "Where did the task get to" is scattered across seven days of files
  • After a fact is updated, old and new values fight each other
  • No entities, no temporal semantics, no structure
  • A new session resets everything to zero
✓ One memory graph
  • Entities + events + dual-anchor time, structured and queryable
  • State updates: old values step aside, history stays on record
  • Goals / todos / schedules / conversations coexist in one graph
  • Inherited across sessions, recoverable after crashes

See it work

A looping live demo: how conversation is extracted into the graph, how fact updates coexist on the timeline (past and present are both kept), and how the graph is retrieved and injected at query time.

Conversation
Extraction turn/end · thinking off
Memory graph entities × events × dual-anchor time
usually yesterday now (query)
Query · Retrieve · Inject · Answer

Method innovations

Core mechanisms from the memoplus/ETMS research codebase, validated on LoCoMo (82.9% under the mem0 protocol), re-implemented for the dsh plugin system.

🕸

Unified memory graph

A single graph where entities (people / objects / concepts) and events (predicate · time · provenance) coexist. Not a pile of files — a queryable, evolvable graph.

Dual-anchor time

Distinguishes event_time (when it happened) from mention_time (when it was mentioned). "The setback we talked about in October" can hit something that happened in September.

🔄

State-family dedup

When a fact is updated, the old value steps aside for the new one — retrieval presents only the latest state, while the full history stays in the graph. An architectural answer to selective forgetting.

🌉

Progress event bridge

dsh-internal events for goals / todos / schedules / plans are projected straight into the graph. Long-running task progress becomes answerable across sessions — filling a native dsh gap.

🛡

Write reliability

Durable extraction queue (crash-safe re-extraction), bounded retries with backoff, segmentation of large inputs, and extraction with thinking explicitly off (measurably fixes empty-output memory loss).

🌐

Local multilingual embeddings

A harrier 0.6B sidecar (1024-dim, multilingual, ~10 ms/text on CPU) with an onnxruntime-node + distiluse fallback, character-level tokenization for Chinese. No new API keys; Linux / macOS / Windows × x64 / arm64.

How it's built

An official Cordis plugin with zero patches — install and uninstall are fully reversible. Extraction and retrieval reuse the model you already configured.

Zero patchOfficial plugin mechanism — not a single line of dsh modified
Active toolsmemory_search for recall · memory_remember for explicit saves · memory_visualize · memory_status for live status
Graceful degradationA failure in embeddings or extraction only degrades — the conversation never breaks
Your data, your handsAll memory lives in <dsh-home>/memoplus4dsh/ — delete it or take it with you

MemoryAgentBench

Official repo + dataset + metrics + judge, 1031 questions. Skeleton model deepseek-v4-flash (official DeepSeek API). Full rerun on 2026-09-11 (r2), all audits PASS.

Selective forgetting · single-hop FC-SH
Ours
85.0
GPT-4o
60.0
HippoRAG-v2
54.0
Mem0
18.0
Mean over four lengths (6k/32k/64k/262k): 85.0; per length 89 / 78 / 90 / 83 — #1 overall, beating even GPT-4o with the full text stuffed into the window (60.0). r1 was 57.75.
Selective forgetting · multi-hop FC-MH
Ours
51.5
Best agent
7.0
GPT-4o
5.0
Mem0
2.0
A "death task" where all official agents score ≤7 — 7.4× the best baseline, still 54.0 at 262k. System-prompt-guided iterative memory_search lifts multi-hop recall from 22% to 86%. r1 was 30.25.
Accurate recall LME(S*)
Ours
68.33
GPT-4.1-mini
55.7
HippoRAG-v2
50.7
Mem0
36.0
Official LLM judge; #1 overall, 12.6 points above the best official baseline (r1 56.67 already beat every baseline).

Also passed human-scenario tests: cross-session goal progress recall, todo evolution, SIGKILL crash re-extraction · 173 unit tests green

Disclaimer: the scores above were measured by us using MemoryAgentBench's official code, dataset, and metrics. They were not run, reviewed, or endorsed by the benchmark team, and we have no affiliation with it.

Our method is deliberately simple: one entity–time memory graph + hybrid retrieval + iterative search — no training, no heavy pipeline — which makes it a good simple baseline. If your method is more complex, you are welcome to compare against us under the same official protocol; the setup, per-question attribution, and reproduction commands are all public in the evaluation record above.

Two-minute install

bash
# Get the plugin
$ git clone https://github.com/eteced/memoplus4dsh.git
$ cd memoplus4dsh

# Install into dsh (defaults to the web profile)
$ scripts/install.sh

# Fully reversible uninstall (memory data kept)
$ scripts/uninstall.sh

# Your memory lives here — delete it or take it with you
~/.dsh/memoplus4dsh/
Requires: dsh ≥ 0.1.2-alpha.3 (verified up to 0.1.5-alpha.2) · Node ^22.19 || ≥24 · python3
One-click scripts on Linux / macOS; two manual steps on Windows (see the README)
Verify with node scripts/doctor.mjs — or just ask the agent "memory status" in chat
Optional full-featured boost: scripts/setup-python.sh (harrier embeddings + NER); models download lazily on first run (~135MB and up), hfBaseUrl can point to a mirror
Updating: git pull && npm run build, then restart dsh — memory data lives separately and is never touched