omdsh-dev/dsh-mnemon
面向DeepSeek Harness的三层内存控制平面:持久化运行时上下文、可搜索的项目文档、可插拔的长期记忆、智能路由、监督代理工作流、WebUI及无头工具。
项目介绍Project Overview
dsh-mnemon 是 DSH 的三層可插拔記憶外掛,把每輪上下文、完整敘事文件、跨會話證據分開管理,Mnemon 為預設長效引擎,亦支援 OpenViking、Mem0、Holographic 等九家供應商。適用於需要在長會話中保留偏好、決策依據與專案背景的代理流程。注意:外掛卸載不刪除本地或遠端資料,且無密鑰掃描器,敏感密鑰不得存入任何層。
dsh-mnemon is a DSH plugin that supplies a three-tier pluggable memory layer: Runtime for every-turn context, Documents for full narratives, and Memory Spaces for cross-session evidence. Mnemon is the default long-term engine, with eight optional providers including OpenViking, Mem0, and Holographic. It fits agent workflows that must retain preferences, decisions, and project context across long sessions. Caveat: uninstalling the plugin does not remove local or remote memory, and no secret scanner exists, so credentials must never be stored in any tier.
请帮我了解并安装插件:【dsh-mnemon】【https://github.com/omdsh-dev/dsh-mnemon】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-mnemon
把 omdsh-dev/dsh-mnemon 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-mnemon
English · 简体中文
The three-tier, pluggable, Agent-driven memory system for DeepSeek Harness.
Three memory tiers · Nine long-term providers · One supervised workflow
Explore the capability map · Start in five minutes · Read the v0.3.2 notes · Watch the widescreen demo
dsh-mnemon gives DSH one memory control plane without forcing every kind of knowledge into one database. Runtime Memory keeps compact context available every turn. Project Documents preserve complete narratives. Memory Spaces retrieve durable evidence on demand and can use Mnemon, OpenViking, Honcho, Mem0, Hindsight, Holographic, RetainDB, ByteRover, or Supermemory.
Mnemon remains the official, prioritized native engine. The third tier is replaceable; the first two keep the same storage, workspace, and interaction model regardless of provider.
Since v0.3.0, the three tiers are the default topology of a composable kernel rather than the only shape hard-coded into every entry point. MemoryBoot wires trusted Layer, Adapter, Strategy, Guard, and MemorySource contributions into one runtime generation. Each user turn pins a lightweight TurnView: exact Runtime context enters Wake eagerly, while Documents and Memory Spaces contribute only bounded routing covers and keep complete recall authority Host-side. Users still install one dsh-mnemon package and keep the existing settings, tools, RPC, and UI workflow. See the composable architecture and extension guide.
Understand the scope in 30 seconds
| Tier | Keep here | How it reaches the Agent | Managed by |
|---|---|---|---|
| Runtime | Preferences, collaboration rules, project conventions, environment facts | Compact USER.md / MEMORY.md projection on every turn |
Deterministic dsh-mnemon Host |
| Documents | Designs, investigations, procedures, postmortems, handoffs | Search first, full Markdown on demand | Deterministic dsh-mnemon Host |
| Memory Spaces | Cross-session facts, decisions, entities, relations | Bounded recall from active spaces | Mnemon Native or an external Provider |
The tiers are not copies. A useful rule is: every-turn context goes to Runtime, complete narratives go to Documents, and cross-task evidence goes to Memory Spaces. Current instructions, repository files, and live tool results always outrank historical memory.
Clicks that start real work
| User action | What actually runs | Data effect |
|---|---|---|
| Search | Concurrent provider-native recall | Read-only |
| Agent query | A clean top-level task Agent receives bounded evidence and writes an answer | Read-only |
| Remember / Save to memory | A clean task Agent qualifies, routes, deduplicates, distills, and writes behind Host controls | Writes only if accepted |
| Smart selection | Hard rules filter providers; a task Agent resolves only genuine ambiguity | Saves a routing receipt |
| AI metadata | One asynchronous task Agent per selected Memory Space, each using the provider's fastest sample path | Local title/description only |
| Archive Document | A task Agent creates a searchable cold reference before the Host moves the original | Supervised move |
| Turn memory | Expands exact recall, write, and Document-search activity; each item navigates to its source | Read-only |
Only the rows that explicitly name a task Agent spend a separate model context; Search and Turn memory are deterministic Host reads.
Task Agents do not reuse or consume the main conversation history. By default they follow DSH's new-session model route; Settings → Memory System → Background task Agent can select a dedicated Provider and model. That fixed route also applies to bounded Mnemon workers for idle checkpoint review, writes, evidence-bound answers, provider placement, memory migration, USER compaction, Document archiving, and metadata maintenance. Conversation Recall and Related stay direct Host reads and do not use this background route.
With DSH 0.1.1-rc.2, the first-party deepseek-official/deepseek-v4-flash-vision-exp route appears with an Image input label. Mnemon background jobs still send text-only prompts; multimodal conversation messages keep their DSH attachment references through lifecycle processing, and raw image bytes are never copied into memory.
One Memory Space workflow, nine providers
| Provider | Shape | Best fit |
|---|---|---|
| Mnemon | Official native local CLI + SQLite | Exact writes, entities, typed relationships, local-first sharing |
| OpenViking | HTTP + viking:// |
Resource trees and asynchronous extraction |
| Honcho | HTTP workspace / peers | Team and Agent-peer conclusions |
| Mem0 | Platform or self-hosted HTTP | Existing user / Agent memory |
| Hindsight | HTTP memory bank | Banks, entities, provider-native graph |
| Holographic | Local structured fact files | Auditable facts, trust scores, local entities |
| RetainDB | HTTP project / user | Project- and user-scoped profiles |
| ByteRover | Local brv CLI |
Code knowledge trees and curate workflows |
| Supermemory | HTTP container | Document ingestion and container sharing |
Provider capability differences stay visible. dsh-mnemon never invents graph edges, deletion semantics, or enumerable content for an engine that does not provide them. Settings owns reusable Provider services; Memory Spaces owns concrete instances, activation, scope, and metadata. External Providers are off by default.
See the provider capability and deployment matrix.
Real WebUI walkthrough
The following roughly 55-second capture comes from a live 1600×900 DSH WebUI. It deliberately pauses on full-page scrolling, page transitions, Provider cards, dialogs, button-state changes, and a completed read-only Agent Query. Destructive confirmations are deliberately not submitted.

Watch the 1600×900 MP4 · Open the page-by-page UI guide
Start in five minutes
1. Install Mnemon Native
Mnemon is the default engine and the simplest local-first starting point:
# macOS
brew install --cask mnemon-dev/tap/mnemon
# macOS / Linux via Go
go install github.com/mnemon-dev/mnemon@latest
mnemon --version
Windows users can install the official v0.2.3-or-newer release ZIP. The expected installation path and checksum procedure are in Getting Started.
2. Install DSH and the plugin
This release is verified against DSH 0.1.1-rc.2, whose complete profiles require Node.js ^22.19.0 || >=24.0.0; Node 20 lacks host primitives used by rc.2. The dsh-mnemon package itself retains Node.js 20 compatibility for older compatible DSH hosts. DSH rc.2 is published on npm's latest and next tags; use the exact version below for a reproducible installation:
npm install -g @deepseek-ai/dsh@0.1.1-rc.2
dsh --version
dsh plugin --profile web add dsh-mnemon
dsh --profile web
DSH profiles have independent plugin rosters. Install the same package separately for one-shot Headless tasks:
dsh plugin --profile headless add dsh-mnemon
dsh --profile headless "Check durable project context before answering this task."
For a local checkout, use an absolute path:
dsh plugin --profile web add "link:/absolute/path/to/dsh-mnemon"
dsh plugin --profile headless add "link:/absolute/path/to/dsh-mnemon"
3. Verify the first workflow
- Open Memory System → Status and verify dsh-mnemon, Mnemon Native, Runtime, Documents, and enabled Providers.
- Open Memory Spaces → Overview → Create Memory Space and choose an enabled Provider explicitly.
- Submit one stable, future-useful candidate through Remember.
- Open Recall, run a direct search, then run Agent query against the same question.
- Return to the conversation, expand Turn memory, and follow one exact tool link.
The primary tab order is intentionally stable: Status, Runtime, Documents, Memory Spaces.
Familiar controls, expanded capability
Agent-driven memory operations
| Supervised distillation | Bounded Agent query |
|---|---|
![]() |
![]() |
The workbench makes the task boundary explicit before dispatch and keeps the returned answer beside its evidence scope. Conversation-native Turn memory and Save to memory remain enabled by default and can be changed independently under Settings → Memory System → Conversation interface.
Manual or policy-driven placement
| Create explicitly | Route future distillation intelligently |
|---|---|
![]() |
![]() |
Manual creation always asks the user to choose. Smart selection is a distillation policy: hard rules define the eligible set, then an optional prompt guides the Agent only when several candidates remain.
Global, workspace, and custom scope
| Scope | Behavior |
|---|---|
global |
Uses ~/.mnemon; ideal for a local control plane shared across workspaces and Agents |
workspace |
Uses <workspace>/.mnemon; local Providers that support workspace following move with the effective workspace |
custom |
An explicit path with global semantics, useful for team conventions or isolated environments |
Remote Provider workspaces, users, banks, projects, containers, and URIs remain their own namespaces; switching the DSH workspace never silently rewrites them. In workspace mode, the workbench may inspect one selected workspace while the current conversation continues to execute in its own cwd. Independent task Agents launched from the workbench use the inspected workspace even when no main session is selected.
Web, conversation, and Headless share one system
| Surface | What remains available |
|---|---|
| Sidebar WebUI | Status, Runtime, Documents, Memory Spaces, Provider services, visualization, and confirmation surfaces |
| Conversation UI | Turn memory, Save to memory, exact navigation to the corresponding page |
| Headless | Runtime injection, Document search, Memory Space tools, workspace routing, and supervised writes without a WebUI |
| Commands | /mnemon status, recall, related, remember, and forget |
Data and security boundaries
- Runtime and Documents are local deterministic stores. Mnemon Native is local by default; external Providers are explicit opt-ins.
- Provider credentials are mode
0600under<storageRoot>/state/memory-providers.json. They are never returned to the browser, smart-selection Agent, or Mnemon Pack. - Host calls use argument arrays with shell disabled, bounded output, timeouts, cancellation, schema validation, path boundaries, locks, and revisions.
- Disabling a Provider clears its local catalog metadata but never deletes remote data. Reconnecting rebuilds metadata from the Provider, using local defaults only when a field cannot be mapped.
- Changing scope never migrates, merges, or deletes an old root automatically.
- There is no deterministic secret scanner yet. Never store keys, tokens, private keys, or raw sensitive logs in any tier.
- Uninstalling the plugin does not remove local or remote memory data.
See Operations, security, and troubleshooting for backup, recovery, and diagnostics.
Documentation
| I want to… | Start here |
|---|---|
| See the complete product boundary | Capability map |
| Install and verify the first workflow | Getting Started |
| Follow every visible click and Agent action | Sidebar and conversation UI guide |
| Compare or deploy all nine Providers | Long-term memory providers |
| Understand tiering and lifecycle | Storage model · Workflows |
| Configure scope, routing, and model selection | Configuration |
| Back up, update, or troubleshoot | Operations |
| Integrate tools, commands, or RPC | Interface reference |
| Build a Layer, Adapter, Strategy, Guard, or MemorySource extension | Extension guide |
| Review the release | v0.3.2 release notes |
See the documentation hub for the full map.
Development
pnpm install
pnpm run verify
verify runs TypeScript checks, Vitest, a reproducible double build, an isolated real Headless-profile activation check, and published-package validation. lib/ is generated and intentionally not tracked.
Before opening an Issue or Pull Request, read the contribution rules (简体中文) and use the bilingual repository templates. Incomplete reports and PR descriptions are rejected by bilingual automated policy checks.
License
MIT. Report security issues privately through SECURITY.md, not a public issue.




nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill