← Back to home@LJH-snow

dsh-tool-memory

Local knowledge-graph memory tools for DeepSeek Harness

Stars
0
Language
TypeScript
Created
Oct 5, 2026
Updated
Oct 6, 2026

Introduction

dsh-tool-memory

English | 中文

Local knowledge-graph memory for DeepSeek Harness (dsh) as a Cordis plugin. The agent can store entities, observations, and relations in a file-backed graph, search them, and manage them across sessions — no external service and no credentials required.

Install

npm install @libai168/dsh-tool-memory

Requires @deepseek-ai/cordis (^4.0.1) and @deepseek-ai/dsh-tools (^0.1.0-rc.6) as peer dependencies.

Configuration

- name: 'github:LJH-snow/dsh-tool-memory'
  config:
    # storagePath: '~/.dsh/memory.jsonl'

The graph is stored as JSONL at storagePath (default: ~/.dsh/memory.jsonl). The file format matches the official MCP memory server shape: entity lines carry name/entityType/observations, relation lines carry from/to/relationType, so an existing memory file can be reused as-is.

Tools

ToolDescriptionWrite
memory_statsReport entity, relation, and observation counts plus storage pathNo
memory_read_graphRead the graph (entities, observations, relations)No
memory_searchSearch entities by keyword with related relationsNo
memory_create_entitiesCreate entities from a JSON arrayYes
memory_add_observationsAppend observations to one entityYes
memory_create_relationsCreate relations between existing entitiesYes
memory_delete_entitiesDelete entities and cascade their relationsYes
memory_delete_observationsDelete specific observationsYes
memory_delete_relationsDelete specific relationsYes

Security contract

  • Everything is local: the store reads and writes one JSONL file; there is no network access and no credential handling.
  • Writes are atomic (temp file + rename), and corrupt lines in an existing file are skipped on load instead of failing the plugin.
  • Relations are only created between entities that already exist, preventing dangling references.
  • Output is capped: reads return at most 200 entities and 500 relations, search returns at most 50 entities (default 20), names are capped at 200 characters and observations at 2,000 characters, and each mutating call accepts at most 100 input items.
  • All mutating tools are marked kind: 'edit'; array parameters are passed as JSON strings and validated before any write.

API scope

This version covers the full entity/relation/observation lifecycle with file storage. Timestamps, embeddings-based semantic search, and multi-store isolation are future work.

Development

npm install
npm run typecheck
npm test
npm run build
npm pack --dry-run

License

MIT