dshbase

Plugin directory / Knowledge / dsh-tdai-memory

dsh-tdai-memory

Verified · install-tested on dsh Scorp1o117

✓ Actively maintained Builds on 3 official DSH packages

View on GitHub ↗ ← Back to plugin directory

6Stars
0Forks
0Open issues
JavaScriptLanguage
2026-08-16Last push
Cross-platformPlatform

What it does

TencentDB Agent Memory port for DSH — four-layer memory L0-L3 (conversation, atomic, scene, user profile) with vector retrieval.

✅
Our take
Works — verified, early-stage project

TencentDB Agent Memory port for DSH — four-layer memory L0-L3 (conversation, atomic, scene, user profile) with vector retrieval. It installs cleanly and boots without issues in our testing. It's early-stage but functional.

“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.

README

dsh-tdai-memory

中文文档

GitHub: Scorp1o117/dsh-tdai-memory · npm: dsh-tdai-memory

Enhancement Suite npm

Part of the DeepSeek Harness Enhancement Suite — Vision · Soul/Persona · Long-term Memory · Plugin Marketplace.

A port of TencentDB Agent Memory (Tencent Cloud's open-source four-layer
memory system, originally an OpenClaw plugin) into DeepSeek Harness.

Features

  • L0 conversation capture: every turn (turn end, request boundary) is
    written to raw conversation storage (JSONL + SQLite + FTS + vectors)
  • L1 structured memory: a background pipeline uses an LLM to extract
    facts / preferences / events (persona / episodic / instruction) from
    conversations, stored in records/ + SQLite + FTS + vectors
  • L2 scenes / L3 persona: scene blocks and user profile generation
    (pipeline-scheduled)
  • Automatic recall injection: on every prompt assembly, relevant memories
    and the user profile are retrieved by the current user message and injected
    as dynamic context (the model "just remembers")
  • Tools: tdai_memory_search (L1 structured search),
    tdai_conversation_search (L0 raw-text search)

The data directory reuses the existing ~/.memory-tencentdb/memory-tdai, so
previously accumulated memories carry over seamlessly.

Architecture (porting approach)

Layer Content
Core The host-neutral core of tdai-memory-openclaw-plugin (src/core, src/utils), tsc-compiled to ESM (dist-dsh/), zero changes
Host adapter StandaloneHostAdapter (official standalone mode, direct OpenAI-compatible calls)
dsh shell index.js: config mapping, session/event + session/flush capture, system-prompt/assemble recall injection on agent.ctx, tool registration, lifecycle
Fallback recall-inject.js: preset-row recall injection (used when mounted inside an agent preset)

Hard-won wiring details:

  • Capture: session/flush listener (await semantics; must complete before
    headless exits); turn/start timestamps as the L0 cursor floor; turn-id dedup
  • Headless one-shot runs: wait for core.handleSessionEnd() inside flush
    (L1 extraction finishes before exit; otherwise the 5s shutdown timeout kills it)
  • Recall injection: must be registered on agent.ctx (assembly runs in
    the agent scope; root listeners never see it); attach one tick after
    session/created by resolving the agent from the agents service

Configuration (profile patch + settings)

Configuration is settings-namespace driven: the profile patch is the base
layer, and the tdai-memory: section of $DSH_HOME/settings.yaml overrides it
(LLM/embedding keys live in settings.yaml). The Web UI Settings → 记忆
section edits every field (v0.2.0, write-only keys); TdaiCore is built at
startup, so changes apply after a restart.

# $DSH_HOME/settings.yaml
tdai-memory:
  llm:
    apiKey: 'sk-...'
  embedding:
    apiKey: 'local-no-key'
# profile patch (base layer)
- id: tdai-memory
  name: 'dsh-tdai-memory'
  config:
    extraction:
      enabled: true
      enableDedup: false      # dedup LLM output parsing is flaky; off by default
    llm:                      # L1/L2/L3 extraction model (OpenAI-compatible)
      baseUrl: 'https://opencode.ai/zen/go/v1'
      model: 'mimo-v2.5'      # deepseek-v4-flash produces invalid extraction JSON
    embedding:                # vectors (OpenAI-compatible /v1/embeddings)
      baseUrl: 'http://127.0.0.1:8088/v1'
      model: 'Qwen3-Embedding-0.6B'
      dimensions: 1024
      sendDimensions: false

Install

dsh plugin --profile web add dsh-tdai-memory

then mount it in $DSH_HOME/profiles/web/cordis.patch.yml:

- insert:
    - id: tdai-memory
      name: 'dsh-tdai-memory'
      config: {}          # keys can live in settings.yaml instead

and restart dsh web. LLM/embedding API keys can be set in the Web UI
settings page (记忆 / Memory) or directly in settings.yaml under
tdai-memory:.

Note for users

  • This plugin is a standard profile bundle (dsh.bundle.patch):
    dsh plugin --profile web add dsh-tdai-memory installs and mounts it in
    one step — no manual cordis.patch.yml edits needed.
  • The settings section needs the dsh-host-apiproxy namespace allowlist;
    the plugin patches it automatically on first start — restart dsh web
    once more
    and the section appears. A dsh update overwrites the patch;
    the next plugin start re-applies it.
  • Settings changes apply after a restart (TdaiCore is built at startup).
  • Tested against DSH 0.1.0-rc.6.

Known trade-offs

  • Extraction model: mimo-v2.5 extracts correctly but takes 20-30s per
    call (background execution, does not block the conversation);
    deepseek-v4-flash is fast but its JSON output is non-compliant (extracts 0)
  • dedup: LLM conflict-detection output parsing is unstable (once caused
    stored=0); off by default; enable only with a more reliable model
  • L1 memory vectors: written with storage (8088 embedding is fast); L0
    vectors run as a background task, drained by destroy() on headless exit
  • Upgrades: after pulling new upstream code, rerun
    npx tsc -p dsh-tsconfig.json in the tdai project dir (output in dist-dsh/)

License

MIT

Install

🧩 Let your agent install it (recommended)

Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:

dsh plugin add dshbase-catalog

Then say "install dsh-tdai-memory for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.

Web profile:

dsh plugin --profile web add dsh-tdai-memory

Headless (CLI) profile:

dsh plugin --profile headless add dsh-tdai-memory

Package

npm: dsh-tdai-memory · version 0.2.7 · tested on dsh 0.1.0-rc.6

Test report

Verified end-to-end: L1 install + L2 load + L3 runtime Q&A on dsh 0.1.0-rc.6.

When to use it

Give the agent a memory, a knowledge base, or a retrieval layer so it stops forgetting context between sessions.

Who it's for

Users running long projects who want the agent to remember decisions, docs, and preferences without re-explaining.

For developers — extending it

The memory/retrieval backend is the seam — plug a new store, tune what gets distilled, or add citation and audit trails.

Security: not yet scanned — our daily static scan will cover it shortly.

Share this badge

More in Knowledge

Browse all 7797 plugins →