@modusensus/dsh-mneme 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +415 -149
  2. package/{dsh-mneme/src → lib}/api.js +6 -3
  3. package/{dsh-mneme/lib → lib}/client.js +55 -8
  4. package/{dsh-mneme/src → lib}/config.js +5 -0
  5. package/{dsh-mneme/src → lib}/dream.js +7 -2
  6. package/{dsh-mneme/lib → lib}/index.js +7 -6
  7. package/{dsh-mneme/lib → lib}/inject.js +31 -2
  8. package/{dsh-mneme/src → lib}/service.js +37 -3
  9. package/{dsh-mneme/src → lib}/settings.js +15 -6
  10. package/{dsh-mneme/src → lib}/store.js +5 -0
  11. package/package.json +40 -18
  12. package/{dsh-mneme/lib → src}/api.js +6 -3
  13. package/{dsh-mneme/lib → src}/config.js +5 -0
  14. package/{dsh-mneme/lib → src}/dream.js +7 -2
  15. package/{dsh-mneme/src → src}/index.js +7 -6
  16. package/{dsh-mneme/src → src}/inject.js +31 -2
  17. package/{dsh-mneme/lib → src}/service.js +37 -3
  18. package/{dsh-mneme/lib → src}/settings.js +15 -6
  19. package/{dsh-mneme/lib → src}/store.js +5 -0
  20. package/{dsh-mneme/test → test}/api.test.js +10 -3
  21. package/{dsh-mneme/test → test}/client.test.js +37 -0
  22. package/{dsh-mneme/test → test}/config.test.js +7 -0
  23. package/{dsh-mneme/test → test}/inject.test.js +28 -0
  24. package/{dsh-mneme/test → test}/settings.test.js +6 -2
  25. package/{dsh-mneme/test → test}/tag.test.js +114 -0
  26. package/.github/workflows/test.yml +0 -32
  27. package/CHANGELOG.md +0 -89
  28. package/CONTRIBUTING.md +0 -245
  29. package/SECURITY.md +0 -544
  30. package/docs/devlog/2026-08-14-dsh-mneme-dev-log.md +0 -247
  31. package/docs/devlog/2026-08-15-dsh-mneme-audit-stress-dev-log.md +0 -145
  32. package/docs/devlog/2026-08-15-dsh-mneme-pipeline-dev-log.md +0 -56
  33. package/docs/devlog/2026-08-15-dsh-mneme-reflection-dev-log.md +0 -77
  34. package/docs/devlog/2026-08-15-dsh-mneme-review-fixes-dev-log.md +0 -64
  35. package/docs/devlog/2026-08-15-dsh-mneme-semantic-dev-log.md +0 -90
  36. package/dsh-mneme/CHANGELOG.md +0 -286
  37. package/dsh-mneme/LICENSE +0 -21
  38. package/dsh-mneme/README.md +0 -482
  39. package/dsh-mneme/docs/AGENT_MEMORY_RESEARCH.md +0 -183
  40. package/dsh-mneme/docs/ENTITIES.md +0 -245
  41. package/dsh-mneme/docs/LOCAL_MODEL.md +0 -141
  42. package/dsh-mneme/docs/MIGRATION.md +0 -127
  43. package/dsh-mneme/docs/SEMANTIC.md +0 -256
  44. package/dsh-mneme/docs/SLEEP.md +0 -163
  45. package/dsh-mneme/package-lock.json +0 -1936
  46. package/dsh-mneme/package.json +0 -80
  47. package/v0.7-plan-2026-08-21.md +0 -75
  48. package//346/250/252/345/271/205.png +0 -0
  49. /package/{dsh-mneme/cordis.patch.yml → cordis.patch.yml} +0 -0
  50. /package/{dsh-mneme/lib → lib}/commands.js +0 -0
  51. /package/{dsh-mneme/lib → lib}/dream/clustering.js +0 -0
  52. /package/{dsh-mneme/lib → lib}/dream/decisions.js +0 -0
  53. /package/{dsh-mneme/lib → lib}/dream/sleep.js +0 -0
  54. /package/{dsh-mneme/lib → lib}/dream/tag-extractor.js +0 -0
  55. /package/{dsh-mneme/lib → lib}/embedding.js +0 -0
  56. /package/{dsh-mneme/lib → lib}/entities/extractor.js +0 -0
  57. /package/{dsh-mneme/lib → lib}/heat.js +0 -0
  58. /package/{dsh-mneme/lib → lib}/hot-memory.js +0 -0
  59. /package/{dsh-mneme/lib → lib}/local-embedder.js +0 -0
  60. /package/{dsh-mneme/lib → lib}/mirror.js +0 -0
  61. /package/{dsh-mneme/lib → lib}/parser/tag.js +0 -0
  62. /package/{dsh-mneme/lib → lib}/parser/wiki-link.js +0 -0
  63. /package/{dsh-mneme/lib → lib}/quality-filter.js +0 -0
  64. /package/{dsh-mneme/lib → lib}/reranker.js +0 -0
  65. /package/{dsh-mneme/lib → lib}/search/adaptive.js +0 -0
  66. /package/{dsh-mneme/lib → lib}/search/bm25.js +0 -0
  67. /package/{dsh-mneme/lib → lib}/search/tag-boost.js +0 -0
  68. /package/{dsh-mneme/lib → lib}/summarize.js +0 -0
  69. /package/{dsh-mneme/lib → lib}/tools.js +0 -0
  70. /package/{dsh-mneme/lib → lib}/vector-index.js +0 -0
  71. /package/{dsh-mneme/scripts → scripts}/benchmark-embed.js +0 -0
  72. /package/{dsh-mneme/scripts → scripts}/benchmark-recall.js +0 -0
  73. /package/{dsh-mneme/scripts → scripts}/benchmark-rerank.js +0 -0
  74. /package/{dsh-mneme/scripts → scripts}/e2e-dsh.js +0 -0
  75. /package/{dsh-mneme/scripts → scripts}/stress-dsh.js +0 -0
  76. /package/{dsh-mneme/scripts → scripts}/sync-lib.js +0 -0
  77. /package/{dsh-mneme/src → src}/commands.js +0 -0
  78. /package/{dsh-mneme/src → src}/dream/clustering.js +0 -0
  79. /package/{dsh-mneme/src → src}/dream/decisions.js +0 -0
  80. /package/{dsh-mneme/src → src}/dream/sleep.js +0 -0
  81. /package/{dsh-mneme/src → src}/dream/tag-extractor.js +0 -0
  82. /package/{dsh-mneme/src → src}/embedding.js +0 -0
  83. /package/{dsh-mneme/src → src}/entities/extractor.js +0 -0
  84. /package/{dsh-mneme/src → src}/heat.js +0 -0
  85. /package/{dsh-mneme/src → src}/hot-memory.js +0 -0
  86. /package/{dsh-mneme/src → src}/local-embedder.js +0 -0
  87. /package/{dsh-mneme/src → src}/mirror.js +0 -0
  88. /package/{dsh-mneme/src → src}/parser/tag.js +0 -0
  89. /package/{dsh-mneme/src → src}/parser/wiki-link.js +0 -0
  90. /package/{dsh-mneme/src → src}/quality-filter.js +0 -0
  91. /package/{dsh-mneme/src → src}/reranker.js +0 -0
  92. /package/{dsh-mneme/src → src}/search/adaptive.js +0 -0
  93. /package/{dsh-mneme/src → src}/search/bm25.js +0 -0
  94. /package/{dsh-mneme/src → src}/search/tag-boost.js +0 -0
  95. /package/{dsh-mneme/src → src}/summarize.js +0 -0
  96. /package/{dsh-mneme/src → src}/tools.js +0 -0
  97. /package/{dsh-mneme/src → src}/vector-index.js +0 -0
  98. /package/{dsh-mneme/test → test}/audit.test.js +0 -0
  99. /package/{dsh-mneme/test → test}/benchmark.test.js +0 -0
  100. /package/{dsh-mneme/test → test}/boundary-v0625.test.js +0 -0
  101. /package/{dsh-mneme/test → test}/clustering.test.js +0 -0
  102. /package/{dsh-mneme/test → test}/commands.test.js +0 -0
  103. /package/{dsh-mneme/test → test}/conflict-freeze.test.js +0 -0
  104. /package/{dsh-mneme/test → test}/directory.test.js +0 -0
  105. /package/{dsh-mneme/test → test}/dream.test.js +0 -0
  106. /package/{dsh-mneme/test → test}/entities.test.js +0 -0
  107. /package/{dsh-mneme/test → test}/epistemic.test.js +0 -0
  108. /package/{dsh-mneme/test → test}/fnew-0112.test.js +0 -0
  109. /package/{dsh-mneme/test → test}/fnew-03.test.js +0 -0
  110. /package/{dsh-mneme/test → test}/graph-api.test.js +0 -0
  111. /package/{dsh-mneme/test → test}/heat.test.js +0 -0
  112. /package/{dsh-mneme/test → test}/helpers/dream-mock.js +0 -0
  113. /package/{dsh-mneme/test → test}/hot-memory.test.js +0 -0
  114. /package/{dsh-mneme/test → test}/llm-audit.test.js +0 -0
  115. /package/{dsh-mneme/test → test}/local-embedder.test.js +0 -0
  116. /package/{dsh-mneme/test → test}/mirror-dirty.test.js +0 -0
  117. /package/{dsh-mneme/test → test}/mirror-edit-digest.test.js +0 -0
  118. /package/{dsh-mneme/test → test}/mirror-generation.test.js +0 -0
  119. /package/{dsh-mneme/test → test}/mirror.test.js +0 -0
  120. /package/{dsh-mneme/test → test}/normalize-decisions.test.js +0 -0
  121. /package/{dsh-mneme/test → test}/peer-blockers.test.js +0 -0
  122. /package/{dsh-mneme/test → test}/policy-epoch.test.js +0 -0
  123. /package/{dsh-mneme/test → test}/provenance.test.js +0 -0
  124. /package/{dsh-mneme/test → test}/quality-filter.test.js +0 -0
  125. /package/{dsh-mneme/test → test}/reasoning-effort.test.js +0 -0
  126. /package/{dsh-mneme/test → test}/recall-evals.test.js +0 -0
  127. /package/{dsh-mneme/test → test}/recall-layer.test.js +0 -0
  128. /package/{dsh-mneme/test → test}/recall-runs.test.js +0 -0
  129. /package/{dsh-mneme/test → test}/receipt-chain.test.js +0 -0
  130. /package/{dsh-mneme/test → test}/reflection.test.js +0 -0
  131. /package/{dsh-mneme/test → test}/reranker.test.js +0 -0
  132. /package/{dsh-mneme/test → test}/search-fusion.test.js +0 -0
  133. /package/{dsh-mneme/test → test}/semantic.test.js +0 -0
  134. /package/{dsh-mneme/test → test}/service-search.test.js +0 -0
  135. /package/{dsh-mneme/test → test}/service.test.js +0 -0
  136. /package/{dsh-mneme/test → test}/sleep-heat.test.js +0 -0
  137. /package/{dsh-mneme/test → test}/sleep.test.js +0 -0
  138. /package/{dsh-mneme/test → test}/store.test.js +0 -0
  139. /package/{dsh-mneme/test → test}/stress.test.js +0 -0
  140. /package/{dsh-mneme/test → test}/summarize.test.js +0 -0
  141. /package/{dsh-mneme/test → test}/tag-boost.test.js +0 -0
  142. /package/{dsh-mneme/test → test}/tools.test.js +0 -0
  143. /package/{dsh-mneme/test → test}/updated-at-semantics.test.js +0 -0
  144. /package/{dsh-mneme/test → test}/vector-index.test.js +0 -0
  145. /package/{dsh-mneme/test → test}/wiki-link.test.js +0 -0
@@ -1,80 +0,0 @@
1
- {
2
- "name": "@modusensus/dsh-mneme",
3
- "description": "Cross-session memory plugin for DeepSeek Harness with autoDream consolidation: SQLite store, Markdown mirrors, 7 model tools, automatic injection, session summarization, user profile/rules, custom slash commands, vector (semantic) search, and a Web GUI panel",
4
- "version": "0.7.0",
5
- "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/modusensus/dsh-mneme.git"
9
- },
10
- "homepage": "https://github.com/modusensus/dsh-mneme#readme",
11
- "bugs": {
12
- "url": "https://github.com/modusensus/dsh-mneme/issues"
13
- },
14
- "type": "module",
15
- "main": "lib/index.js",
16
- "exports": {
17
- ".": {
18
- "default": "./lib/index.js"
19
- },
20
- "./client": {
21
- "default": "./lib/client.js"
22
- },
23
- "./package.json": "./package.json"
24
- },
25
- "files": [
26
- "lib",
27
- "src",
28
- "scripts",
29
- "test",
30
- "cordis.patch.yml"
31
- ],
32
- "dsh": {
33
- "client": {
34
- "inject": [
35
- "slots",
36
- "locale",
37
- "layout",
38
- "connection"
39
- ],
40
- "platform": "web"
41
- },
42
- "bundle": {
43
- "patch": "./cordis.patch.yml"
44
- }
45
- },
46
- "peerDependencies": {
47
- "@deepseek-ai/cordis": "^4.0.1",
48
- "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
49
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
50
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
51
- "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
52
- "@deepseek-ai/schemastery": "^3.18.1"
53
- },
54
- "devDependencies": {
55
- "@deepseek-ai/cordis": "^4.0.1",
56
- "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
57
- "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
58
- "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
59
- "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
60
- "@deepseek-ai/schemastery": "^3.18.1",
61
- "c8": "^12.0.0"
62
- },
63
- "scripts": {
64
- "sync": "node scripts/sync-lib.js",
65
- "prepack": "npm run sync",
66
- "test": "node --test test/*.test.js",
67
- "test:coverage": "c8 node --test test/*.test.js",
68
- "e2e": "node scripts/e2e-dsh.js",
69
- "stress": "node scripts/stress-dsh.js"
70
- },
71
- "dependencies": {
72
- "@huggingface/transformers": "^4.2.0"
73
- },
74
- "overrides": {
75
- "adm-zip": "0.6.0"
76
- },
77
- "c8": {
78
- "reporter": ["text", "lcov"]
79
- }
80
- }
@@ -1,75 +0,0 @@
1
- # dsh-mneme v0.7 版本策划书 + 分工安排(2026-08-21)
2
-
3
- > 状态:**待桉桉过目** → 通过后**晚上错峰执行**(兼顾火山 coding plan ~1200 次/5 小时额度,分阶段推进,不在同一时段烧光)。
4
- > 当前版本:v0.6.6(710 全绿)。本策划基于 README 路线图 + Discussion #21 + 社区 heptaspirit 调研(`docs/AGENT_MEMORY_RESEARCH.md`,已归档为 v0.7 参考输入)。
5
-
6
- ---
7
-
8
- ## 一、版本定位(调整:v0.7 不着急,先做 v0.6.7)
9
-
10
- **近期先做:v0.6.7 —— Issue #20 面板删除按钮**(兑现对社区 lqs50 的承诺,快速小版本)。
11
-
12
- **v0.7 主题:自进化记忆(heat 热度 + 兴趣漂移)—— 桉桉 2026-08-21 拍板:不着急,列为远期**,先把 v0.6.x 的欠账收干净再说。
13
-
14
- 一句话:v0.7 让记忆库不只是"存得准、召得回",还能**根据访问热度自我衰减、识别兴趣漂移、降级冷记忆**,进化为会"进化"的记忆体。核心来自 #21(简化幂律 + type 差异化半衰期),社区调研补足数据前提与图谱增强。
15
-
16
- **复用承接(不引入新依赖/新概念):** 全部落在现有 `recall_runs` 表 / `TYPE_DECAY` / sleep 批处理 / `entity_attrs` valid_from-until / api.js 的 ego-BFS 上。图数据库(Neo4j/Graphiti)明确不做——SQLite 递归 CTE 实测够用。
17
-
18
- ---
19
-
20
- ## 二、范围拆分
21
-
22
- ### v0.6.7 —— Issue #20 记忆面板删除按钮(近期,优先做)
23
- | # | 功能 | 说明 | 承接机制 |
24
- |---|------|------|----------|
25
- | ⭐1 | **面板删除按钮** | 记忆库界面**直接删除自己不需要的记忆**(社区 lqs50 提,issue #20 仍 OPEN)。后端 storage/`memory_delete` 工具已有 → **补一个面板 HTTP DELETE 端点 + 前端「选中删除」按钮**(永久删除带二次确认;可挂到目录 view / 详情页)| store.deleteMemory + api.js + 面板 |
26
- - **验收:** 全绿;面板可选中删除记忆(含目录视图入口);**收掉 issue #20** 并回帖致谢 lqs50。
27
- - **依赖关系:** 独立小版本,不需要等 v0.7。夜间一个窗口即可完成。
28
-
29
- ### v0.7.0 —— heat 热度 + 兴趣漂移核心(远期,⏸ 不着急)
30
- | # | 功能 | 说明 | 承接机制 |
31
- |---|------|------|----------|
32
- | 1 | **heat 模型** | 简化幂律衰减 + `TYPE_DECAY`(type 差异化半衰期);**公式预留信号接口**(新列/metadata,以后加多信号是增量不重构)| #21 已定方向 |
33
- | 2 | **recall_runs 数据前提** | 记录**默认开、消费默认关**;candidates 打 **`injected` 标记**(区分"被召回"vs"被注入上下文"两个强度);**90 天滚动清理**防膨胀 | recall_runs / touchRecalled |
34
- | 3 | **sleep 降级联合判定** | 现状 30/90 天硬阈值不看 importance/type,高价值 preference 也会被降级 → 改为 `heat<阈值 && importance<5 && type 非免疫`,双保护,仍以时间为主 | sleep 批处理 / archived |
35
- | 4 | **updated_at 不算访问** | 合并/更新刷 updated_at 不应计为访问,防 autoDream 合并动作干扰新鲜度 | 时间戳语义修正 |
36
- | 5 | **heat 投影实体层** | 实体热 = 关联记忆 heat 聚合;ego-graph 前端节点大小/明暗随热变化,兴趣漂移**在图上可见**(成本≈0,heat 本就 v0.7 改)| entities 表 + 前端 |
37
- - **验收:** 全绿(目标 710 → 740+);heat 全部 opt-in(`heatEnabled` 默认保守开启、不破坏现有)。
38
- - **状态:** ⏸ 桉桉拍板不着急,先做完 v0.6.x 收尾再启动。
39
-
40
- ### v0.7.1 —— 图谱数据积累 + 检索/关系增强(次轮)
41
- | # | 功能 | 说明 | 承接机制 |
42
- |---|------|------|----------|
43
- | 6 | **实体提取移入 sleep 批量** | 写入路径实时抽实体成本高 → 挪进 sleep 批量,**写入路径零 LLM 成本**;代价是图谱滞后一个 sleep 周期(长期关系网无感)| sleep LLM 阶段模式 |
44
- | 7 | **sleep 批量实体消歧** | extractor 目前不合并同义词,全称/简称成孤立节点 → 仿 autoDream 的 winner/loser + 审计,或规则兜底(小写/去空格)| findEntityByName |
45
- | 8 | **1-hop 邻域回流检索** | `entity:X` 顺带召回相邻实体记忆——把图谱从"展示"变成"召回信号"(差异化价值)| api.js ego-BFS |
46
- | 9 | **关系时效** | `entity_relations` 补 `valid_until` + `superseded` 标记(不删只标,保留历史回溯),换方案后旧关系不一直挂着 | entity_attrs 的 valid_from/until 模式 |
47
- - **验收:** 全绿;图谱数据能攒起来,前端可见热投影。
48
-
49
- ### 远期 / 等 DSH(不在本次做)
50
- - 跨 workspace 记忆共享(README v0.7.0+ 标注,**等 DSH 支持**);多模态记忆(本地化定位冲突,排除);参数化记忆 MemoryLLM(模型层路线,基本放弃);图数据库/PPR/社区子图(CTE 够用,暂缓)。
51
-
52
- ---
53
-
54
- ## 三、分工安排(多模型协作,服从派发架构)
55
-
56
- | 角色 | 模型 | 负责 | 量级 |
57
- |------|------|------|------|
58
- | **协调 + 方案 + 把关** | qwen3.7-max | 拆任务、定义 heat 公式/TYPE_DECAY 表格/schema、每步评审整合 | 中 |
59
- | **核心代码 + 复杂测试** | kimi-k3 | heat 模型、sleep 降级判定、1-hop 回流、实体消歧、90 天清理等实现 + 全绿测试 | 高 |
60
- | **轻量校验/快检** | glm-4.5-air | 小步 diff 校验、配置项联动、回归抽查 | 低 |
61
- | **文档同步** | qwen3.6-plus | CHANGELOG + README 双表(root+子目录、中英),ROADMAP 状态对 | 低 |
62
- | **集成 + 发布** | 主模型(Ivresse) | 汇总、核验、**报桉桉批准后**发布;一次只发一个 sub-version | — |
63
-
64
- > 派发铁律:发布/改动前先征得桉桉许可;复杂编程/测试派 kimi-k3;REANME/CHANGELOG 根+子目录中英都要同步,避免漏改。
65
-
66
- ## 四、执行节奏(错峰,尊重 ~1200 次/5 小时)
67
- - **窗口**:每晚 7 点后 / 周末,一次只推一个 sub-step(先 0.7.0,休息/量量再用 0.7.1)。
68
- - **每步收尾**:跑全绿 → 更新 CHANGELOG/README → 记 activeContext/progress → 停。
69
- - **不集中突发**:同一窗口不做超长连续生成,做完即停,额度留着。
70
-
71
- ---
72
-
73
- ## 五、待桉桉拍板(已定项已在文内标注)
74
- ✅ 已定:**Issue #20 → v0.6.7**(快速兑现);**v0.7.0 不着急**(远期,先收 v0.6.x 账)。
75
- > 剩下细节到真正开工前再定即可:heat 默认开/关、v0.7.0 与 v0.7.1 节奏。
Binary file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes