DSH Plugin MarketA community catalog for DeepSeek Harness plugins

dsh-familiar-memory

Verified Memory & context ★ 101 0.2.0

本地记忆层:按预算注入、情绪优先、可审计、不联网。给 DeepSeek Harness 用。

What it is

本地记忆层:按预算注入、情绪优先、可审计、不联网。给 DeepSeek Harness 用。

How to install

Run this in the DSH web profile, then refresh the page.

$ dsh plugin --profile web add 'git+https://github.com/Elio896/dsh-familiar-memory.git#583a7eef394b5704209773b44ee29ab93dae2c97'

DSH versions accepted

>=0.2.0

Author and traction

Elio896 · ★ 101 · Updated 2026-10-29

About this plugin

dsh-neuron-memory

本地记忆抽屉:字面命中 + 情绪桶 + 同日上下文 + 指数衰减。

给 DeepSeek Harness(cordis 插件)用。数据是一个本地 SQLite 文件,不联网、不上传、你能打开、能改、能删。

图记忆(激活扩散)已否决——实测 1 跳噪音 33% → 64%,增量 0%。见 FINDINGS.md。 Status:v0.2.0

这一版的定位是「修好 bug、说真话、装得上」,外加一件原计划留到 0.3.0 的事:换会话之后,她还是同一个人。 修了三个 bug:grams() 用 \W 会吞掉所有中文(「共享词建边」从上线起就没工作过);/mode 空 body 会静默切模式;HTTP 写操作原本是 GET(任意网页能触发) 承认两件事:排序以前其实是按重要度、不是按相关度(现在 rel 进了 score);文档里三条功能之前并不存在 新增:开场认人 neuron_opening、收尾交接 neuron_handoff、工作状态 decided_at / supersedes、自动录入 图仍然是关的:hops=0,扩散实测纯亏损 breaking changes

1. 权重从线性衰减改成指数衰减(base × 0.5^(天/半衰期))——所有分数尺度变了,sinkBelow 从 1.0 调到 0.5。 2. 默认行为变了:排序 = 相关度 × 权重(warmBoost 再加一点温度);零命中默认返回空(noFallback: true),不再拿 top() 充数。 3. HTTP 写操作从 GET 改成 POST(/tidy /prune /replay /handoff)——旧面板会收到 405,需同步升级 client.js。 4. 工具默认只暴露 7 个:sync / raw / consume / replay / prune 收进 config.advanced: true 后面。 迁移

首次启动会把旧库自动复制成 neuron.db.bak-v ,然后按 user_version 逐级迁移(当前 schema v4)。迁移幂等,连开两次不会重复改。 它现在真的在做什么

坦白说:bm25 种子(IDF 加权)+ 情绪桶 + 同日窗口 + 指数衰减。没有向量,也没有图。 种子:FTS5 倒排(unicode61 + 预切 2-gram)捞候选;rel = Σidf(命中)/Σidf(全部),整词命中直接视为 1;rel ≥ minRel(0.30) 才算数 排序:score = rel × 权重/3 × 温度系数;权重 = 基础分 × 0.5^(天/半衰期),恒正、永不归零 温度桶:感受 / 原话 / 偏好 / 回味 3.0,教训 2.5,事件 1.6,档案 1.3;聊天时感受先亮 同日上下文:想起一件事,顺手带出那天前后各一条(只给最前两条) 复习只回血一半:被想起来时把「已流逝天数」折半,不是重置到现在(防口头禅记忆) 沉底不删:低于 0.5 沉进归档区,不参与普通召回;你精确问起(命中 ≥2 词)仍会被翻出来 场景隔离:scope 默认 private;work 不衰减、不沉底;群聊召回不到私聊 换会话,她还是同一个人

两个工具,把「会话」这个概念挡在插件外面——插件只负责存和交:

neuron_opening() 的输出长这样:

工作会话传 includeWork: true,会追加一段「项目状态(按拍板时间)」;两个块互斥,不叠加。 工作状态:要「最新」,不要「最像」

向量检索分不清「哪个方案是现在的」。所以工作记忆用两列解决: decided_at:什么时候拍板的(scope=work 时默认写入时间) supersedes:覆盖了哪条旧决定;跨 scope 或 id 不存在时只警告,不静默沉 装

Similar plugins