From 122a49edb75f68168fdcaac58e22c698d37560ec Mon Sep 17 00:00:00 2001 From: MXAntian Date: Thu, 20 Aug 2026 13:56:24 +0800 Subject: [PATCH] docs: add a DeepSeek Harness overlay example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dsh ships no memory layer, and its design notes reject per-provider plugins outright — "it repeats auth, configuration, lifecycle, and tool wrappers that MCP already standardizes and expands ownership for every added provider". The supported path is a Cordis overlay aiming their generic MCP client at whatever server you want. So there is nothing to build. mneme already speaks stdio MCP, which is the only thing that overlay requires; the integration is a config file. Adding it here rather than upstream because dsh does not accept external pull requests. Structure mirrors their examples/mcp-memory overlays, with one deviation worth naming: `command: node` plus an absolute script path instead of a bare executable, because mneme is not published to npm with a `bin` and there is nothing on PATH to invoke. The comments carry the two failure modes a new user actually hits, both of which are silent rather than loud: - no TOKENMEM_DB_PATH -> DB resolves against the process working directory, so the store built in one session can be invisible from the next - no EMBEDDING_API_* -> starts and answers fine, as FTS5 keyword search only. Hybrid recall is the reason to run mneme; its absence is not an error, just a quieter and worse result set README lists it under "Config provided, not verified by us" rather than in the "Tested with" table. The CI here exercises mneme's own MCP server, not dsh's loader, and claiming otherwise in the same document that warns about silent degradation would be its own small version of the same sin. --- README.md | 31 +++++++++++++++++++++++++++++++ examples/dsh.cordis.yml | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 examples/dsh.cordis.yml diff --git a/README.md b/README.md index b4ba74c..1f05f4c 100644 --- a/README.md +++ b/README.md @@ -241,6 +241,37 @@ mneme is a standard **MCP server**, supporting both **stdio** (default, one proc | Windsurf | Add to MCP server config | | Cline / Continue | Add to MCP settings | +**Config provided, not verified by us:** + +| Agent | Setup | +|-------|-------| +| DeepSeek Harness (dsh) | Copy [`examples/dsh.cordis.yml`](examples/dsh.cordis.yml) into your dsh config — see below | + +### DeepSeek Harness + +dsh deliberately ships no memory layer of its own. Its design notes reject +per-provider plugins outright, on the grounds that they repeat "auth, +configuration, lifecycle, and tool wrappers that MCP already standardizes" — so +the supported path is a Cordis overlay pointing its generic MCP client at +whatever server you want. + +That means mneme needs no dsh plugin and no adapter code. It already speaks +stdio MCP, which is the only thing the overlay requires. The integration is a +config file: [`examples/dsh.cordis.yml`](examples/dsh.cordis.yml). + +Two caveats worth reading before you wire it up: + +- **The overlay uses `node /mcp-server.mjs`, not a bare command.** + mneme is not on npm with a `bin`, so there is nothing on PATH to invoke. You + need a checkout. +- **Set `EMBEDDING_API_*`.** Without them mneme starts, answers, and gives you + FTS5 keyword search only. Hybrid recall is the reason to run it; losing it is + not an error, just a quieter and worse result set. + +The overlay is provided as a starting point and is **not covered by this repo's +test suite** — the CI here exercises mneme's own MCP server, not dsh's loader. +Reports of it working (or not) are welcome. + --- ## Features diff --git a/examples/dsh.cordis.yml b/examples/dsh.cordis.yml new file mode 100644 index 0000000..6ed9303 --- /dev/null +++ b/examples/dsh.cordis.yml @@ -0,0 +1,41 @@ +# DeepSeek Harness (dsh) overlay for mneme — opt-in, default-off. +# +# mneme needs no dsh plugin: it is already a standard MCP server and dsh ships a +# generic MCP client (@deepseek-ai/dsh-mcp-client). This file only points that +# client at a mneme checkout. Copy it into your dsh config and edit the path. +# +# Unlike the overlays dsh ships in examples/mcp-memory, `command` here is `node` +# with an absolute script path rather than a bare executable: mneme is not +# published to npm with a `bin`, so there is nothing on PATH to invoke. Clone the +# repo, run `npm install`, and point args at that checkout. +# +# Two things that will silently give you a worse system if you skip them: +# +# 1. TOKENMEM_DB_PATH. Without it the DB is created relative to the process +# working directory, so the store you build in one session can be invisible +# from the next. Set it absolute. +# +# 2. EMBEDDING_API_*. Without these mneme starts fine and answers queries — as +# FTS5 keyword search only. Hybrid recall (FTS + vector KNN fused by RRF) is +# the reason to run mneme at all, and its absence is not an error, just a +# quieter, worse result set. Recent builds warn once per process on the +# degrade path; check stderr on first run if you are unsure which mode you +# are in. +- insert: + - id: memory-mneme + name: '@deepseek-ai/dsh-mcp-client' + config: + serverName: mneme + transport: stdio + command: node + # EDIT THIS PATH to your mneme checkout. + args: ['/absolute/path/to/mneme/mcp-server.mjs'] + cwd: !!js process.cwd() + env: + TOKENMEM_DB_PATH: !!js >- + process.env.TOKENMEM_DB_PATH?.trim() || process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:os').homedir(), '.mneme', 'mneme.db') + # Optional but strongly recommended — see note 2 above. + EMBEDDING_API_BASE_URL: !!js process.env.EMBEDDING_API_BASE_URL ?? '' + EMBEDDING_API_KEY: !!js process.env.EMBEDDING_API_KEY ?? '' + EMBEDDING_MODEL: !!js process.env.EMBEDDING_MODEL ?? 'text-embedding-3-small' + EMBEDDING_DIMENSION: !!js process.env.EMBEDDING_DIMENSION ?? '1536'