drscrewdriver/dsh-prime-memory ↗★ 4
dsh-prime-memory
L0~L3分层蒸馏记忆管理插件 适合需要自动捕获对话、提取原子记忆并自动召回注入模型步骤的用户。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:drscrewdriver/dsh-prime-memory说明文档
阅读完整 README ↗配置
覆盖配置写在 profile 自己的 cordis.patch.yml,用顶层裸 patch 条目(直接 id:,
不要包在 insert: 里——insert 与 bundle 层同 id 追加会导致 duplicate loader entry id
启动失败):
- id: dsh-memory
name: dsh-prime-memory
config: # 键按行整体替换(不深合并),按需写全要保留的键
family: auto # 新会话默认档:auto | chat | work
llm: # 蒸馏模型静态路由(双字段齐 = 部署 pin,优先于设置页路由链;
provider: '' # 留空则跟随设置页路由链主路由或当前默认模型)
model: ''
| 字段 | 默认 | 说明 |
|---|---|---|
family | auto | 新会话默认记忆档位:auto(双族自动)| chat(个人)| work(工作);会话内可用输入栏控件临时切换 |
dataDir | $DSH_HOME/memory | 数据目录 |
capture.enabled | true | L0 捕获 |
capture.stripCodeBlocks | true | 助手消息剥离代码块 |
capture.maxMessageChars | 4000 | 单条消息最大字符数 |
capture.redactSecrets | true | 载荷脱敏:捕获写入即把 8 类密钥(PEM/Bearer/JWT/Cookie/厂商 API key/邮箱/长号/高熵 ID)替换为 [REDACTED:] 占位符,覆盖 L0、蒸馏输入与手动写入;false 回明文(开启后 L0 原文不再可逆) |
trace.enabled | true | 结构化追踪:召回/蒸馏事件按天 JSONL(/trace/),设置页"日志"Tab 可切换查看 |
trace.retentionDays | 14 | 追踪事件保留天数(0 永久) |
trace.captureContent | false | true 才存召回 query 原文(默认只存长度 + sha256) |
extract.enabled | true | L1 抽取 |
extract.minMessages | 6 | 稳态触发阈值:单会话攒够 N 条新消息跑一次 L1 抽取。起步阶段生效阈值从 1 翻倍爬坡到此值(首轮即出记忆,随后自动攒批省调用) |
extract.idleSeconds | 300 | 闲置兜底:会话静默 N 秒后把未蒸馏切片落袋(接住"没攒够阈值用户就离开");0 关闭 |
extract.backgroundMessages | 10 | 抽取时附带的背景消息条数(按会话从 L0 现查,会话间互不污染) |
extract.candidatePool | 5 | 去重候选池大小 |
l2.enabled | true | L2 场景整合 |
l2.minNewMemories | 5 | 距上次 L2 整合的新记忆阈值 |
l2.maxScenes | 12 | 场景块数量上限 |
l2.sceneContextLimit | 3 | L2 prompt 附带的相似场景全文上限 |
l3.enabled | true | L3 画像蒸馏 |
l3.interval | 20 | L3 蒸馏间隔(新记忆条数) |
recall.enabled | true | 自动召回 |
recall.maxResults | 5 | 每条新用户消息前注入的 L1 条数上限 |
recall.maxCharsPerMemory | 500 | 单条注入记忆的字符上限(超限截断并提示用记忆工具查全文);0 不限 |
recall.maxTotalRecallChars | 2000 | 整轮注入总字符上限(超限按相关性丢尾部);0 不限 |
recall.timeoutMs | 5000 | 召回总预算(ms):超时跳过本轮注入、不阻塞对话;0 不限时 |
recall.includePersona | true | 系统提示注入画像上下文(``,稳定区) |
recall.includeSceneNav | true | 系统提示注入场景导航(``,稳定区) |
recall.strategy | hybrid | 检索策略:keyword / embedding / hybrid |
recall.scoreThreshold | 0.3 | 召回分数阈值(低于不注入;仅 keyword/embedding 策略生效,hybrid 融合前不过滤;工具路径不过滤) |
recall.decayHalfLifeDays | 30 | 召回时效衰减半衰期(天,0=关):排序按 相关度 × max(0.5, 0.5^(距更新天数/半衰期)) 软加权——相关度相近的候选间新鲜记忆优先(名额轮转),老记忆最多损失一半排序分(地板兜底,长期事实不沉底) |
embedding.enabled | false | 向量检索开关;关闭即纯 FTS 运行 |
embedding.baseUrl | 空 | OpenAI 兼容 /embeddings 地址(如 https://api.siliconflow.cn/v1) |
embedding.apiKey | 空 | API Key |
embedding.model | 空 | embedding 模型名 |
embedding.dimensions | 0 | 向量维度(启用时必填,须与模型输出一致) |
embedding.maxInputChars | 5000 | 单条文本最大字符数(超长截断) |
embedding.timeoutMs | 10000 | 单次 embedding 调用超时(ms) |
embedding.allowLocalModels | true | 允许本地嵌入档(部署上限:关闭后设置页不能下载模型、不能切本地档) |
embedding.mirror | https://hf-mirror.com | 本地模型下载镜像根地址(可改回官方 https://huggingface.co) |