Introduction

In DeepSeek Harness (DSH), giving agents long-term memory commonly relies on a memory plugin that precipitates conversations into structured entries, then searches them by keywords. As entries accumulate, “having recorded” and “being able to recall” are often not the same thing: rephrase a query and BM25 may miss the match; once summaries fold the original words, you can’t get them back.

dsh-memory-semantic is a DSH “memory”-category plugin published by community maintainer Jackbessaliuz (~3 stars on GitHub). It does not rewrite the upstream memory store; it only builds indexes locally on data already present in meow-memory, adding semantic retrieval, a memory graph, and verbatim turn-level recall. Below we introduce its positioning, capabilities, and installation.

What Is This

In one sentence: meow-memory is responsible for “remembering”; dsh-memory-semantic is responsible for “recalling.”

Role Plugin Responsibility
Store meow-memory Write, layer, and organize (dream); knowledge-layer entries such as soul / user / rules / fact / lesson / topic / project
Retrieve & Deliver dsh-memory-semantic Read-only access to the same memory store; local vector index + its own turn library; retrieval and auto-injection

This plugin has no memory-writing capability at all and always opens meow-memory’s <workspace>/.dsh-meow/memory.db in read-only mode: no table creation, no row writes, no schema changes. Its own data is written to <workspace>/.dsh-semantic/ (including the turn library turns.db, etc.). Uninstalling this plugin leaves meow-memory’s data and behavior unaffected.

The graph-related turn memory data model, recall algorithm, and surface-takeover range semantics are ported from graph-memory (MIT). Capabilities are layered on top of the same meow-memory, rather than maintaining a second parallel memory store.

The current npm package version is 1.1.0 (MIT license), requires Node >= 20.11, with a peer dependency on @deepseek-ai/cordis ^4.0.1.

What Problems It Solves

On the same memory store, it enhances three typical shortcomings of keyword retrieval without changing meow-memory itself:

  1. Different phrasing means no hits — e.g., memory contains “lower thresholdRatio”, but you ask “the context is too full”; with no literal match, recall is zero.
  2. No sense of which entries matter more — with many entries, hubs and minor details can’t be sorted out by manual browsing.
  3. Details lost after summarization — once long conversations are compressed, you can’t trace back to verbatim quotes when needed.

The README compares results on the same 1283-turn conversation corpus with 64 hand-rewritten queries (paraphrases, synonyms, deliberate avoidance of distinctive original words): BM25 alone yields Recall@1 of 46.9%, vector semantics alone 32.8%, BM25 + vector RRF fusion 54.7%; “completely unfindable” dropped from 23/64 to 20/64. Semantic-only is not always stronger than keywords; the point of fusion is fewer misses and complementarity.

Core Features

Three Tools

Tool Purpose
memory_semantic Semantic memory retrieval: local vectors + BM25, returns the most relevant entries after RRF fusion
memory_graph Memory graph: global importance (weighted PageRank), knowledge domains (communities), similar neighbors
recall_turns Recover verbatim Q&A from earlier conversations by question (turn-level raw text layer)

On the first call to memory_semantic, a full embedding of existing memories is performed to build the vector index (at the scale of a few hundred entries, the README says this typically completes within tens of seconds), followed by incremental embedding.

Automatic Wiring (configurable off)

  • Cross-session handoff: when a new session opens with “continue”, it picks up the context from the tail of the previous session.
  • Action-triggered injection: when actions like editing configs or modifying data are matched, retrieves relevant red lines and lessons and attaches them to the next request.
  • Recall injection: each turn finds snippets from turn-level raw text based on the current question, inserted before the current query (marked as historical reference); the same memory is deduplicated within the same session.
  • First-turn long-term memory injection: delivers soul / user / global rules etc. at session start (in coordination with meow-memory).

Turn layer (Shelf B): after each conversation turn, the background registers it, the model extracts summaries and triples, writes to turns.db and computes vectors; queue and watermark state is persisted, so after a host restart extraction can resume from session logs. Extraction defaults to a gentle tier (low), independent of your session tier.

Settings Page

After installation, a “Semantic Memory” page appears in DSH settings: vector engine availability, index entry count, turn library and graph size, retrieval and graph parameters, recommended host compression tier, etc. Ollama auto-start can be toggled on this page, writing immediately to ~/.dsh/dsh-memory-semantic.runtime.json without modifying host configuration.

Ollama and Fallback

  • Ollama installed and available: vector + BM25 fusion, better semantic generalization (keywords include bge-m3, ollama, etc.).
  • Not installed or not started: automatically falls back to BM25 only, no errors or blocking; with autoStart: true, it attempts to launch Ollama in the background without blocking the current conversation.

If you don’t want automatic extraction, set turns.live.enabled: false; if you don’t want automatic injection, set turns.recallShadow.inject: false (tools and already-stored turns remain usable).

Installation and Enabling

In the DSH ecosystem, plugins are managed via profiles; see the SkillHub plugin entry for the community directory page (independent site, no official affiliation with DeepSeek / Hia).

Install and enable meow-memory first, then install this plugin; installing only one cannot form a complete “store + retrieve” pipeline.

Command line (CLI / web profile) installation; follow the README for exact commands:

dsh plugin --profile <profile-name> add github:Jackbessaliuz/dsh-memory-semantic

dsh plugin passes arguments through to pnpm inside the profile; add / remove / update work the same. Before installing, review the GitHub repository source code and MIT license yourself; the plugin runs with the current DSH process’s permissions and interacts with local files, optional Ollama, and model calls for extraction, so assess according to your own security policy.

Typical Usage

  1. Confirm that meow-memory already has memory data in the workspace and that this plugin is installed.
  2. Let the model call tools as needed during conversation — e.g., use memory_semantic for rephrased retrieval after describing intent in natural language, use memory_graph to see associations and key points, use recall_turns to look up historical verbatim quotes.
  3. Open the DSH “Semantic Memory” settings page, confirm the vector engine and index count; if no Ollama, accept BM25 fallback or enable auto-start as needed.
  4. To control tokens: turn off turns.live.enabled or turns.recallShadow.inject; the README provides token-scale reference for extraction and recall injection at a 150-turn sample size.

“Install one to be usable, install two to be useful”: with only meow-memory, memories exist but rephrased queries are hard to hit; with only this plugin, the memory store is empty and retrieval has no source.

Use Cases and Notes

Suitable for: DSH users already using meow-memory who want to enhance semantic recall, a graph perspective, and long-conversation verbatim tracing locally, with minimal reliance on external embedding APIs.

Notes:

  • Must be combined with meow-memory; this plugin is a read layer, not a replacement for a complete memory system.
  • The vector index should be built on the semantics of user raw text; the README emphasizes that building it on extracted summaries causes a sharp drop in semantic Recall (same-store measurements: 6.3% vs raw text 32.8%).
  • Deleting <workspace>/.dsh-semantic/ resets this plugin’s index and turn data from scratch without affecting meow-memory.
  • Does not conflict with complete memory solutions such as dsh-engram or dsh-memoria; this project focuses on retrieval and recall on top of existing “storage.”

Closing

Without touching meow-memory’s write surface, dsh-memory-semantic takes “what was recorded” a step toward “what can be recalled” using local fusion retrieval, a graph, and a turn library. Directory and documentation: