Phant0Meow/dsh-meow-memory
meow-memory
meow-memory is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add github:Phant0Meow/dsh-meow-memoryRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-meow-memory)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Phant0Meow/dsh-meow-memory, cleaned of badges and images.
meow-memory 🐱📝
| 中文 | English | MIT License |
|---|
为 DeepSeek Harness(DSH)打造的跨会话记忆插件。
核心理念:每个工作区维护一份结构化记忆数据库(.dsh-meow/memory.db,基于 node:sqlite)。
静态记忆手册(数据总览 + 工具用法 + 写作准则)以固定 section 的形式放在 system prompt 里——
文本恒定,因此不会破坏 LLM provider 的 KV/上下文缓存。动态内容(soul/user 全量、设计原则、
记忆导引)作为第一条用户消息的前缀注入,且首轮只注入长期记忆、不做关键词命中;
从第二轮起每条用户消息做关键词命中(top-2)。模型按需用 memory_search /
memory_project 深入检索。每个窗口由自己的主 agent 在空闲时("dream")整理记忆
(本窗口建立 + 提取过的记忆),以窗口最后一次对话时间戳冻结其知识。
✨ 功能特性
- 七层记忆(
soul= AI 自身 /user= 用户基本信息与偏好 /project= 项目信息, 含subcategory(overview/structure/decisions/quotes/ops/todo)/fact= 原子事实 /lesson= 教训与纠正 /topic= 进行中的讨论话题,带目标句 /rules= 设计原则与行为准则)。 每层一张 SQLite 表,UUID 带时间前缀,id 顺序即创建顺序。 - 首轮注入(长期记忆块):第一条用户消息前注入固定格式
===== 长期记忆 =====→【关于你】(soul 全量)→【关于user】(user 全量)→【设计原则】(全局 rules 且 importance≥2,少而精的命令式准则)→【记忆导引】(用法说明 + 「用户的所有 project」动态列表,供memory_project选用)→===== 长期记忆结束 =====+本轮用户prompt:。首轮不跑关键词命中(命中从第二轮起)。 即使首条用户消息与插件通知消息同批到达(如 approval policy 变更通知),快照仍注入到 真实用户消息上、命中绝不提前。 - 每消息关键词命中:从第二条用户消息起,每条真实用户消息都检索 fact/lesson/rules/topic(范围 = 全局 + 当前 project 锚定),top-2 命中以 「可能相关的记忆,仅供参考:」前缀注入。命中基于条目关键词(LLM 提取或自动 bigram)而非全文——全文匹配噪音大。打分 = 交集分 × idf × 覆盖率 × 艾宾浩斯衰减 (按记忆时间戳)× importance 权重 × title 加成。
- 当前 project 锚定:
memory_remember/search/update/project带 project 参数即锚定 该会话的当前项目;未锚定时命中只搜全局(用户闲聊不误伤)。 - 缓存友好设计:静态
meow-memory:guidesection(order 130,紧随各tool:*说明之后) 在 system prompt 中注册一次——文本恒定,KV 缓存友好。已见记忆(injected+searched) 按会话记录(.dsh-meow/sessions/<id>.json):注入绝不重复;memory_search前 5 条按相关度 无脑取(不排除已见/本 session 建立的记忆),其余从排名后续绕开已见补齐;收到会话压缩 信号(compaction/*)时释放已见记录,允许压缩后被再次命中提取。 - 工具集:
memory_remember(写入,必填 content/project/keywords/importance 且缺失报错引导重填, 自动去重合并,返回读回确认:关键词/项目归属)/memory_search(BM25 × 近期权重,支持 level/project/status/days 过滤,默认 top10 = 前 5 条 最相关不排除已见 + 后 5 条绕开已见补齐,按记忆时间戳排序;返回检索元数据视图: 归属 + 完整 id + 相对时间 + 关键词列表,不含原文)/memory_project(项目全景注入段落:project 参数必填——你要看哪个项目的信息?按子标签分组、未过时条目全给、每条带完整 id 与 最后更新时间戳、todo 输出「已完成:」最近 5 条 +「To do list:」,末尾附记忆库与 会话历史定位说明)/memory_find_similar(查重与冲突检测)/memory_read/memory_update(含 status active/archived/stale、importance、goal、keywords 手动修正)/memory_dream(手动触发)。 - 记忆时间戳(
updated_at= 最后更新时间):dream 封存或memory_update刷新时更新。 展示的时间戳一律是updated_at;search(工作视图)带相对时间戳,命中注入/memory_project (原文视图)带相对 + 绝对时间戳(如「2026-08-15 10:58 [2 天前]」)。 - project 归属:全局适用的信息 project 填
"全局"(与留空=未标记区分);同时适用于 多个项目时用英文逗号分隔(如"dsh, femwa")——检索/命中按"包含当前项目名 或 全局"判定。 - 按窗口 dream:窗口空闲 ≥
idleMinutes(默认 180 分钟 = 3 小时)即进入允许 触发状态(替代原夜间窗口),每个最后发言晚于上次 dream 的窗口由自己的主 agent 整理——分轮处理(第 1 轮原子记忆 project/fact/lesson/rules/soul/user,第 2 轮 topic 记忆,第 3 轮项目总结——本窗口涉及具体项目时追加:调 memory_project 复查并精简成 新的项目长期记忆,被取代的旧条目归档),project 小标题分段,每条记忆附关键词行 (AI 核查/重写关键词用),范围=本窗口 建立 + 提取过的记忆,使用其完整会话上下文。峰时抑制(按timeZone计算,默认 北京时间):suppressWindows(默认 09:00–12:00、14:00–18:00,API 峰谷电价峰时) 及各自开始前suppressLeadMinutes(默认 15)分钟内不触发,峰时结束后下一个检查 周期自动触发;进行中的 dream 不打断。无 live agent 且超过 24h 的旧窗口、以及已归档 的会话,均不处理。 - 反思:单次任务内连续 ≥7 个工具 step 后,插件询问模型自上次整理以来是否有值得记忆的内容。
最后工具是
memory_*视为已主动记忆、不重复反思;被取消的轮次绝不触发。 - 注入折叠 UI(client 端):首轮长期记忆 / 每消息关键词命中的注入文本在前端 折叠成「▸ 已注入记忆(长期记忆/关键词命中)」横条(与用户气泡同宽),点开可查看 注入全文;用户 prompt 以气泡形式直接显示,消息流干净不被注入刷屏。纯文本消息才折叠 (带附
…

