Amengclass / dsh-memory

Listed

Persistent, model-editable memory/notes store for DeepSeek Harness. Adds memory_set/get/delete/search tools backed by ctx.storageDomain so facts survive across sessions (dsh-plugin).

mainModelToolSession View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Amengclass/dsh-memory

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 138979eSynced Aug 18, 2026

dsh-memory

English | 中文

A persistent, model-editable memory/notes store for DeepSeek Harness. It gives the agent a first-class way to durably write, fetch, and search "facts it wants to remember" that survive across sessions — something conversation-history search, todo_write, settings, and static skill docs do not cover.

It is a community dsh-plugin: an installable Cordis bundle shipping as plain ESM JavaScript (index.js + index.d.ts), so it installs from a git host or npm with no build step.

Records live in one storage domain (dsh_memory) routed through the built-in ctx.storageDomain seam — not hand-rolled files — so they persist under the deployment's configured backend (json/sqlite) and emit domain/changed for live UIs.

Why it is not redundant

Existing capabilityDifference from dsh-memory
session_search / session_event_*Only read past conversation; cannot store durable facts
todo_writeTask-status tracking, not knowledge
settings / credentialsOperator config, not agent-mutable knowledge
skillsStatic docs; the model cannot write to them
goal / scheduleObjectives / reminders, not a knowledge store
MCP memory serverRequires an external server/account; this is a lightweight built-in

Tools

ToolPurpose
memory_setDurably upsert a fact/note under a stable key (with optional tags).
memory_getRead one entry by key, or list all when the key is omitted.
memory_deleteDelete an entry by key (idempotent).
memory_searchCase-insensitive substring search over key/value/tags, filterable by required tags.

Example

user:  From now on, don't touch public/ in this project.
model: memory_set key="project/convention" value="Do not modify public/" tags=["project","rule"]
      → [memory] saved "project/convention" (2 tags)

(next session)
user:  Continue on that project.
model: memory_get key="project/convention"  → "Do not modify public/" → works accordingly

Install

Install into a Harness profile. From a checkout:

dsh plugin --profile web add ./dsh-memory

or from this repository (no build step required — the package ships JavaScript):

dsh plugin --profile web add github:Amengclass/dsh-memory

The storage backend is provided by your deployment (web profiles mount @deepseek-ai/dsh-storage-json with backend: json by default). This plugin only declares a storage domain, so no backend changes are needed.

Configuration

Schemastery-validated config, overridable from your profile patch:

KeyDefaultMeaning
domainNamedsh_memoryName of the storage domain (must match /^[a-z][a-z0-9_]*$/).
maxItems1000Hard cap on stored entries.
maxKeyLength120Max key length; longer keys are rejected.
maxValueLength10000Max stored value length; longer values are rejected.
- insert:
    - id: dsh-memory
      config:
        maxItems: 500

Dependencies & license

  • Runtime peer dependencies (provided by the harness's own node_modules): @deepseek-ai/dsh-storage-domain, @deepseek-ai/dsh-tools, @deepseek-ai/schemastery, zod.
  • No runtime build toolchain; no Node addons.
  • MIT licensed — see LICENSE.

Contributing / topic

Published under the dsh-plugin GitHub topic. PRs and issues welcome.

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 14, 2026, 1:41 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.