cyanxi-eb/dsh-mem ↗★ 0

dsh-mem

零依赖本地记忆层:回指针 + 原文切片、NDJSON 迁移、隐私闸(DSH 插件 + 独立 CLI,只用 node:* 与 node:sqlite)

Package
dsh-mem
Compatibility
Unverified
Version
0.1.0
License
MIT
Last updated
Nov 2, 2026

Other repositories with this package name

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:cyanxi-eb/dsh-mem

配置项

package.json 已声明 "dsh": { "bundle": { "patch": "./cordis.patch.yml" } },patch 内容是:

- insert:
    - id: dsh-mem
      name: 'dsh-mem'
      config:
        workspace: ''            # 钉死工作区;空 = 优先级链
        storeDir: ''             # 库目录;空 = $DSH_HOME/mem
        excludePaths: []         # 入库时跳过的路径 glob
        redact: []               # 入库前替换的正则
        autoIngest: false        # 首次工具调用时后台 ingest 一次
        rerank: 'lexical'        # 'off' | 'lexical' | 'embedding'(向量 = RRF(词面,向量),k=60)
        rerankLexical: true
        episodeEnabled: true
        episodeClosureMinutes: 10
        episodeMaxChars: 4000
        embeddingEnabled: false
        embeddingModel: 'bge-small-zh-v1.5'
        embeddingModelDir: ''
        embeddingFailFast: true
  • workspace — 钉死的工作区绝对路径(例如 'D:\dsh-sp1');空 = 按下面的优先级链自动解析。解析只有 core.resolveWorkspace 一份实现,CLI 与插件共用:workspace 配置 > 宿主会话 cwd(exec.agent.session.header.cwd / workingDirectory.get(session),取不到就跳过)> process.cwd() > profile 目录(DSH_PROFILE_DIR / /profiles/)
  • storeDir — 库目录,空 = /mem;换机器/换盘改这里
  • excludePaths — ingest 时跳过的路径前缀
  • redact — 入库前替换的正则数组(见下节)
  • autoIngest — 默认 false:不自动索引,由你显式触发

0.2 新增的键(逐字绑定面板,改名会让面板写了不生效):

键默认作用
rerank'lexical''off' 与 P0 逐字节一致 / 'lexical' 词面重排 / 'embedding' 向量重排(RRF(L3,向量) k=60;模型缺失时按 embeddingFailFast 报错或退回词面)
rerankLexicaltrue词面重排的独立开关;false 等价于 rerank:'off'
episodeEnabledtrueingest 时幂等 pass 生成 episode 区间
episodeClosureMinutes10闭合阈值:源文件 mtime 距今 ≥ N 分钟才算闭合
episodeMaxChars4000单段字符上限;超了在 assistant 消息边界再切
embeddingEnabledfalse向量层开关(默认关:要 90MB 模型 + 可选依赖)
embeddingModel'bge-small-zh-v1.5'模型 id(宿主按 embed-models.MODELS 白名单校验)
embeddingModelDir''模型根目录;空 = $DSH_HOME/mem/models
embeddingFailFasttrue模型不可用时显式失败(false = 静默退回词面重排,只 warn 一次)

默认值只有一份:index.mjs 的 DEFAULTS(cordis.patch.yml 与它逐键相等,test/routes.test.mjs ⑥ 看着)。 lib/settings-schema.js 只留值域(BOUNDS)与消毒,不再持有默认值。