DSH HUB
首页插件商店插件包社区排行榜资源发布指南
插件源码
返回插件目录

mnbvcxzaqwertyuioplm /

mnbvcxzaqwertyuioplm/dsh-memory

已验证

DSH 跨会话语义记忆插件:智谱 embedding-3 + SQLite,提供 memory_add / memory_search 语义召回;配置可选、绝不因缺 key/缺库/缺服务而崩。

★ 0 Stars0 Forks0 IssuesN/A 社区评分0 已确认安装
查看 GitHub
README来源: main@1cbb6a7c

dsh-memory

Cross-session semantic memory for DeepSeek Harness — installed into any profile, so your agent actually remembers you across sessions.

License: MIT DeepSeek Harness plugin dsh-tools

🌐 English · 简体中文


dsh-memory registers two tools for the web / headless profiles, so your agent can remember you across sessions:

  • memory_add — persist a fact worth keeping long-term, auto-vectorized on the way in.
  • memory_search — recall relevant facts by semantics (cosine similarity), with a keyword fallback.
  • /mem <question> — type this in the composer and the agent will call memory_search first (results render as a collapsible tool card), then answer from memory.

Under the hood: Zhipu embedding-3 (2048-dim) + SQLite (node:sqlite) + cosine similarity. Zero new infrastructure — no vector database, no sidecar containers. Hundreds to thousands of memories recall in milliseconds.

Why

Your agent forgets everything between sessions. dsh-memory gives it a durable, semantic recall layer without adding a new service to run. It solves the "who am I / what did we agree on" problem with a few hundred bytes of SQLite and one HTTP call per write.

Features

  • Zero-config, never crashes — a missing Zhipu key, a missing database, a missing tools service, or a failing embedding call all degrade gracefully. This plugin will never take the DSH tree down (see Design guarantee).
  • Semantic recall with keyword fallback — memory_search scores by embedding cosine similarity first, then weights keyword hits; when embeddings are unavailable it falls back to pure keyword (bigram) matching.
  • 8s embedding timeout — on a bad or missing network it fails fast and falls back to keyword search instead of hanging the session.
  • Write-time semantic dedup (merge) — memory_add runs one cosine pass over the library before writing; a new fact that is highly similar to an existing entry (cosine ≥ 0.9) merges into that row — keeps the latest wording, inherits/updates category, maintains updated_at, and never adds a duplicate (returns merged: true/false). Correction convention: to override a stale/conflicting memory, simply record the new fact — newest wins.
  • SQLite WAL + busy_timeout=5000 — applied when the DB opens; concurrent writers (e.g. DSH web + the Jarvis brain sharing one library) no longer hit SQLITE_BUSY.

Installation

This plugin follows the official DSH bundle convention (dsh.bundle in package.json), so dsh plugin recognizes it and activates it as a configuration layer — not a plain dependency.

Install into the target profile (e.g. web):

dsh plugin --profile web add dsh-memory

After installing, restart DSH web for it to take effect (the bundle layer is only composed at startup):

systemctl restart dsh    # or restart however you run DSH

Local / pre-release install:

# Put this directory into the profile's node_modules and append "dsh-memory"
# to dsh.profile.bundles in package.json, then restart.

Configuration

Everything is optional — skip it all and the plugin still works (falling back to keyword search):

Config Description Default
enabled false disables tool registration true
semantic false skips embeddings, keyword-only true
memoryDbPath SQLite database path ~/.dsh-memory/memories.db
zhipuEnvPath Path to the Zhipu credentials .env file ~/.dsh-memory/.memenv
forceMemoryWords Force-memory signal words (array). When any word appears in a user message, the agent must call memory_add first, then answer [] (disabled by default)

forceMemoryWords example (set in your profile's cordis.patch.yml, not in the public repo):

- id: dsh-memory
  config:
    forceMemoryWords:
      - 记住
      - 重要
      - 珍贵
      - 特别
      - 务必
      - 一定
      - 必须

Zhipu credentials are read from environment variables first, then from the file at zhipuEnvPath:

ZHIPU_API_KEY=your-zhipu-key
ZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4/

Get a Zhipu key for free at open.bigmodel.cn (embedding-3 is billed per use).

Design guarantee

This plugin was born from a real incident: a misconfigured plugin sent a DSH web profile into a crash-loop. So dsh-memory is deliberately defensive:

  1. apply() is wrapped in an overall try/catch — no error is ever thrown up into the DSH tree.
  2. inject only declares tools (a service dsh-base always provides). It does not depend on dsh-llm, agents, or http.
  3. A missing key / database / service, or a failed embedding call → it logs and degrades, never interrupting startup.
  4. Errors raised inside a tool's execute() are caught and returned as ordinary results, never bubbling up into a session exception.

Tools

  • memory_add — write a fact worth remembering; vectorized automatically.
  • memory_search — semantically recall the most relevant facts for a question.
  • /mem — a manual override: "search memory first, then answer." If you're not sure the agent will recall on its own, type /mem <question> and it will run a semantic search, inject the results, and answer from them.

Storage schema

memories(id, text, category, source, created_at, updated_at)
memory_embeddings(memory_id, dim, vector)   -- 2048-dim JSON array

License

MIT

—/ 5

暂无评分

已验证 DSH bundle

Commit 1cbb6a7cad93

社区评论

还没有评论,来写第一条。

DSH HUB

社区维护的 DSH 插件索引。不是 GitHub 或 DeepSeek AI 的官方产品。

社区资源API关于