dsh-memento: Bounded, Auditable Cross-Session Memory DSH plugin for DeepSeek Harness
perrylink/dsh-memento
Bounded, layered, approval-gated, auditable cross-session memory for DeepSeek Harness.
Provides bounded, layered, approval-gated, auditable cross-session memory for DeepSeek Harness, so the model never forgets between sessions and every write is controlled and traceable.
dsh plugin --profile web add github:perrylink/dsh-memento- Category
- Memory & Context
- Platform
- DSH-Plugin
- Author
- perrylink
- Distribution
- Plugin
dsh-memento Key Features
dsh-memento Repository

dsh-memento Repo Summary
dsh-memento is a memory and context plugin (DSH plugin) for DeepSeek Harness, maintained by PerryLink under the Apache-2.0 license. It addresses the problems of cross-session amnesia, uncontrolled memory writes, and lack of auditability by providing bounded, layered, approval-gated, and auditable memory as a capability seam rather than just another store. Core capabilities include a typed ctx.memory service, a local SQLite provider (WAL mode, file permissions 0600), a memory tool with frozen snapshot injection, and a write approval gate that no model path can bypass.
What core features does the dsh-memento DSH plugin offer?
- A capability seam, not a store: Separation of service definition (
ctx.memory), provider (lib/store.mjs), and consumers (memorytool + snapshot injection). Any future plugin (e.g.,dsh-claude-move) can feed and read the same store through the same gate. - Unyielding approval gate: All write paths (
add/replace/remove/seed) are forced through an approval waterfall inside the service, not in the tool layer.writePolicy: ask | auto | offis configuration the model can neither see nor change;replace/remove/consolidateinclude the full text of entries to be changed in the approval payload, and denied writes still log a*-deniedaudit row. - Model-visible and logged: The injected snapshot lands verbatim in
request/header.system; every write is reconstructable fromapproval/asked+approval/decided+ the plugin's audit table. - Bounded and honest: Hard per-track/per-layer character budgets (default user 2000 / agent 4000). A full store fails with a structured error (usage + limit), prompting the model to consolidate and retry—never truncated, never auto-compacted.
How do I install and configure dsh-memento?
Requires Node ^22.19 || >=24 and DSH 0.1.0-rc.6. Install with:
dsh plugin --profile web add github:perrylink/dsh-memento
After installation, verify the config layer with dsh --profile web --dump-config. Optional overrides go in cordis.patch.yml, e.g., setting writePolicy: ask and adjusting budgets:
- id: memento
config:
writePolicy: ask # ask (default) | auto | off
budgets:
user: { userGlobal: 4000, workspace: 2000 }
agent: { userGlobal: 4000, workspace: 4000 }
How does dsh-memento's storage and audit mechanism work?
The provider uses a single-file node:sqlite database ($DSH_HOME/dsh-memento/memory.db, WAL mode) with zero dependencies and zero network. It includes entry and audit tables, supporting unique-substring matching. Every write generates an audit record, including denied writes (*-denied), ensuring full traceability.
Which DeepSeek Harness versions and platforms does dsh-memento support?
It is compatible with DSH 0.1.0-rc.6 and supports Windows, macOS, and Linux. It is pure ESM with no build step. The project was created on 2026-08-13 and last updated on 2026-08-16, currently with 3 stars and no open issues.