Phant0Meow/dsh-meow-memory ↗★ 127
meow-memory
Cross-session project memory for DeepSeek Harness: seven-layer SQLite memory, first-turn snapshot injection, per-message keyword hits, memory_remember/search/project tools, automatic reflection with reflection-fold UI, and idle-triggered dream consolidation (peak-hour suppressed). 适合需要长效项目记忆、自动反思和闲时记忆整理的复杂开发任务。
Other repositories with this package name
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Phant0Meow/dsh-meow-memoryREADME
Read the full README ↗⚙️ 配置
所有字段均可选(profile patch 或 cordis.patch.yml)。也可以不手编文件:DSH 设置页里有本插件的「喵记忆」标签页(与「通用」「模型」平级),下面这些项全部图形化可改、字段级保存、可单项恢复默认(恢复默认 = 回到插件出厂默认,不受 patch 基线影响);保存后热重载/重启 meow-memory 插件生效。
- id: meow-memory
name: 'meow-memory'
config:
enabled: true # 总开关
projectDir: '.dsh-meow' # 记忆目录(相对工作区)
promptLang: 'zh' # ⚠️ 首次使用建议显式配置(见下方说明)
hitTopK: 2 # 每条用户消息关键词命中的条目数上限(fact/lesson/rules/topic)
reflect: true # 连续 ≥reflectTurns 轮工具调用后自动反思
reflectTurns: 7 # 触发反思所需的连续工具轮数
dream:
enabled: true
idleMinutes: 180 # 窗口空闲 ≥180 分钟(3 小时)允许 dream
suppressWindows: # 峰时抑制时段(按下方 timeZone 计算,"HH:MM" 起止)
- start: '09:00' # API 峰谷电价峰时
end: '12:00'
- start: '14:00'
end: '18:00'
suppressLeadMinutes: 15 # 每个峰时开始前 15 分钟也不触发
checkMinutes: 15
timeZone: 'Asia/Shanghai' # 用户机器时钟为美区时间;抑制时段必须
# 按此固定时区计算
rulesReviewDays: 2 # updated_at 距今超该天数的稳定准则不进 dream 第 1 轮
# 清单(防反复整理不变化的条目);0 = 不过滤
delegate:
model: '' # 整理任务换模型(可选):填写后反思轮与梦境轮自动换用
# 该模型执行,轮次结束自动换回主模型;'provider/model'
# 指定 provider+model,'model' 只换模型(provider 继承
# 主会话);留空 = 全程主模型
整理任务换模型(可选)
反思轮和 dream 各组始终在主窗口执行(steer)——prompt、模型回应、工具调用落在主会话 log(折叠 UI 负责视觉收纳)。独立 fork 子代理执行方式已于 v0.24 移除,不再提供"独立执行"开关。
如果想让记忆整理换个(更便宜的)模型跑:配置 delegate.model 后,反思/梦境轮发起的每个 LLM 请求会经 dsh 的 agent/request waterfall 自动覆盖 provider/model,轮次结束自动换回主模型——正常对话、工具轮完全不受影响。实现是无状态的:按"当前 turn 是否携带反思/梦境指令标记"逐请求判定,用户中止、崩溃、热重载都不会留下"卡在换模型"的脏状态。
界面语言:跟随 DSH 语言设置(v0.27.0)
插件界面文案(折叠横条、打点气泡、会话菜单项、设置页)走独立的 UI 文案层,跟随 DSH 的「设置 → 通用 → 语言」:内置 中文 / English / Português (Brasil) 三套字典, 切换即时生效(设置页标签按官方契约重新注册,纯 DOM 节点经重放注册表刷新)。
它与 promptLang(模型文案)是两层,互不影响:界面可以跟随外壳语言,而注入给模型的
prompt 仍按 promptLang 走(promptLang 只选 src/prompts/ 里的模型文案包,目前内置
zh / en)。老宿主(无 locale 服务)自动降级为浏览器语言 + 内置字典,最终落 zh
——中文用户浏览器也是中文时界面不变,浏览器要英文的用户则拿到英文(这正是本次改动的目的)。
自定义 / 社区界面语言:加一个字典文件 + 在 SUPPORTED_UI_LOCALES 加一行(不改 UI 代码),
详见 src/i18n/README.md。
promptLang:prompt 与检索语言(重要)
promptLang 决定两件事:①注入/反思/dream 文案的语言;②工具描述的语言。它同时影响模型写记忆条目用的语言——关键词按条目语言提取,以你说话的语言为准。
因此首次使用时请显式配置它:promptLang: 'zh'(默认)、'en'(内置英文语言包)或 'pt-br'(内置巴西葡语语言包)。配置值就是子目录名,逐字匹配:填一个 src/prompts/ 里不存在的名字(例如 pt)不会报错,而是静默落回中文包。
检索侧说明:BM25 分词自 v0.20.0 起语言无关(类别路由),条目与查询语言不一致不再"杀检索";en 模式额外启用英语归一化(停用词过滤 + Porter 词干还原),屈折变化不影响命中(tokenizers 能命中存为 tokenizer 的条目)。
自定义 / 社区语言包:prompt 文案是数据文件(src/prompts/),一门语言一个子目录,改文件即生效、无需改代码——详见 src/prompts/README.md(含贡献指南与 npm run check-lang 自查)。实例级自定义:/.dsh-meow/prompts// 下放同名槽位文件即可覆盖(可只覆盖部分)。