Back to home@fatatalia

dsh-dreaming

dsh 梦境记忆整合插件:凌晨随机窗口把记忆梦境化(裸上下文 narrative 纯梦写作)+ 信号驱动洞察晋升 + MEMORY.md 预算管理,随 dsh web 启停

Stars
1
Language
JavaScript
Created
Aug 18, 2026
Updated
Aug 25, 2026
GitHub repo

Introduction

dsh-dreaming — 梦境记忆整合插件(v2)

每天凌晨随机时间(默认 02:00-04:30 窗口)把当天的记忆"梦境化":引擎预取 Hindsight 记忆碎片,交给裸上下文 narrative 会话写纯梦日记;高价值洞察由信号驱动规则判定(无 LLM、无关键词白名单)并晋升回 MEMORY.md;梦境与晋升记录存 SQLite,web 端"梦境" Tab 展示。随 dsh web 启停。

v2 核心哲学:LLM 只写梦,判定交给行为学信号。(对齐 OpenClaw Dreaming)

工作原理(v2 闭环)

凌晨随机时刻触发(可手动"立即做梦")
  → 引擎多查询 recall(Hindsight HTTP 127.0.0.1:8888,4 个不同角度查询)
  → 去重 + 碎片化(每条 ≤280 字符,编号+来源)→ 注入 narrative 会话
  → 创建 dream-narrative 专属 preset 会话(裸上下文:不注入 AGENTS.md、无工具)
       persona = 梦境 prompt(complete:true),user message 只含碎片
  → 生成纯梦日记(第一人称 150-300 字,禁"我在做梦"/禁 AI 自指/纯散文)
  → 信号驱动晋升(纯规则):
       · uniqueQueries(不同查询命中数)≥2 硬门槛
       · 量化评分 confidence = 得分×0.45 + 对数命中×0.25 + 实体丰富度×0.1
       · 候选 ≥0.45;相似度 0.85 去重;promotions 表查重防重复;上限 5 条/夜
  → 梦境日记 → SQLite dreams 表
  → 洞察 → SQLite promotions 表(含 evidence/rule 证据链)+ MEMORY.md 追加
  → MEMORY.md 预算管理:超 25KB 只删「梦境沉淀」最老标记段,手写内容永不触碰
  → 会话归档,重排下一次

目录

dsh-dreaming/
├── index.js              # host 插件:connection.rpc 数据通道 + 引擎装配
├── client.js             # 浏览器 bundle:conversation.view "梦境" Tab
├── lib/
│   ├── dream-engine.mjs  # v2:多查询 recall + narrative 会话 + 信号晋升 + 预算
│   └── store.mjs         # SQLite:dreams + promotions + recall_stats 表
├── test/v2-unit.test.mjs # 单元测试(node test/v2-unit.test.mjs,14 项)
├── docs/
│   ├── v2-plan.md        # v2 完整方案(设计依据)
│   └── prompt-v2-draft.md
├── cordis.patch.yml
└── package.json

数据

  • SQLite~/.dsh/dreaming.db
    • dreams(梦境日记正文)
    • promotions(晋升洞察 + evidence 来源/命中数/实体 + rule 触发信号名)
    • recall_stats(跨天"被想起"信号:命中次数 / 不同查询数 / 首见·最近命中日期 / 是否已晋升)
  • MEMORY.md:只追加「## YYYY-MM-DD — 梦境沉淀(dsh-dreaming)」段;预算超限自动回收最老标记段

专属 agent preset

~/.dsh/.agent-presets/dream-narrative/(dsh agent-presets 用户根目录):

  • persona = 梦境 prompt(complete: true + includeRuntimeContext: false
  • 不挂 agent-instructions(不注入 AGENTS.md 人格/工作区指令)
  • 不含任何工具(素材引擎注入,写梦不碰 exec/fs/网络)

效果 = OpenClaw narrative 的 lightContext: true(bootstrap 引导文件全清空)。

web Tab

会话页 conversation.view 槽位注册"梦境"Tab(同 dsh-automation 模式):

  • 晋升记录(日期 + 内容 + 证据链)+ 梦境日记列表(日期 + 正文)
  • "立即做梦"按钮、刷新
  • 数据经 connection.rpc 通道 /dsh-dreaming(listDreams / listPromotions / getDream / runNow / status)

配置(代码内常量,后续可参数化)

  • 随机窗口:DEFAULT_WINDOW = { start: "02:00", end: "04:30" }(dream-engine.mjs)
  • MEMORY.md 路径:~/dsh/mayacode/MEMORY.md
  • 晋升阈值:PROMOTION_MIN_RECALL_COUNT=2 / CANDIDATE_CONFIDENCE=0.45 / PROMOTION_MAX_PER_NIGHT=5 / DEDUPE_THRESHOLD=0.85
  • MEMORY.md 预算:DEFAULT_MEMORY_BUDGET_BYTES = 25 * 1024

验证

node test/v2-unit.test.mjs   # 14 项:store 迁移 / 碎片累计 / 信号晋升 / 预算回收

手动触发一次梦境:POST 到 http://127.0.0.1:3080/dsh-dreaming/runNow,信封 {"type":"client-request","rpcId":"x","method":"runNow","payload":{}}。检查 /var/log/dsh-web.log[dr] 日志与 ~/.dsh/dreaming.db

开发要点

  • 新插件项目必须建依赖软链(node_modules/@deepseek-ai → dsh 全局依赖树),否则 import 报 ERR_MODULE_NOT_FOUND
  • connection.rpc.handle 必须传第三个参数 { authority }(register 读 options.authority,缺省会崩)
  • 改代码后重启 web 生效(HMR 已禁用):launchctl kickstart -k system/com.dsh.web