分层记住对话细节与关系进展,随时检索调用
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ly2601620664/dsh-pet-memory该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · chat
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 15 处,展示前 13 条)
- 读取本地文件index.js:46
if (config.migrateFrom && store.facts().length === 0 && existsSync(config.migrateFrom)) { - 读取本地文件index.js:47
store.importMarkdown(readFileSync(config.migrateFrom, 'utf8')); - 写入本地文件lib/store.mjs:47
mkdirSync(dir, { recursive: true }); - 读取本地文件lib/store.mjs:62
if (!existsSync(path)) return []; - 读取本地文件lib/store.mjs:64
try { raw = readFileSync(path, 'utf8'); } catch { return []; } - 写入本地文件lib/store.mjs:76
mkdirSync(this.dir, { recursive: true }); - 写入本地文件lib/store.mjs:77
appendFileSync(path, JSON.stringify(obj) + '\n', 'utf8'); - 读取本地文件lib/store.mjs:211
return existsSync(this.personaPath) ? readFileSync(this.personaPath, 'utf8') : ''; - 读取本地文件lib/store.mjs:211
return existsSync(this.personaPath) ? readFileSync(this.personaPath, 'utf8') : ''; - 写入本地文件lib/store.mjs:215
writeFileSync(this.personaPath, String(text || ''), 'utf8'); - 读取本地文件lib/store.mjs:241
if (existsSync(this.scenesPath)) { - 读取本地文件lib/store.mjs:243
const legacy = JSON.parse(readFileSync(this.scenesPath, 'utf8')); - 写入本地文件lib/store.mjs:280
writeFileSync(this.statePath, JSON.stringify(next, null, 2), 'utf8');
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/dsh-system-prompt给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
陪伴型长期记忆 DSH 插件:分层记忆(对话→事实→场景→人格)、规则抽取、时间衰减检索,全本地文件、append-only 不丢数据。
README
由 DeepSeek 最新模型翻译生成dsh-pet-memory
陪伴型长期记忆插件:分层记忆(对话 → 事实 → 场景 → 人格)、规则抽取、时间衰减检索。 全部存本地文件,不调用额外模型,不产生额外费用;append-only 存储,多进程写入不丢数据。
dsh plugin --profile <name> add github:ly2601620664/dsh-pet-memory
Compatible with: dsh 0.2.x(engines.dsh: >=0.2.1-rc.2 <0.3.0-0)
它做什么
| 层 | 内容 | 存储 |
| L3 人格/关系档案 | "我叫他笨蛋"、"关系阶段 3" | persona.md |
| L2 场景 | 一段对话的摘要 | scenes.jsonl(只追加) |
| L1 事实 | "他喜欢喝冰美式"、"约定:周末去爬山" | facts.jsonl(只追加) |
| 命中统计 | 每条事实被检索到几次 | hits.jsonl(只追加) |
三个注入点:
1. systemPrompt.section — 每轮把「人格 + 高价值记忆 + 相关场景」放进系统提示词
2. 工具 — memory_search / memory_add / memory_profile
3. session/event — 回合结束时用规则抽取新事实
展开完整文档(README 剩余 1 节)
dsh-pet-memory
陪伴型长期记忆插件:分层记忆(对话 → 事实 → 场景 → 人格)、规则抽取、时间衰减检索。 全部存本地文件,不调用额外模型,不产生额外费用;append-only 存储,多进程写入不丢数据。
dsh plugin --profile <name> add github:ly2601620664/dsh-pet-memory
Compatible with: dsh 0.2.x(engines.dsh: >=0.2.1-rc.2 <0.3.0-0)
它做什么
| 层 | 内容 | 存储 |
| L3 人格/关系档案 | "我叫他笨蛋"、"关系阶段 3" | persona.md |
| L2 场景 | 一段对话的摘要 | scenes.jsonl(只追加) |
| L1 事实 | "他喜欢喝冰美式"、"约定:周末去爬山" | facts.jsonl(只追加) |
| 命中统计 | 每条事实被检索到几次 | hits.jsonl(只追加) |
三个注入点:
1. systemPrompt.section — 每轮把「人格 + 高价值记忆 + 相关场景」放进系统提示词
2. 工具 — memory_search / memory_add / memory_profile
3. session/event — 回合结束时用规则抽取新事实
数据目录
默认 $DSH_HOME/dsh-pet-memory(通常 ~/.dsh/dsh-pet-memory),可用 config.dir 或 DSH_PET_MEMORY_DIR 覆盖。
存储设计(为什么全是 append-only)
facts.jsonl、hits.jsonl、scenes.jsonl 只追加,永不整文件重写。
原因:桌面端和 web 端是两个 DSH 进程,共用同一个数据目录。任何"读全量 → 改内存 → 整文件替换"的写入,都会用自己那份旧快照抹掉另一个进程刚追加的行。早期版本用 tmp + rename 做命中统计,实测会让另一个进程写入的 40 条记忆全部消失。
现在的做法:
- 每条事实/命中/场景都追加一行
- 读取时折叠:同 kind+text 合并为一条,salience 取最大、ts 取最早、hits 累加
- 命中统计单独文件,touch() 完全不碰 facts.jsonl 正文
修复过的严重问题
| 问题 | 后果 | 修法 |
| touch() 用 tmp+rename 全量重写 | 多进程并发时丢数据(实测 40 条全灭) | 拆出 hits.jsonl,append-only |
| section 未设 interpolate: false | 记忆里出现 {{ 会让整轮 prompt 渲染抛错 | 设 interpolate: false + 渲染前 neutralize() |
| textOf 用空格拼接 block | 行首锚定的清洗规则全部失效(实测 83% 场景被污染) | 改用 \n 拼接 |
| textOf 不区分 block 类型 | 助手内心推理被当成"他说的话"写进记忆 | 只取 type === 'text' |
| hits.includes(f.text) 字符串子串匹配 | limit=1 误伤多条 | 改用对象数组按 id 匹配 |
| addScene 无去重 | fork/compaction 重放导致重复场景 | 按 summary 去重 |
| catch {} 静默 | 落盘失败零日志,"以为在记其实没记" | 统一 warn 日志 |
| 无注入防护 | 粘贴的第三方文本可把指令写进长期记忆 | isPromptInjection() 拦截 |
开发
node test/selftest.mjs # 抽取/存储/检索基础行为
node test/plugin.test.mjs # 用假 ctx 跑一遍插件生命周期
node test/regression.test.mjs # 上面每个已修缺陷的回归用例
配置
dir: null # 数据目录,默认 $DSH_HOME/dsh-pet-memory maxItems: 6 # 系统提示词里放几条事实 includeScenes: true # 是否把相关场景也放进提示词 verbose: false # 打印每轮抽取条数 migrateFrom: null # 一次性导入旧 memory.md 的路径
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ly2601620664/dsh-pet-memory
分层记住对话细节与关系进展,随时检索调用
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目