recallnest 2.2.0 → 2.2.1

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 (232) hide show
  1. package/.env +4 -0
  2. package/config.json +55 -0
  3. package/logs/daily-recall.error.log +0 -0
  4. package/logs/daily-recall.log +30 -0
  5. package/logs/ingest-2026-04-11.log +110 -0
  6. package/logs/ingest-2026-04-12.log +90 -0
  7. package/logs/launchagent-stderr.log +0 -0
  8. package/logs/launchagent-stdout.log +0 -0
  9. package/package.json +1 -1
  10. package/.claude-plugin/CLAUDE.md +0 -29
  11. package/.claude-plugin/marketplace.json +0 -18
  12. package/.dockerignore +0 -11
  13. package/.github/workflows/ci.yml +0 -28
  14. package/.mcp.json +0 -9
  15. package/CHANGELOG.md +0 -51
  16. package/DEMO.md +0 -94
  17. package/Dockerfile +0 -20
  18. package/EVAL.md +0 -89
  19. package/FAILURES.md +0 -75
  20. package/OPERATIONS.md +0 -59
  21. package/ROADMAP.md +0 -245
  22. package/SKILL.md +0 -250
  23. package/assets/dashboard.png +0 -0
  24. package/assets/knowledge-graph.png +0 -0
  25. package/assets/recallnest-workbench.png +0 -0
  26. package/assets/screenshots/ui-full.png +0 -0
  27. package/assets/screenshots/ui-overview.png +0 -0
  28. package/assets/screenshots/ui-search.png +0 -0
  29. package/assets/ui/app.js +0 -1031
  30. package/assets/ui/index.html +0 -224
  31. package/assets/ui/styles.css +0 -781
  32. package/assets/wechat-qr.jpg +0 -0
  33. package/bun.lock +0 -337
  34. package/daily-reflections/2026-03-05.md +0 -15
  35. package/daily-reflections/2026-03-06.md +0 -15
  36. package/daily-reflections/2026-03-07.md +0 -7
  37. package/daily-reflections/2026-03-08.md +0 -34
  38. package/daily-reflections/2026-03-09.md +0 -35
  39. package/daily-reflections/2026-03-10.md +0 -36
  40. package/daily-reflections/2026-03-11.md +0 -35
  41. package/daily-reflections/2026-03-12.md +0 -36
  42. package/daily-reflections/2026-03-13.md +0 -35
  43. package/daily-reflections/2026-03-14.md +0 -35
  44. package/daily-reflections/2026-03-15.md +0 -35
  45. package/daily-reflections/2026-03-16.md +0 -41
  46. package/daily-reflections/2026-03-17.md +0 -10
  47. package/daily-reflections/2026-03-18.md +0 -10
  48. package/daily-reflections/2026-03-19.md +0 -10
  49. package/daily-reflections/2026-03-20.md +0 -10
  50. package/daily-reflections/2026-03-21.md +0 -10
  51. package/daily-reflections/2026-03-22.md +0 -10
  52. package/daily-reflections/2026-03-23.md +0 -10
  53. package/daily-reflections/2026-03-24.md +0 -10
  54. package/daily-reflections/2026-03-25.md +0 -32
  55. package/daily-reflections/2026-03-26.md +0 -37
  56. package/daily-reflections/2026-03-27.md +0 -35
  57. package/daily-reflections/2026-03-28.md +0 -35
  58. package/daily-reflections/2026-03-29.md +0 -35
  59. package/daily-reflections/2026-03-30.md +0 -36
  60. package/daily-reflections/2026-03-31.md +0 -35
  61. package/daily-reflections/2026-04-01.md +0 -35
  62. package/daily-reflections/2026-04-02.md +0 -35
  63. package/daily-reflections/2026-04-03.md +0 -37
  64. package/daily-reflections/2026-04-04.md +0 -37
  65. package/daily-reflections/2026-04-05.md +0 -35
  66. package/daily-reflections/2026-04-06.md +0 -36
  67. package/daily-reflections/2026-04-07.md +0 -35
  68. package/daily-reflections/2026-04-08.md +0 -35
  69. package/daily-reflections/2026-04-12.md +0 -35
  70. package/data/alias-map.example.json +0 -22
  71. package/docs/api-reference.md +0 -1291
  72. package/docs/architecture.md +0 -168
  73. package/docs/memory-boundary-contract.md +0 -226
  74. package/docs/memory-categories.md +0 -119
  75. package/docs/pipeline-audit-ultramemory.md +0 -177
  76. package/docs/plans/2026-03-08-query-expansion.md +0 -270
  77. package/docs/plans/2026-03-16-continuity-layer.md +0 -196
  78. package/docs/plans/2026-04-01-recall-boost.md +0 -100
  79. package/docs/plans/mcp-tiering-plan.md +0 -126
  80. package/docs/research/recall-quality-audit-2026-03-22.md +0 -153
  81. package/docs/self-evolution.md +0 -198
  82. package/docs/superpowers/plans/2026-03-19-ingest-pipeline-upgrade.md +0 -782
  83. package/docs/superpowers/plans/2026-04-11-constructive-retrieval-emotion.md +0 -1195
  84. package/docs/superpowers/specs/2026-03-19-ingest-pipeline-upgrade-design.md +0 -77
  85. package/docs/superpowers/specs/2026-03-23-pull-claude-desktop-design.md +0 -95
  86. package/docs/superpowers/specs/2026-04-11-constructive-retrieval-emotion-design.md +0 -398
  87. package/eval/continuity/results-2026-03-16.md +0 -117
  88. package/eval/continuity/results-2026-03-19.md +0 -453
  89. package/eval/continuity/runbook.md +0 -110
  90. package/eval/continuity/seed-cases.md +0 -54
  91. package/eval/reports/2026-03-06-abstract-query-baseline.md +0 -96
  92. package/eval/reports/2026-03-06-aws-ssh-baseline.md +0 -82
  93. package/eval/reports/2026-03-06-baseline.md +0 -82
  94. package/eval/reports/query-expansion.md +0 -138
  95. package/glama.json +0 -6
  96. package/lm +0 -19
  97. package/plan-philosophy-upgrades.md +0 -363
  98. package/plan-product-upgrades.md +0 -155
  99. package/plan-v1.2-distributable.md +0 -105
  100. package/plan.md +0 -140
  101. package/research-memory-evolution.md +0 -440
  102. package/research-rl-agent-memory.md +0 -330
  103. package/scripts/archive-distilled-junk.ts +0 -116
  104. package/scripts/backfill-anchors.ts +0 -130
  105. package/scripts/backfill-l0l1l2.ts +0 -98
  106. package/scripts/blind-scan.ts +0 -588
  107. package/scripts/cleanup-step1-exact-dups.ts +0 -117
  108. package/scripts/cleanup-step2-template-dups.ts +0 -113
  109. package/scripts/cleanup-step3-stale-content.ts +0 -149
  110. package/scripts/cleanup-step4-orphan-scopes.ts +0 -131
  111. package/scripts/delete-distilled-junk.ts +0 -88
  112. package/scripts/diagnose-vector-search.ts +0 -132
  113. package/scripts/distill-facts.ts +0 -305
  114. package/scripts/health-check.ts +0 -343
  115. package/scripts/incremental-ingest.sh +0 -71
  116. package/scripts/migrate-language.ts +0 -75
  117. package/scripts/mlp-health-check.ts +0 -382
  118. package/scripts/pull-claude-desktop.ts +0 -515
  119. package/scripts/re-ingest-cc.sh +0 -66
  120. package/scripts/rebalance-memory-health.ts +0 -181
  121. package/scripts/run-desktop-ingest.sh +0 -11
  122. package/scripts/start-server.sh +0 -12
  123. package/scripts/verify-emotion-decay.ts +0 -148
  124. package/scripts/viz-dashboard.html +0 -423
  125. package/scripts/viz-export.ts +0 -703
  126. package/src/__tests__/access-tracker-novelty.test.ts +0 -228
  127. package/src/__tests__/activity-counter.test.ts +0 -96
  128. package/src/__tests__/admission-control.test.ts +0 -206
  129. package/src/__tests__/anchor-generator.test.ts +0 -67
  130. package/src/__tests__/auto-consolidation.test.ts +0 -168
  131. package/src/__tests__/auto-recall.test.ts +0 -131
  132. package/src/__tests__/babel-integration.test.ts +0 -139
  133. package/src/__tests__/batch-dedup.test.ts +0 -65
  134. package/src/__tests__/capture-engine.test.ts +0 -1144
  135. package/src/__tests__/capture-heuristic.test.ts +0 -171
  136. package/src/__tests__/cascade-forget.test.ts +0 -210
  137. package/src/__tests__/category-min-scores.test.ts +0 -33
  138. package/src/__tests__/cc8-cc1-essential-context.test.ts +0 -298
  139. package/src/__tests__/circuit-breaker.test.ts +0 -99
  140. package/src/__tests__/cluster-consolidation.test.ts +0 -712
  141. package/src/__tests__/confidence-metadata.test.ts +0 -125
  142. package/src/__tests__/confidence-tracker.test.ts +0 -249
  143. package/src/__tests__/conflict-advisor.test.ts +0 -206
  144. package/src/__tests__/conflict-escalation.test.ts +0 -149
  145. package/src/__tests__/conflict-lifecycle.test.ts +0 -83
  146. package/src/__tests__/conflict-output.test.ts +0 -85
  147. package/src/__tests__/conflict-store.test.ts +0 -374
  148. package/src/__tests__/consolidation-engine.test.ts +0 -181
  149. package/src/__tests__/constructive-retrieval.test.ts +0 -509
  150. package/src/__tests__/context-collapse-renderer.test.ts +0 -214
  151. package/src/__tests__/context-composer-pins.test.ts +0 -64
  152. package/src/__tests__/context-composer-task-selection.test.ts +0 -24
  153. package/src/__tests__/context-reconstructor.test.ts +0 -65
  154. package/src/__tests__/context-renderer.test.ts +0 -91
  155. package/src/__tests__/continuity-eval.test.ts +0 -275
  156. package/src/__tests__/continuity-schema.test.ts +0 -97
  157. package/src/__tests__/conversation-importer.test.ts +0 -692
  158. package/src/__tests__/core-recall-eval.test.ts +0 -235
  159. package/src/__tests__/core-summary.test.ts +0 -109
  160. package/src/__tests__/data-checkup.test.ts +0 -225
  161. package/src/__tests__/decay-exemption.test.ts +0 -84
  162. package/src/__tests__/dedup-actions.test.ts +0 -58
  163. package/src/__tests__/dedup-guard.test.ts +0 -39
  164. package/src/__tests__/deterministic-id.test.ts +0 -39
  165. package/src/__tests__/distill-lock.test.ts +0 -176
  166. package/src/__tests__/doctor.test.ts +0 -303
  167. package/src/__tests__/dream-pipeline.test.ts +0 -232
  168. package/src/__tests__/drill-down.test.ts +0 -108
  169. package/src/__tests__/embedder.test.ts +0 -122
  170. package/src/__tests__/emotion-decay.test.ts +0 -46
  171. package/src/__tests__/emotion-detector.test.ts +0 -56
  172. package/src/__tests__/emotion-phase1-integration.test.ts +0 -153
  173. package/src/__tests__/emotion-retrieval.test.ts +0 -56
  174. package/src/__tests__/entity-resolver.test.ts +0 -58
  175. package/src/__tests__/ethics-layer.test.ts +0 -476
  176. package/src/__tests__/event-segmenter.test.ts +0 -153
  177. package/src/__tests__/feature-flags-integration.test.ts +0 -54
  178. package/src/__tests__/frequency-tracker.test.ts +0 -113
  179. package/src/__tests__/graph-export.test.ts +0 -489
  180. package/src/__tests__/hotness-blend.test.ts +0 -76
  181. package/src/__tests__/ingest.test.ts +0 -360
  182. package/src/__tests__/interference-detector.test.ts +0 -203
  183. package/src/__tests__/kg-extractor.test.ts +0 -184
  184. package/src/__tests__/kg-store.test.ts +0 -198
  185. package/src/__tests__/llm-consolidation.test.ts +0 -226
  186. package/src/__tests__/mcp-efficiency.test.ts +0 -288
  187. package/src/__tests__/memory-boundaries.test.ts +0 -237
  188. package/src/__tests__/memory-evolution-b2-b3-e1.test.ts +0 -243
  189. package/src/__tests__/memory-evolution.test.ts +0 -271
  190. package/src/__tests__/memory-health-rebalance.test.ts +0 -144
  191. package/src/__tests__/memory-lint.test.ts +0 -271
  192. package/src/__tests__/memory-output.test.ts +0 -215
  193. package/src/__tests__/multi-vector.test.ts +0 -242
  194. package/src/__tests__/narrative-architecture.test.ts +0 -456
  195. package/src/__tests__/pending-review.test.ts +0 -77
  196. package/src/__tests__/post-retrieval-filter.test.ts +0 -178
  197. package/src/__tests__/ppr-traversal.test.ts +0 -256
  198. package/src/__tests__/prediction-engine.test.ts +0 -349
  199. package/src/__tests__/predictive-prospective-memory.test.ts +0 -416
  200. package/src/__tests__/preference-guard-smoke.test.ts +0 -211
  201. package/src/__tests__/preference-matcher.test.ts +0 -230
  202. package/src/__tests__/preference-slots.test.ts +0 -205
  203. package/src/__tests__/prospective-memory.test.ts +0 -283
  204. package/src/__tests__/query-entity-detector.test.ts +0 -171
  205. package/src/__tests__/query-expander-alias.test.ts +0 -89
  206. package/src/__tests__/query-expander.test.ts +0 -34
  207. package/src/__tests__/recall-governor.test.ts +0 -227
  208. package/src/__tests__/recall-mode.test.ts +0 -64
  209. package/src/__tests__/result-synthesizer.test.ts +0 -198
  210. package/src/__tests__/resume-context.test.ts +0 -4898
  211. package/src/__tests__/retrieval-trace.test.ts +0 -213
  212. package/src/__tests__/retriever-boundary-weight.test.ts +0 -136
  213. package/src/__tests__/retroactive-boost.test.ts +0 -223
  214. package/src/__tests__/salience-scoring.test.ts +0 -106
  215. package/src/__tests__/scope-inventory.test.ts +0 -200
  216. package/src/__tests__/scope-policy.test.ts +0 -69
  217. package/src/__tests__/session-checkpoint.test.ts +0 -259
  218. package/src/__tests__/session-distiller.test.ts +0 -611
  219. package/src/__tests__/session-gc.test.ts +0 -215
  220. package/src/__tests__/skill-engine.test.ts +0 -546
  221. package/src/__tests__/skill-promotion.test.ts +0 -349
  222. package/src/__tests__/store-scope-audit.test.ts +0 -81
  223. package/src/__tests__/supersede-chain.test.ts +0 -154
  224. package/src/__tests__/temporal-parser.test.ts +0 -241
  225. package/src/__tests__/temporal-validity.test.ts +0 -160
  226. package/src/__tests__/term-registry.test.ts +0 -121
  227. package/src/__tests__/tool-output-compressor.test.ts +0 -133
  228. package/src/__tests__/topic-tag.test.ts +0 -113
  229. package/src/__tests__/trusted-memory.test.ts +0 -828
  230. package/src/__tests__/version-manager.test.ts +0 -213
  231. package/src/__tests__/workflow-observation.test.ts +0 -400
  232. package/src/__tests__/write-verifier.test.ts +0 -122
package/.env ADDED
@@ -0,0 +1,4 @@
1
+ JINA_API_KEY=jina_a953576fa7b746019e57d1370122fb8aNQLVOjq95WHeDBKlBr3JeCj0K5SL
2
+ QWEN_API_KEY=sk-8b8f215de882422a991653d5fc3cc275
3
+ RECALLNEST_EMOTION_SCORING=true
4
+ RECALLNEST_CONSTRUCTIVE_RETRIEVAL=true
package/config.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "dbPath": "./data/lancedb",
3
+ "recallMode": "full",
4
+ "embedding": {
5
+ "provider": "jina",
6
+ "apiKey": "${JINA_API_KEY}",
7
+ "model": "jina-embeddings-v5-text-small",
8
+ "baseURL": "https://api.jina.ai/v1",
9
+ "dimensions": 1024,
10
+ "taskQuery": "retrieval.query",
11
+ "taskPassage": "retrieval.passage"
12
+ },
13
+ "llm": {
14
+ "apiKey": "${QWEN_API_KEY}",
15
+ "model": "qwen-turbo",
16
+ "baseURL": "https://dashscope.aliyuncs.com/compatible-mode/v1"
17
+ },
18
+ "sources": {
19
+ "cc": {
20
+ "path": "auto",
21
+ "glob": "*.jsonl",
22
+ "description": "Claude Code transcripts"
23
+ },
24
+ "codex": {
25
+ "path": "~/.codex/sessions",
26
+ "glob": "*.jsonl",
27
+ "description": "Codex sessions"
28
+ },
29
+ "memory": {
30
+ "path": "auto",
31
+ "glob": "*.md",
32
+ "description": "Claude Code memory files"
33
+ },
34
+ "gemini": {
35
+ "path": "~/.gemini/tmp",
36
+ "glob": "session-*.json",
37
+ "description": "Gemini CLI sessions"
38
+ },
39
+ "desktop": {
40
+ "path": "./data/desktop-import",
41
+ "glob": "*.jsonl",
42
+ "description": "Claude Desktop / claude.ai web conversations"
43
+ }
44
+ },
45
+ "retrieval": {
46
+ "mode": "hybrid",
47
+ "vectorWeight": 0.6,
48
+ "bm25Weight": 0.4,
49
+ "recencyHalfLifeDays": 30,
50
+ "timeDecayHalfLifeDays": 60,
51
+ "hardMinScore": 0.38,
52
+ "hotnessWeight": 0.15
53
+ },
54
+ "recallDepthDefault": "l1"
55
+ }
File without changes
@@ -0,0 +1,30 @@
1
+ === 2026-04-12 08:00:01 daily-recall 开始 ===
2
+ === 2026-04-12 08:00:01 daily-recall 开始 ===
3
+ 今日主题 (#7): 踩坑 修复 经验总结
4
+ 今日主题 (#7): 踩坑 修复 经验总结
5
+ 检查 distill gate...
6
+ 检查 distill gate...
7
+ distill gate:
8
+ distill gate:
9
+ 执行 distill...
10
+ 执行 distill...
11
+ distill 完成,27 行
12
+ distill 完成,27 行
13
+ [完成] 回顾已写入: /Users/anxianjingya/recallnest/daily-reflections/2026-04-12.md
14
+ [完成] 回顾已写入: /Users/anxianjingya/recallnest/daily-reflections/2026-04-12.md
15
+ 执行 checkpoint-gc...
16
+ 执行 checkpoint-gc...
17
+ checkpoint-gc: === Checkpoint GC ===
18
+
19
+ Kept : 217
20
+ Archived : 0
21
+ Deleted : 0
22
+ Errors : 0
23
+ checkpoint-gc: === Checkpoint GC ===
24
+
25
+ Kept : 217
26
+ Archived : 0
27
+ Deleted : 0
28
+ Errors : 0
29
+ === 2026-04-12 08:00:13 daily-recall 结束 ===
30
+ === 2026-04-12 08:00:13 daily-recall 结束 ===
@@ -0,0 +1,110 @@
1
+ === 2026-04-11 19:22:04 增量更新开始 ===
2
+ [INFO] LLM client initialized: qwen-turbo @ https://dashscope.aliyuncs.com/compatible-mode/v1
3
+
4
+ 🔑 验证 Embedding API...
5
+ ✅ jina-embeddings-v5-text-small (1024d)
6
+ ✅ LLM: qwen-turbo (L0 摘要 + 语义去重)
7
+ ✅ 两阶段去重: vector + LLM 语义判断
8
+
9
+ 🔄 开始导入记忆 (source: all)...
10
+
11
+ 📝 导入 Claude Code 对话...
12
+ CC: 230/962 files, 120 chunks ingested
13
+ CC: 470/962 files, 186 chunks ingested
14
+ [INFO] noise-filter: denial pattern matched: "**Phase 5: Predictive Prospective Memory — DONE** ✅
15
+
16
+ 总结一下做了什..."
17
+ ✅ CC: 24 files, 528 ingested, 474 deduped (hard:17, exact:160, llm-skip:150, llm-merge:147), 0 errors
18
+ 🤖 导入 Codex 对话...
19
+ [INFO] noise-filter: meta-question filtered: "# AGENTS.md instructions for /Users/anxianjingya/Projects/re..."
20
+ [INFO] noise-filter: meta-question filtered: "# AGENTS.md instructions for /Users/anxianjingya
21
+
22
+ <INSTRUCTI..."
23
+ Codex: 294/294 files, 39 chunks ingested
24
+ ✅ Codex: 2 files, 39 ingested, 22 deduped (hard:6, exact:0, llm-skip:8, llm-merge:8), 0 errors
25
+ 💎 导入 Gemini 对话...
26
+ ✅ Gemini: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
27
+ 🖥️ 导入 Claude Desktop 对话...
28
+ CC: 10/349 files, 43 chunks ingested
29
+ [INFO] noise-filter: denial pattern matched: "好的!我来手把手教你!别担心,超简单! 😊
30
+
31
+ ---
32
+
33
+ ## 📍 **Step 1: 找到文件在哪**
34
+
35
+ 我刚才给你..."
36
+ CC: 20/349 files, 70 chunks ingested
37
+ CC: 30/349 files, 73 chunks ingested
38
+ [INFO] noise-filter: short boilerplate filtered: "好的,我来帮你截图。"
39
+ CC: 40/349 files, 160 chunks ingested
40
+ CC: 50/349 files, 180 chunks ingested
41
+ CC: 60/349 files, 226 chunks ingested
42
+ CC: 70/349 files, 256 chunks ingested
43
+ [INFO] noise-filter: meta-question filtered: "你记不记得我让你帮我弄孩子们的简历..."
44
+ [INFO] noise-filter: denial pattern matched: "我查找一下我们之前关于孩子们简历的对话...
45
+
46
+ 让我搜索一下相关内容。
47
+
48
+ 我没有找到我们之前讨论过帮孩子们制作简历的记录..."
49
+ CC: 80/349 files, 316 chunks ingested
50
+ CC: 90/349 files, 335 chunks ingested
51
+ CC: 100/349 files, 412 chunks ingested
52
+ CC: 110/349 files, 501 chunks ingested
53
+ CC: 120/349 files, 520 chunks ingested
54
+ [INFO] noise-filter: boilerplate filtered: "Hello! How can I help you today?..."
55
+ [INFO] noise-filter: denial pattern matched: "不能。我无法访问你本地电脑上的文件或 Claude Code 的 session 记录。
56
+
57
+ 我能访问的是:
58
+ 1. **我..."
59
+ [INFO] noise-filter: denial pattern matched: "这个我不太确定,因为 Claude Desktop 的会话索引存在 `~/Library/Application Sup..."
60
+ [INFO] noise-filter: boilerplate filtered: "Hi Alice,
61
+ I understand you're looking for a way to rebuild t..."
62
+ CC: 130/349 files, 547 chunks ingested
63
+ CC: 140/349 files, 585 chunks ingested
64
+ [INFO] noise-filter: denial pattern matched: "啊,你说得对!我理解错了。
65
+
66
+ 让我重新想想这个问题...
67
+
68
+ Antigravity 确实也是通过 Claude in C..."
69
+ CC: 150/349 files, 618 chunks ingested
70
+ [INFO] noise-filter: denial pattern matched: "我来帮你查看workspace里的PPT相关文件,分析其逻辑是否与截图中描述的一致。
71
+
72
+ 让我先看看目录结构:
73
+ 我看到wo..."
74
+ CC: 160/349 files, 659 chunks ingested
75
+ CC: 170/349 files, 681 chunks ingested
76
+ [INFO] noise-filter: denial pattern matched: "我不确定Claude Opus 4.5的具体知识截止日期是否与我的相同。
77
+
78
+ 让我搜索一下Anthropic官方文档来确认..."
79
+ CC: 180/349 files, 685 chunks ingested
80
+ CC: 190/349 files, 694 chunks ingested
81
+ CC: 210/349 files, 919 chunks ingested
82
+ CC: 220/349 files, 927 chunks ingested
83
+ CC: 230/349 files, 956 chunks ingested
84
+ CC: 240/349 files, 977 chunks ingested
85
+ CC: 250/349 files, 1018 chunks ingested
86
+ CC: 260/349 files, 1030 chunks ingested
87
+ CC: 270/349 files, 1048 chunks ingested
88
+ CC: 280/349 files, 1185 chunks ingested
89
+ CC: 290/349 files, 1196 chunks ingested
90
+ [INFO] noise-filter: boilerplate filtered: "Hi Alice! Here's what I've learned about you from our past c..."
91
+ CC: 300/349 files, 1211 chunks ingested
92
+ CC: 310/349 files, 1243 chunks ingested
93
+ CC: 320/349 files, 1276 chunks ingested
94
+ [INFO] noise-filter: denial pattern matched: "我想不起来给你的这些提示词和视觉skill是哪里来的..."
95
+ [INFO] noise-filter: denial pattern matched: "* 全网AI集体翻车?为了读一篇公众号文章,我扒开了Grok的“谎言”
96
+ * Gemini、Claude、元宝全试了,竟..."
97
+ [INFO] noise-filter: denial pattern matched: "让我先查看歌舞剧院的总结,提取人才相关数据:
98
+ 好的,我现在已经了解了录音中领导的修改意见和两家院团的总结内容。根据领导的..."
99
+ CC: 330/349 files, 1331 chunks ingested
100
+ CC: 340/349 files, 1348 chunks ingested
101
+ CC: 349/349 files, 1372 chunks ingested
102
+ ✅ Desktop: 343 files, 1372 ingested, 3805 deduped (hard:440, exact:1721, llm-skip:1045, llm-merge:599), 0 errors
103
+ 📚 导入记忆文件...
104
+ ✅ Memory: 8 files, 11 ingested, 279 deduped (hard:0, exact:257, llm-skip:15, llm-merge:7), 0 errors
105
+
106
+ 📊 导入汇总:
107
+ 总计: 1950 chunks 已索引, 4580 chunks 去重 (hard:463, exact:2138, llm-skip:1218, llm-merge:761), 0 errors
108
+
109
+ === 2026-04-11 20:37:10 增量更新完成 ===
110
+
@@ -0,0 +1,90 @@
1
+ === 2026-04-12 03:00:01 增量更新开始 ===
2
+ [INFO] LLM client initialized: qwen-turbo @ https://dashscope.aliyuncs.com/compatible-mode/v1
3
+
4
+ 🔑 验证 Embedding API...
5
+ ✅ jina-embeddings-v5-text-small (1024d)
6
+ ✅ LLM: qwen-turbo (L0 摘要 + 语义去重)
7
+ ✅ 两阶段去重: vector + LLM 语义判断
8
+
9
+ 🔄 开始导入记忆 (source: all)...
10
+
11
+ 📝 导入 Claude Code 对话...
12
+ [INFO] noise-filter: denial pattern matched: "<task-notification>
13
+ <task-id>ac1e8c3a46f90bcc6</task-id>
14
+ <to..."
15
+ CC: 400/976 files, 269 chunks ingested
16
+ [INFO] noise-filter: denial pattern matched: "完全破案了。
17
+
18
+ **根因:4月10日 22:55(新加坡时间)发生了一次批量仓库可见性修改**
19
+
20
+ 时间线还原:
21
+
22
+ | U..."
23
+ CC: 770/976 files, 541 chunks ingested
24
+ ✅ CC: 19 files, 563 ingested, 505 deduped (hard:24, exact:228, llm-skip:114, llm-merge:139), 0 errors
25
+ 🤖 导入 Codex 对话...
26
+ ✅ Codex: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
27
+ 💎 导入 Gemini 对话...
28
+ ✅ Gemini: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
29
+ 🖥️ 导入 Claude Desktop 对话...
30
+ ✅ Desktop: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
31
+ 📚 导入记忆文件...
32
+ ✅ Memory: 5 files, 4 ingested, 188 deduped (hard:0, exact:172, llm-skip:13, llm-merge:3), 0 errors
33
+
34
+ 📊 导入汇总:
35
+ 总计: 567 chunks 已索引, 693 chunks 去重 (hard:24, exact:400, llm-skip:127, llm-merge:142), 0 errors
36
+
37
+ === 2026-04-12 03:16:02 增量更新完成 ===
38
+
39
+ === 2026-04-12 11:16:02 增量更新开始 ===
40
+ [INFO] LLM client initialized: qwen-turbo @ https://dashscope.aliyuncs.com/compatible-mode/v1
41
+
42
+ 🔑 验证 Embedding API...
43
+ ✅ jina-embeddings-v5-text-small (1024d)
44
+ ✅ LLM: qwen-turbo (L0 摘要 + 语义去重)
45
+ ✅ 两阶段去重: vector + LLM 语义判断
46
+
47
+ 🔄 开始导入记忆 (source: all)...
48
+
49
+ 📝 导入 Claude Code 对话...
50
+ ✅ CC: 5 files, 141 ingested, 90 deduped (hard:4, exact:24, llm-skip:30, llm-merge:32), 0 errors
51
+ 🤖 导入 Codex 对话...
52
+ ✅ Codex: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
53
+ 💎 导入 Gemini 对话...
54
+ ✅ Gemini: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
55
+ 🖥️ 导入 Claude Desktop 对话...
56
+ ✅ Desktop: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
57
+ 📚 导入记忆文件...
58
+ ✅ Memory: 1 files, 0 ingested, 182 deduped (hard:0, exact:171, llm-skip:11, llm-merge:0), 0 errors
59
+
60
+ 📊 导入汇总:
61
+ 总计: 141 chunks 已索引, 272 chunks 去重 (hard:4, exact:195, llm-skip:41, llm-merge:32), 0 errors
62
+
63
+ === 2026-04-12 11:21:02 增量更新完成 ===
64
+
65
+ === 2026-04-12 19:21:02 增量更新开始 ===
66
+ [INFO] LLM client initialized: qwen-turbo @ https://dashscope.aliyuncs.com/compatible-mode/v1
67
+
68
+ 🔑 验证 Embedding API...
69
+ ✅ jina-embeddings-v5-text-small (1024d)
70
+ ✅ LLM: qwen-turbo (L0 摘要 + 语义去重)
71
+ ✅ 两阶段去重: vector + LLM 语义判断
72
+
73
+ 🔄 开始导入记忆 (source: all)...
74
+
75
+ 📝 导入 Claude Code 对话...
76
+ ✅ CC: 3 files, 55 ingested, 188 deduped (hard:2, exact:134, llm-skip:33, llm-merge:19), 0 errors
77
+ 🤖 导入 Codex 对话...
78
+ ✅ Codex: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
79
+ 💎 导入 Gemini 对话...
80
+ ✅ Gemini: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
81
+ 🖥️ 导入 Claude Desktop 对话...
82
+ ✅ Desktop: 0 files, 0 ingested, 0 deduped (hard:0, exact:0, llm-skip:0, llm-merge:0), 0 errors
83
+ 📚 导入记忆文件...
84
+ ✅ Memory: 1 files, 0 ingested, 182 deduped (hard:0, exact:171, llm-skip:11, llm-merge:0), 0 errors
85
+
86
+ 📊 导入汇总:
87
+ 总计: 55 chunks 已索引, 370 chunks 去重 (hard:2, exact:305, llm-skip:44, llm-merge:19), 0 errors
88
+
89
+ === 2026-04-12 19:25:03 增量更新完成 ===
90
+
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recallnest",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "RecallNest \u2014 MCP-native, local-first memory search and distillation for AI conversations",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,29 +0,0 @@
1
- # RecallNest Memory Plugin
2
-
3
- RecallNest is a local-first shared memory layer backed by LanceDB. It stores and recalls context across sessions, terminals, and agents (Claude Code, Codex, Gemini CLI).
4
-
5
- **Prerequisite**: Requires [Bun](https://bun.sh) runtime. On first start, dependencies install automatically.
6
-
7
- ## Tool Quick Reference
8
-
9
- | When | Tool | Purpose |
10
- |------|------|---------|
11
- | Session opens, user says continue/接着/上个窗口 | `resume_context` | Load stable context, latest checkpoint, recent cases |
12
- | Before answering about prior work / known facts | `search_memory` | Targeted fact/pattern recall (2-3 key nouns) |
13
- | After solving something significant | `store_memory` or `store_case` | Persist durable knowledge |
14
- | Before closing a window with unfinished work | `checkpoint_session` | Save current state for next session |
15
- | After discovering a reusable workflow | `store_workflow_pattern` | Persist as durable pattern |
16
- | Memory feels stale or conflicted | `consolidate_memories` | Merge near-duplicates (dry-run by default) |
17
-
18
- ## Continuity Rules
19
-
20
- - If the user says `continue`, `继续`, `接着`, `刚才`, `上个窗口`, `不要让我重复前情`, or asks where you stopped / what to do next — call `resume_context` before any Bash, Read, or repo exploration.
21
- - If the user starts a concrete task in an active project or asks for prior implementation detail — do lightweight RecallNest recovery before repo exploration even without an explicit `continue`.
22
- - Do not substitute `git status`, `git log`, or reading local docs for `resume_context`. Local inspection can validate current code state only **after** continuity has been recovered.
23
- - When `scope` or `sessionId` is known, pass it into recall tools instead of relying on global recall.
24
- - If `resume_context` returns a resolved scope or checkpoint scope, reuse that same scope in follow-up `search_memory`, `brief_memory`, `pin_memory` calls.
25
- - If recalled context mentions repo state (modified files, pending push), treat it as **handoff context only** — do not restate as current state without verifying in this window.
26
- - Before leaving a window with resumable work, call `checkpoint_session`. Do not include repo state claims unless you actually inspected the repo this window.
27
- - Use `store_memory` for durable profile, preference, entity, or case knowledge.
28
- - Use `store_workflow_pattern` for reusable multi-step workflows.
29
- - If the user explicitly corrects a continuity miss, fix the workflow and call `workflow_observe` with `outcome: corrected`.
@@ -1,18 +0,0 @@
1
- {
2
- "name": "AliceLJY",
3
- "owner": {
4
- "name": "Alice Jin Ye"
5
- },
6
- "metadata": {
7
- "description": "RecallNest — shared memory layer for Claude Code, Codex, and Gemini CLI",
8
- "homepage": "https://github.com/AliceLJY/recallnest"
9
- },
10
- "plugins": [
11
- {
12
- "name": "recallnest",
13
- "version": "1.4.1",
14
- "source": "./",
15
- "description": "Local-first memory system: store, search, and recall context across sessions and terminals. Powered by LanceDB with hybrid retrieval."
16
- }
17
- ]
18
- }
package/.dockerignore DELETED
@@ -1,11 +0,0 @@
1
- node_modules/
2
- data/*
3
- !data/alias-map.example.json
4
- logs/
5
- .env
6
- .git/
7
- *.md
8
- src/__tests__/
9
- eval/
10
- integrations/
11
- scripts/
@@ -1,28 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- jobs:
10
- check:
11
- runs-on: ubuntu-latest
12
- steps:
13
- - uses: actions/checkout@v4
14
-
15
- - uses: oven-sh/setup-bun@v2
16
- with:
17
- bun-version: latest
18
-
19
- - run: bun install
20
-
21
- - name: Setup config
22
- run: cp config.json.example config.json
23
-
24
- - name: Doctor (CI mode)
25
- run: bun run src/cli.ts doctor --ci
26
-
27
- - name: TypeScript check
28
- run: bun build src/cli.ts --target bun --no-bundle --outdir /tmp/check 2>&1 || true
package/.mcp.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "recallnest": {
4
- "type": "stdio",
5
- "command": "bash",
6
- "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/start-server.sh"]
7
- }
8
- }
9
- }
package/CHANGELOG.md DELETED
@@ -1,51 +0,0 @@
1
- # Changelog
2
-
3
- ## v1.3.1 — Upstream Sync (2026-03-12)
4
-
5
- Synced with [CortexReach/memory-lancedb-pro](https://github.com/CortexReach/memory-lancedb-pro) master (v1.1.0-beta.6+).
6
-
7
- ### Changed
8
-
9
- - **Retriever**: Added `source` field to `RetrievalContext` — access reinforcement now only fires on manual retrieval, preventing auto-recall from strengthening noise memories (synced from upstream beta.2 design).
10
- - **Noise filter**: Added Chinese meta-question patterns (`你记得`, `记不记得`, `还记得…吗`, `上次…说`, `之前…提到`) and diagnostic artifact filter (synced from upstream beta.3).
11
- - **README**: Updated upstream credit link from `win4r/memory-lancedb-pro` to `CortexReach/memory-lancedb-pro`, added CortexReach team acknowledgement.
12
-
13
- ## v1.2.0 — First Distributable Release (2026-03-08)
14
-
15
- The goal of this release: a new user can go from `git clone` to first search result in 15 minutes.
16
-
17
- ### New
18
-
19
- - **`lm doctor`** — one-command pre-flight check for Bun, config, API key, data directory, transcript paths, and index health. Supports `--ci` mode for GitHub Actions.
20
- - **`lm demo`** — run sample queries to see RecallNest in action before writing your own.
21
- - **`config.json.example`** — ships with absolute `~/.recallnest/data/lancedb` path. New users copy this instead of editing the tracked config.
22
- - **GitHub Actions CI** — runs `doctor --ci` and TypeScript check on every push.
23
- - **Ingest pre-validation** — embedding API is tested before processing any files. Invalid Jina key now fails fast with a clear message instead of crashing mid-ingest.
24
-
25
- ### Changed
26
-
27
- - **README rewritten** — added Prerequisites table (Bun + Jina key), 5-step quickstart with expected output, Troubleshooting section.
28
- - **Gemini support marked "coming soon"** — README, config example, and doctor all honestly reflect that Gemini CLI sessions are encrypted protobuf and not yet parseable. The `lm ingest` command prints a clear skip message instead of silently failing.
29
- - **Config path robustness** — default `dbPath` changed from relative `./data/lancedb` to absolute `~/.recallnest/data/lancedb` in config example. Auto-detect failure messages now include the user's actual home path.
30
- - **`config.json` untracked** — added to `.gitignore` so user config is not overwritten by `git pull`.
31
-
32
- ### Fixed
33
-
34
- - Auto-detect hint in `doctor` now shows a real example path based on the current user's home directory.
35
- - `findConfigPath()` error message now suggests `cp config.json.example config.json` when the example file exists.
36
-
37
- ## v1.1.0 — Hybrid Retrieval + MCP + UI (2026-02)
38
-
39
- - Hybrid retrieval: LanceDB vector + BM25 keyword search with configurable weights
40
- - Retrieval profiles: `default`, `writing`, `debug`, `fact-check`
41
- - MCP server with 9 tools: search, explain, distill, brief, pin, list assets/pins, export, stats
42
- - Local web workbench UI at `http://localhost:4317`
43
- - Multi-source ingest: Claude Code transcripts, Codex sessions, Gemini sessions, markdown notes
44
- - Asset system: pin, brief, export with re-indexing
45
- - Time-aware scoring with configurable decay
46
-
47
- ## v1.0.0 — Initial Release (2026-01)
48
-
49
- - Basic vector search over Claude Code transcripts
50
- - LanceDB storage with Jina embeddings
51
- - CLI interface
package/DEMO.md DELETED
@@ -1,94 +0,0 @@
1
- # RecallNest 30-Second Demo
2
-
3
- Use this script when you want to explain RecallNest fast on GitHub, X, Telegram, or in a live screen recording.
4
-
5
- ## Demo Goal
6
-
7
- Show three things in one pass:
8
-
9
- | What to prove | What the viewer should understand |
10
- |------|------|
11
- | Recall | old AI conversations can be found quickly |
12
- | Explainability | hits are not opaque |
13
- | Reusability | useful context can become a long-lived asset |
14
-
15
- ## Fast Setup
16
-
17
- ```bash
18
- cd /Users/anxianjingya/recallnest
19
- bun run src/ui-server.ts
20
- ```
21
-
22
- Open:
23
-
24
- ```text
25
- http://localhost:4317
26
- ```
27
-
28
- ## Recommended Demo Query
29
-
30
- Use:
31
-
32
- ```text
33
- telegram bridge
34
- ```
35
-
36
- Reason:
37
-
38
- | Why this query works | Result |
39
- |------|------|
40
- | already appears in the current dataset | likely to return hits immediately |
41
- | has operational context | good for showing explainability |
42
- | already has assets | good for showing reuse |
43
-
44
- ## 30-Second Talk Track
45
-
46
- ### Version A
47
-
48
- ```text
49
- This is RecallNest, a local-first memory workbench for AI conversations.
50
- It turns Claude Code, Codex, Gemini, and notes into a recall layer.
51
- I can search an old topic, inspect why it matched, then pin useful context back into memory so it can be recalled again later.
52
- The same memory layer is exposed through MCP, so an agent can use it and I can still verify it in the UI.
53
- ```
54
-
55
- ### Version B
56
-
57
- ```text
58
- RecallNest is not just transcript search.
59
- It lets me search, explain, distill, and reuse past AI conversations.
60
- The key idea is that useful hits do not disappear again: I can turn them into assets and feed them back into recall.
61
- ```
62
-
63
- ## Demo Click Path
64
-
65
- | Step | UI action | What to say |
66
- |------|------|------|
67
- | 1 | show the loaded `telegram bridge` query | "This starts from a real transcript topic." |
68
- | 2 | click `Search` | "I can recall the relevant conversation history." |
69
- | 3 | click `Details` on one result | "The hit is inspectable, not a black box." |
70
- | 4 | click `Pin` or `Brief` | "Useful context becomes a reusable asset." |
71
- | 5 | switch to `Assets` | "Assets stay visible and can be recalled later." |
72
-
73
- ## Screenshot Rules
74
-
75
- | Rule | Why |
76
- |------|------|
77
- | keep the browser crop tight | the product, not Chrome, should dominate the frame |
78
- | show real hits in the result area | empty states spread poorly |
79
- | keep `Trace Output` collapsed unless you are explaining it | it distracts from the main product story |
80
- | prefer one strong screenshot over many average ones | easier to share and understand |
81
-
82
- ## If The UI Opens Empty
83
-
84
- Check:
85
-
86
- 1. the server is running
87
- 2. the current dataset was ingested
88
- 3. the page has been refreshed after startup
89
-
90
- If needed, re-run:
91
-
92
- ```bash
93
- bun run src/ui-server.ts
94
- ```
package/Dockerfile DELETED
@@ -1,20 +0,0 @@
1
- FROM oven/bun:1-alpine AS base
2
- WORKDIR /app
3
-
4
- # Install dependencies
5
- COPY package.json ./
6
- RUN bun install --frozen-lockfile 2>/dev/null || bun install
7
-
8
- # Copy source
9
- COPY src/ src/
10
- COPY data/alias-map.example.json data/alias-map.example.json
11
-
12
- # Default environment
13
- ENV RECALLNEST_API_PORT=4318
14
- ENV RECALLNEST_UI_PORT=4317
15
-
16
- EXPOSE 4318 4317
17
-
18
- # MCP stdio mode (default) — Glama introspection connects here
19
- # Override with CMD ["bun","run","src/api-server.ts"] for HTTP mode
20
- CMD ["bun", "run", "src/mcp-server.ts"]
package/EVAL.md DELETED
@@ -1,89 +0,0 @@
1
- # RecallNest Eval Memo
2
-
3
- This file is the operator memo for improving retrieval quality without relying on intuition.
4
-
5
- ## Why this exists
6
-
7
- RecallNest will keep evolving with:
8
- - upstream retrieval changes from `memory-lancedb-pro`
9
- - local tuning for your own workflows
10
- - new asset behavior (`pin`, `brief`, cleanup rules)
11
-
12
- Without a repeatable eval, it is impossible to tell whether recall actually improved.
13
-
14
- ## Core files
15
-
16
- | File | Purpose |
17
- |------|---------|
18
- | `eval/cases.json` | real-world recall cases to protect |
19
- | `src/eval.ts` | eval runner |
20
- | `eval/reports/` | saved baselines to compare across upgrades |
21
-
22
- ## What to evaluate
23
-
24
- Use queries that matter in real usage:
25
- - bot / bridge maintenance
26
- - OpenClaw memory architecture
27
- - writing style and user preference recall
28
- - visual style preference recall
29
- - AWS / config operations
30
-
31
- Important:
32
- - prefer the wording the operator actually types
33
- - do not invent a cleaner label if the real query is messier but more common
34
- - if `aws ssh` is what gets used in practice, benchmark `aws ssh`, not `aws bot config`
35
- - abstract, summarized queries are valid benchmarks if that is how the operator naturally searches
36
- - protect both query styles: exact operational wording and high-level conceptual wording
37
-
38
- Each case should define:
39
- - `query`
40
- - `profile`
41
- - optional `scope`
42
- - `expectAny`
43
- - `expectAll`
44
- - `expectScopePrefixes`
45
- - optional `forbid`
46
-
47
- ## Recommended workflow
48
-
49
- ### Before changing retrieval
50
-
51
- Run:
52
-
53
- ```bash
54
- bun run src/eval.ts --output eval/reports/latest.md
55
- ```
56
-
57
- If the change is important, also save a dated snapshot:
58
-
59
- ```bash
60
- bun run src/eval.ts --output eval/reports/2026-03-06-baseline.md
61
- ```
62
-
63
- ### After changing retrieval
64
-
65
- Run the same eval again and compare:
66
- - pass count
67
- - average score
68
- - top scopes
69
- - top snippet quality
70
-
71
- ## What counts as a good change
72
-
73
- Good:
74
- - relevant source scopes move up
75
- - user preference memories stay stable
76
- - bridge / ops / config queries become easier to recover
77
- - `pin` and `brief` behave differently on purpose
78
-
79
- Bad:
80
- - asset recursion comes back
81
- - old noisy `brief` objects dominate retrieval
82
- - exact operational queries stop surfacing recent config changes
83
- - writing/style queries drift away from user preference memories
84
-
85
- ## Maintenance note
86
-
87
- Whenever a new recurring workflow appears, add it to `eval/cases.json`.
88
-
89
- That turns “I hope this still works” into “I can prove it still works.”