dsh-peoplememory
给 DeepSeek Harness 加上长期记忆和用户画像:记住你是谁、你在做什么项目、你偏好什么,并且跨会话、跨项目可用。
Long-term memory and user profile for DeepSeek Harness. Status: scaffold (v0.1.0) — the plugin loads and validates its configuration, but it does not store or recall anything yet.
要解决什么
DSH 的上下文是窗口,不是记忆:
- 会话即遗忘。 上个会话里说过的技术栈、命名习惯、正在推进的计划,下个会话全部丢失,只能靠人再讲一遍。
- 画像靠猜。 模型对“这个用户是谁”的推断只来自当前几轮对话,容易前后矛盾,也不可纠正。
- 跨项目断裂。 即使在同一个项目里积累,换个工作目录又得从零开始。
这个插件想做的事很具体:维护一份可读、可改、可删的用户记忆文件,在每一轮对话里用很小的预算把它带进提示词。
设计要点
完整设计见 docs/DESIGN.md,这里只列四条原则:
- 三层记录,各自不同的生命周期——画像(稳定偏好,长期)、事实(项目/人物/环境,中期)、情节(某次对话的细节,短期、会衰减)。
- 写入是合并,不是覆盖。 新信息与旧记录冲突时保留两版并标记置信度,而不是让最后写入者赢;用户说“不对”要能把一条记录降权。
- 读取受预算约束。 注入提示词的记忆块有硬上限(默认 1200 tokens),检索按分数排序、按预算裁剪,宁缺毋滥。
- 记忆属于用户。 纯本地文件、可导出、可逐条遗忘;不做训练、不外发。
目录结构
lib/index.js 插件入口(cordis 契约:name / inject / apply)
cordis.patch.yml bundle 补丁层:把插件这一行装进 profile 的插件树
docs/DESIGN.md 数据模型、读写路径、隐私与开放问题
安装(本地 profile)
这个插件按 DSH 的 bundle 方式装载,不需要单独起服务:
把本仓库放到
%DSH_HOME%\profiles\<profile>\plugins\dsh-peoplememory(目录名随意)。在该 profile 的
package.json里加依赖和 bundle 条目:"dependencies": { "dsh-peoplememory": "file:./plugins/dsh-peoplememory" }, "dsh": { "profile": { "bundles": [ /* ... */ "dsh-peoplememory" ] } }安装依赖后重载 DSH。配置在
cordis.patch.yml里(storeDir、promptBudgetTokens),关掉插件即撤回它加的所有东西。
尚未发布到 npm;发布时去掉
package.json里的private: true,并按目标 DSH 版本补上engines.dsh。
路线图
- 仓库骨架、配置校验、插件装载
- 存储层:记录结构与追加写入(先做这个,后两层都依赖它)
- 抽取层:从完成的对话里生成候选记录、去重、冲突合并
- 组装层:打分检索 + token 预算裁剪 + 注入系统提示
- 工具面:
remember/recall/forget - 记忆面板:在 Web 端直接查看与编辑画像
- 评测:用固定脚本测量跨会话召回准确率与提示词增量
No comments yet. Be the first to write one.