EVENT: errors, fixes, decisions, changes, and facts.
Typed edges such as USED_SKILL, SOLVED_BY, REQUIRES, PATCHES, and CONFLICTS_WITH preserve relationships. A new question retrieves a relevant local subgraph instead of replaying the complete history.
Core advantages
Native host integration
Loaded by the DSH/Cordis plugin lifecycle, not simulated through an MCP side channel.
Disposes database, cache, and event listeners with its plugin fiber.
Does not fork or modify DeepSeek Harness core.
Durable cross-session memory
Knowledge from Session A can be recalled automatically in Session B.
Memory survives DSH restarts.
Stable event IDs make resume and HMR ingestion idempotent.
Source sessions and graph edges explain why a memory was recalled.
Smaller, cleaner context
Keeps the newest real user turns verbatim (freshTurnCount, default 5).
Uses the agent-scoped public DSH compaction service to replace the older model-facing prefix with one rolling checkpoint; the durable source event log remains intact.
graph-memory · DSH Hub
Indexes each landed checkpoint and preserves exact source-message provenance for later dereferencing.
Semantic vector retrieval with FTS5 lexical fallback.
Community detection, PageRank, personalized PageRank, and bounded graph traversal.
Only a relevant cross-session subgraph enters the current prompt, within recallTokenBudget (default 4096).
Automatic injection uses a high-precision semantic gate (autoRecallMinScore, default 0.6) and never falls back to query-independent community representatives; explicit gm_search remains broad.
Recalled history is marked as untrusted reference material and cannot override current user instructions.
Local-first and lightweight
Community uses SQLite by default; no graph database deployment is required.
Embeddings are optional. Without them, recall falls back to FTS5.
Data remains in the user's local profile by default.
OpenAI-compatible embeddings support DashScope, OpenAI, and local providers.
Observable and verifiable
gm_status reports store path, graph counts, vector coverage, mode, and dimensions.
Model or dimension changes trigger re-embedding.
Vectors with different dimensions are never silently compared.
Critical knowledge can be recorded deterministically with gm_record.
Scoped token benchmark
The original OpenClaw adapter was measured in a seven-turn workflow that installed, authenticated, and queried bilibili-mcp:
Turn
Without Graph Memory
With Graph Memory
R1
14,957
14,957
R4
81,632
29,175
R7
95,187
23,977
The measured reduction at R7 was approximately 75% in that specific workflow. This is a scenario-level comparison, not a universal savings guarantee; the mechanism is replacing indiscriminate history replay with a relevant knowledge subgraph.
Project evolution
The DSH integration does not discard the original project. Graph Memory is evolving from an OpenClaw memory plugin into a graph-memory core that different agent harnesses can load natively.
Pro Lite read-only Host + Client implemented; 2D/3D and drag pending
On March 15, 2026, the project owner presented Graph Memory's architecture at the CLAW program event held in Tsinghua Science Park. The following owner-supplied materials and the Sina Finance event report document that development.
The image below is the existing OpenClaw / ClawX-era Pro graph prototype. It demonstrates a previously explored interaction direction; it is not a shipped DSH frontend.
Names and venue information document project history only and do not imply endorsement by Tsinghua University, Sina Finance, DeepSeek, or OpenClaw.
Configurable newest N turns; older surface prefix becomes a checkpoint
Cross-session auto-recall
Done
Injected during Prompt Assembly
Explicit record and search
Done
gm_record, gm_search
Vector backfill and migration
Done
Model, dimension, and fingerprint tracked
Visible plugin state
Done
Active in Plugin Inventory
Pro visual workbench
Experimental
Separate DSH Client Plugin with a read-only card snapshot
Current beta: 1.6.0-beta.8. Local acceptance used DeepSeek Harness 0.1.0-rc.8. Testing covered tarball installation, Web profile loading, configurable five-turn rolling compaction through the public agent-preset compaction service, exact source provenance, token-budget enforcement, high-precision automatic recall, FTS5 fallback, and the Pro Lite Host, Typed Remote, and Client bundle boundaries. All 127 automated tests passed. Real model-backed acceptance also verified rolling checkpoint replacement, 1024-dimensional text-embedding-v4 vectors, and automatic cross-project recall without an explicit memory tool call.
Plugin enabled: graph-memory/dsh is active in the DSH plugin list
Cross-session semantic recall in a fresh Session
Install on DeepSeek Harness
Prerequisites: Node.js 22.19+ or 24+. The current beta is not yet published to npm, so build the tarball from source:
git clone https://github.com/adoresever/graph-memory.git
cd graph-memory
npm install
npm test
npm run build
npm pack
Install the generated tarball into the DSH Web profile:
npx @deepseek-ai/dsh plugin --profile web add /absolute/path/to/graph-memory-1.6.0-beta.8.tgz
npx @deepseek-ai/dsh --profile web --dump-config
npx @deepseek-ai/dsh web
# From a deepseek-harness source checkout:
pnpm dsh plugin --profile web add /absolute/path/to/graph-memory-1.6.0-beta.8.tgz
pnpm dsh web
After installation, verify that graph-memory/dsh is enabled under Settings → Plugins → Plugin list.
Default store:
$DSH_HOME/graph-memory/graph-memory.db
Without DSH_HOME, this is normally ~/.dsh/graph-memory/graph-memory.db.
Optional vector retrieval
Do not send secrets in chat. Cordis stores only a credential reference; DSH credentials resolves the real value for each embedding operation.
DashScope example:
export GRAPH_MEMORY_EMBEDDING_API_KEY='replace-with-your-key'
export GRAPH_MEMORY_EMBEDDING_BASE_URL='https://dashscope.aliyuncs.com/compatible-mode/v1'
export GRAPH_MEMORY_EMBEDDING_MODEL='text-embedding-v4'
export GRAPH_MEMORY_EMBEDDING_DIMENSIONS='1024'
dsh web
Without embeddings, Graph Memory continues with FTS5 and does not block conversation.
DSH tools
Tool
Purpose
gm_status
Plugin, store, extraction, recall, and vector state
gm_search
Explicit long-term graph search
gm_record
Persist a TASK, SKILL, or EVENT
gm_stats
Node, edge, type, and community statistics
Automatic recall does not require an explicit gm_search tool call. The plugin retrieves relevant memory during Prompt Assembly.
Graph Memory Pro as a DSH plugin
The old desktop-2.0 Pro cannot be installed into DSH directly, but the new Pro Lite now has a minimal, separately installable DSH plugin loop. The old branch remains an OpenClaw + Neo4j implementation. The new dsh-pro/ package reads Community SQLite on the Host, exposes only bounded snapshots over Typed Remote, and registers a read-only entry in the DSH Web sidebar.
The reviewed desktop-2.0 code includes Neo4j Driver, GDS, APOC, vector indexes, graph maintenance tools, and CRUD routes. Today it also:
imports openclaw/plugin-sdk at the entry;
registers OpenClaw Gateway HTTP routes;
writes OpenClaw configuration and restarts its Gateway during installation;
exposes Neo4j connection details through /graph-memory-pro/neo4j-config;
The first Pro plugin does not need mandatory Neo4j:
Pro Lite: SQLite plus a 2D/3D DSH graph client;
Neo4j adapter: optional storage plugin for large graphs, GDS, and advanced analytics;
the browser receives bounded GraphSnapshot data, never database passwords or arbitrary Cypher access;
drag operations submit node IDs and intent; the Host validates them and writes visible, reversible Session context.
Pro should therefore be an optional Graph Memory DSH plugin module, not a separate standalone product.
Recommended package split
graph-memory # Community: current native Host Plugin
graph-memory-pro-dsh # Pro Lite: local beta Host + Client Plugin
@adoresever/graph-memory-store-neo4j # Optional large-graph adapter, to be built
The first milestone should be Pro Lite: reuse the existing SQLite graph and add the DSH graph workbench, so users do not need Neo4j. Neo4j stays optional for larger graphs, GDS, and advanced analysis. This is a planned architecture; the existing desktop-2.0 Pro is still Neo4j-only and does not yet implement a switchable SQLite / Neo4j GraphStore.
Current local installation
The npm package graph-memory@1.5.8 is still the OpenClaw release. The new Community beta and graph-memory-pro-dsh have not been published to npm, so install them from this checkout:
dsh plugin --profile web add \
--allow-build=@photostructure/sqlite \
/absolute/path/to/graph-memory
dsh plugin --profile web add \
/absolute/path/to/graph-memory/dsh-pro
dsh web
Both plugins share ~/.dsh/graph-memory/graph-memory.db by default. The current entry provides bounded SQLite GraphSnapshot, gm_graph_snapshot, gm_graph_node, a strict Typed Remote, and a read-only sidebar snapshot/search view. It does not yet provide a 2D/3D renderer, full split view, drag-to-context, or node editing.
Four required integration layers
Core contracts: bounded SQLite GraphSnapshot and node detail are implemented; a Neo4j provider and unified writable contract remain.
Host Plugin: the Pro Lite Host service, two bounded tools, and read-only Typed Remote are implemented; write actions and finer permissions remain.
Client Plugin: the DSH sidebar entry, card snapshot, search, and refresh are implemented; 2D/3D graphs and split-view conversations remain.
Controlled context actions: drag-and-drop sends only a node ID and an intent; the Host validates it and writes visible, reversible Session Context.
The old Pro /graph-memory-pro/neo4j-config route returns connection details to the browser; the new implementation removes that security flaw. Pro Lite sends only a strictly validated, bounded GraphSnapshot, never a database path, Session ID, Bolt password, SQL, or unrestricted Cypher. Future write actions must preserve this Host boundary.
OpenClaw compatibility
Existing OpenClaw users retain the original entry:
The Context Engine slot must also be activated in ~/.openclaw/openclaw.json; otherwise the package may appear installed without running the full ingestion and extraction pipeline: