Claude Code-compatible persistent memory: the host injects the MEMORY.md index at session start, the model maintains memory files with plain read/write/edit tools, and a Settings page lists saved memories. Same on-disk format as Claude Code; claude mode shares the exact memory directory.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-cc-auto-memory
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:jayhchen/dsh-cc-auto-memory
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
dsh-cc-auto-memory
Claude Code's auto memory, packaged as a lightweight plugin for DeepSeek Harness (DSH): persistent, file-based memory.
At the start of each session, memory-usage instructions and the MEMORY.md index are injected automatically; the model manages memory files with the plain read / write / edit tools — no dedicated memory tools are registered. The on-disk format is identical to Claude Code's, so memories are directly interoperable between the two (claude mode even shares the exact same directory).
Installation
Web (CLI):
dsh plugin --profile web add dsh-cc-auto-memory
Desktop: open the in-app Plugins page and search for dsh-cc-auto-memory.
Mechanism
A faithful port of Claude Code's native auto memory — see the official docs for the original mechanism. Per session it works like this:
session start
│
▼
host injects into the system prompt:
• Memory usage instructions (with the memory dir path)
• MEMORY.md index — first 200 lines / 25 KB
│
│ the model manages memory with the
▼ plain read / write / edit tools
memory dir — one per git repo
MEMORY.md ← index: one line per memory
<topic>.md ← one memory per file
│
│ after each write/edit, the host backstops:
▼ `modified` timestamp · index size limits
next session recalls the refreshed index … loop
- Subagent sessions get no main-session memory injected (same as Claude Code).
- Project resolution: git repository root (cwd when outside a repo),
/→-in the slug; one shared memory per repository.
Viewer panel
Settings → Auto Memory (read-only viewing; editing/creating/deleting is left to the agent's file tools during a session):
Storage mode: two mode cards (dsh standalone directory / claude reuse) plus an "Apply switch" button — switching only takes effect for new sessions:
dsh(default):$DSH_HOME/projects/<slug>/memory/claude:~/.claude/projects/<slug>/memory/(CLAUDE_CONFIG_DIRrespected) — shares the same memory with Claude Code, interoperable both ways
In claude mode, the model's write/edit calls into
~/.claude/fall outside the session workspace and trigger approvals per the session sandbox policy — this is expected.Project list filtered by the active mode: dsh mode shows only projects under
$DSH_HOME; claude mode shows only projects under~/.claudeMemory table: click any row to open a floating card showing the raw file content (plain text, Markdown not rendered); Esc or clicking the overlay closes it
Configuration
cordis.patch.yml can be overridden at the user layer:
| Field | Default | Description |
|---|---|---|
mode |
dsh |
Storage mode dsh / claude |
claudeConfigDir |
'' |
Claude Code config root for claude mode; empty = $CLAUDE_CONFIG_DIR or ~/.claude |
maxIndexLines |
200 |
Line limit when reading MEMORY.md |
maxIndexBytes |
25600 |
Byte limit when reading MEMORY.md |
License
Links
More in this category
vectorize-io/hindsight#coding-agents★ 57722
Hindsight, agent memory that learns: long-term project memory with auto recall and retain, knowledge pages, deep reflection, and per-repo memory banks.
volcengine/OpenViking#examples/dsh-memory-plugin★ 41317
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.
MemTensor/MemOS#memos-local-plugin★ 12224
Local-first memory plugin for DeepSeek Harness: layered L1/L2/L3 memory with automatic capture, manual memos_* retrieval tools, and a built-in memory viewer.
agentscope-ai/ReMe#dsh★ 3735
Connects DeepSeek Harness to ReMe's local-first, self-evolving personal knowledge base: automatically captures completed main-agent conversations as user-owned Markdown memory, searches conversations and source material through reme_search with BM25, optional embeddings, and wikilink expansion, and schedules daily memory consolidation.
zilliztech/memsearch#MemSearch★ 2815
Shared Markdown memory for DSH and other coding agents, with automatic capture, pre-step context injection, searchable recall, and memory-to-skill self-evolution through a review panel.
vshulcz/deja-vu#extensions/dsh★ 1352
Reads the session files forty-two other coding agents on this machine already wrote (Claude Code, Codex, Cursor, VS Code Copilot Chat, opencode, OpenClaw, Hermes, Kimi, Cline, Zed and more), including sessions from before it was installed: six tools (deja_recall, deja_session, deja_blame, deja_fix, deja_how, deja_remember), a /deja command, and optional automatic recall added to the runtime context. Local BM25 index, no LLM, no embeddings, no network (dsh plugin --profile web add dsh-deja).
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.