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.
- package/.env +4 -0
- package/config.json +55 -0
- package/logs/daily-recall.error.log +0 -0
- package/logs/daily-recall.log +30 -0
- package/logs/ingest-2026-04-11.log +110 -0
- package/logs/ingest-2026-04-12.log +90 -0
- package/logs/launchagent-stderr.log +0 -0
- package/logs/launchagent-stdout.log +0 -0
- package/package.json +1 -1
- package/.claude-plugin/CLAUDE.md +0 -29
- package/.claude-plugin/marketplace.json +0 -18
- package/.dockerignore +0 -11
- package/.github/workflows/ci.yml +0 -28
- package/.mcp.json +0 -9
- package/CHANGELOG.md +0 -51
- package/DEMO.md +0 -94
- package/Dockerfile +0 -20
- package/EVAL.md +0 -89
- package/FAILURES.md +0 -75
- package/OPERATIONS.md +0 -59
- package/ROADMAP.md +0 -245
- package/SKILL.md +0 -250
- package/assets/dashboard.png +0 -0
- package/assets/knowledge-graph.png +0 -0
- package/assets/recallnest-workbench.png +0 -0
- package/assets/screenshots/ui-full.png +0 -0
- package/assets/screenshots/ui-overview.png +0 -0
- package/assets/screenshots/ui-search.png +0 -0
- package/assets/ui/app.js +0 -1031
- package/assets/ui/index.html +0 -224
- package/assets/ui/styles.css +0 -781
- package/assets/wechat-qr.jpg +0 -0
- package/bun.lock +0 -337
- package/daily-reflections/2026-03-05.md +0 -15
- package/daily-reflections/2026-03-06.md +0 -15
- package/daily-reflections/2026-03-07.md +0 -7
- package/daily-reflections/2026-03-08.md +0 -34
- package/daily-reflections/2026-03-09.md +0 -35
- package/daily-reflections/2026-03-10.md +0 -36
- package/daily-reflections/2026-03-11.md +0 -35
- package/daily-reflections/2026-03-12.md +0 -36
- package/daily-reflections/2026-03-13.md +0 -35
- package/daily-reflections/2026-03-14.md +0 -35
- package/daily-reflections/2026-03-15.md +0 -35
- package/daily-reflections/2026-03-16.md +0 -41
- package/daily-reflections/2026-03-17.md +0 -10
- package/daily-reflections/2026-03-18.md +0 -10
- package/daily-reflections/2026-03-19.md +0 -10
- package/daily-reflections/2026-03-20.md +0 -10
- package/daily-reflections/2026-03-21.md +0 -10
- package/daily-reflections/2026-03-22.md +0 -10
- package/daily-reflections/2026-03-23.md +0 -10
- package/daily-reflections/2026-03-24.md +0 -10
- package/daily-reflections/2026-03-25.md +0 -32
- package/daily-reflections/2026-03-26.md +0 -37
- package/daily-reflections/2026-03-27.md +0 -35
- package/daily-reflections/2026-03-28.md +0 -35
- package/daily-reflections/2026-03-29.md +0 -35
- package/daily-reflections/2026-03-30.md +0 -36
- package/daily-reflections/2026-03-31.md +0 -35
- package/daily-reflections/2026-04-01.md +0 -35
- package/daily-reflections/2026-04-02.md +0 -35
- package/daily-reflections/2026-04-03.md +0 -37
- package/daily-reflections/2026-04-04.md +0 -37
- package/daily-reflections/2026-04-05.md +0 -35
- package/daily-reflections/2026-04-06.md +0 -36
- package/daily-reflections/2026-04-07.md +0 -35
- package/daily-reflections/2026-04-08.md +0 -35
- package/daily-reflections/2026-04-12.md +0 -35
- package/data/alias-map.example.json +0 -22
- package/docs/api-reference.md +0 -1291
- package/docs/architecture.md +0 -168
- package/docs/memory-boundary-contract.md +0 -226
- package/docs/memory-categories.md +0 -119
- package/docs/pipeline-audit-ultramemory.md +0 -177
- package/docs/plans/2026-03-08-query-expansion.md +0 -270
- package/docs/plans/2026-03-16-continuity-layer.md +0 -196
- package/docs/plans/2026-04-01-recall-boost.md +0 -100
- package/docs/plans/mcp-tiering-plan.md +0 -126
- package/docs/research/recall-quality-audit-2026-03-22.md +0 -153
- package/docs/self-evolution.md +0 -198
- package/docs/superpowers/plans/2026-03-19-ingest-pipeline-upgrade.md +0 -782
- package/docs/superpowers/plans/2026-04-11-constructive-retrieval-emotion.md +0 -1195
- package/docs/superpowers/specs/2026-03-19-ingest-pipeline-upgrade-design.md +0 -77
- package/docs/superpowers/specs/2026-03-23-pull-claude-desktop-design.md +0 -95
- package/docs/superpowers/specs/2026-04-11-constructive-retrieval-emotion-design.md +0 -398
- package/eval/continuity/results-2026-03-16.md +0 -117
- package/eval/continuity/results-2026-03-19.md +0 -453
- package/eval/continuity/runbook.md +0 -110
- package/eval/continuity/seed-cases.md +0 -54
- package/eval/reports/2026-03-06-abstract-query-baseline.md +0 -96
- package/eval/reports/2026-03-06-aws-ssh-baseline.md +0 -82
- package/eval/reports/2026-03-06-baseline.md +0 -82
- package/eval/reports/query-expansion.md +0 -138
- package/glama.json +0 -6
- package/lm +0 -19
- package/plan-philosophy-upgrades.md +0 -363
- package/plan-product-upgrades.md +0 -155
- package/plan-v1.2-distributable.md +0 -105
- package/plan.md +0 -140
- package/research-memory-evolution.md +0 -440
- package/research-rl-agent-memory.md +0 -330
- package/scripts/archive-distilled-junk.ts +0 -116
- package/scripts/backfill-anchors.ts +0 -130
- package/scripts/backfill-l0l1l2.ts +0 -98
- package/scripts/blind-scan.ts +0 -588
- package/scripts/cleanup-step1-exact-dups.ts +0 -117
- package/scripts/cleanup-step2-template-dups.ts +0 -113
- package/scripts/cleanup-step3-stale-content.ts +0 -149
- package/scripts/cleanup-step4-orphan-scopes.ts +0 -131
- package/scripts/delete-distilled-junk.ts +0 -88
- package/scripts/diagnose-vector-search.ts +0 -132
- package/scripts/distill-facts.ts +0 -305
- package/scripts/health-check.ts +0 -343
- package/scripts/incremental-ingest.sh +0 -71
- package/scripts/migrate-language.ts +0 -75
- package/scripts/mlp-health-check.ts +0 -382
- package/scripts/pull-claude-desktop.ts +0 -515
- package/scripts/re-ingest-cc.sh +0 -66
- package/scripts/rebalance-memory-health.ts +0 -181
- package/scripts/run-desktop-ingest.sh +0 -11
- package/scripts/start-server.sh +0 -12
- package/scripts/verify-emotion-decay.ts +0 -148
- package/scripts/viz-dashboard.html +0 -423
- package/scripts/viz-export.ts +0 -703
- package/src/__tests__/access-tracker-novelty.test.ts +0 -228
- package/src/__tests__/activity-counter.test.ts +0 -96
- package/src/__tests__/admission-control.test.ts +0 -206
- package/src/__tests__/anchor-generator.test.ts +0 -67
- package/src/__tests__/auto-consolidation.test.ts +0 -168
- package/src/__tests__/auto-recall.test.ts +0 -131
- package/src/__tests__/babel-integration.test.ts +0 -139
- package/src/__tests__/batch-dedup.test.ts +0 -65
- package/src/__tests__/capture-engine.test.ts +0 -1144
- package/src/__tests__/capture-heuristic.test.ts +0 -171
- package/src/__tests__/cascade-forget.test.ts +0 -210
- package/src/__tests__/category-min-scores.test.ts +0 -33
- package/src/__tests__/cc8-cc1-essential-context.test.ts +0 -298
- package/src/__tests__/circuit-breaker.test.ts +0 -99
- package/src/__tests__/cluster-consolidation.test.ts +0 -712
- package/src/__tests__/confidence-metadata.test.ts +0 -125
- package/src/__tests__/confidence-tracker.test.ts +0 -249
- package/src/__tests__/conflict-advisor.test.ts +0 -206
- package/src/__tests__/conflict-escalation.test.ts +0 -149
- package/src/__tests__/conflict-lifecycle.test.ts +0 -83
- package/src/__tests__/conflict-output.test.ts +0 -85
- package/src/__tests__/conflict-store.test.ts +0 -374
- package/src/__tests__/consolidation-engine.test.ts +0 -181
- package/src/__tests__/constructive-retrieval.test.ts +0 -509
- package/src/__tests__/context-collapse-renderer.test.ts +0 -214
- package/src/__tests__/context-composer-pins.test.ts +0 -64
- package/src/__tests__/context-composer-task-selection.test.ts +0 -24
- package/src/__tests__/context-reconstructor.test.ts +0 -65
- package/src/__tests__/context-renderer.test.ts +0 -91
- package/src/__tests__/continuity-eval.test.ts +0 -275
- package/src/__tests__/continuity-schema.test.ts +0 -97
- package/src/__tests__/conversation-importer.test.ts +0 -692
- package/src/__tests__/core-recall-eval.test.ts +0 -235
- package/src/__tests__/core-summary.test.ts +0 -109
- package/src/__tests__/data-checkup.test.ts +0 -225
- package/src/__tests__/decay-exemption.test.ts +0 -84
- package/src/__tests__/dedup-actions.test.ts +0 -58
- package/src/__tests__/dedup-guard.test.ts +0 -39
- package/src/__tests__/deterministic-id.test.ts +0 -39
- package/src/__tests__/distill-lock.test.ts +0 -176
- package/src/__tests__/doctor.test.ts +0 -303
- package/src/__tests__/dream-pipeline.test.ts +0 -232
- package/src/__tests__/drill-down.test.ts +0 -108
- package/src/__tests__/embedder.test.ts +0 -122
- package/src/__tests__/emotion-decay.test.ts +0 -46
- package/src/__tests__/emotion-detector.test.ts +0 -56
- package/src/__tests__/emotion-phase1-integration.test.ts +0 -153
- package/src/__tests__/emotion-retrieval.test.ts +0 -56
- package/src/__tests__/entity-resolver.test.ts +0 -58
- package/src/__tests__/ethics-layer.test.ts +0 -476
- package/src/__tests__/event-segmenter.test.ts +0 -153
- package/src/__tests__/feature-flags-integration.test.ts +0 -54
- package/src/__tests__/frequency-tracker.test.ts +0 -113
- package/src/__tests__/graph-export.test.ts +0 -489
- package/src/__tests__/hotness-blend.test.ts +0 -76
- package/src/__tests__/ingest.test.ts +0 -360
- package/src/__tests__/interference-detector.test.ts +0 -203
- package/src/__tests__/kg-extractor.test.ts +0 -184
- package/src/__tests__/kg-store.test.ts +0 -198
- package/src/__tests__/llm-consolidation.test.ts +0 -226
- package/src/__tests__/mcp-efficiency.test.ts +0 -288
- package/src/__tests__/memory-boundaries.test.ts +0 -237
- package/src/__tests__/memory-evolution-b2-b3-e1.test.ts +0 -243
- package/src/__tests__/memory-evolution.test.ts +0 -271
- package/src/__tests__/memory-health-rebalance.test.ts +0 -144
- package/src/__tests__/memory-lint.test.ts +0 -271
- package/src/__tests__/memory-output.test.ts +0 -215
- package/src/__tests__/multi-vector.test.ts +0 -242
- package/src/__tests__/narrative-architecture.test.ts +0 -456
- package/src/__tests__/pending-review.test.ts +0 -77
- package/src/__tests__/post-retrieval-filter.test.ts +0 -178
- package/src/__tests__/ppr-traversal.test.ts +0 -256
- package/src/__tests__/prediction-engine.test.ts +0 -349
- package/src/__tests__/predictive-prospective-memory.test.ts +0 -416
- package/src/__tests__/preference-guard-smoke.test.ts +0 -211
- package/src/__tests__/preference-matcher.test.ts +0 -230
- package/src/__tests__/preference-slots.test.ts +0 -205
- package/src/__tests__/prospective-memory.test.ts +0 -283
- package/src/__tests__/query-entity-detector.test.ts +0 -171
- package/src/__tests__/query-expander-alias.test.ts +0 -89
- package/src/__tests__/query-expander.test.ts +0 -34
- package/src/__tests__/recall-governor.test.ts +0 -227
- package/src/__tests__/recall-mode.test.ts +0 -64
- package/src/__tests__/result-synthesizer.test.ts +0 -198
- package/src/__tests__/resume-context.test.ts +0 -4898
- package/src/__tests__/retrieval-trace.test.ts +0 -213
- package/src/__tests__/retriever-boundary-weight.test.ts +0 -136
- package/src/__tests__/retroactive-boost.test.ts +0 -223
- package/src/__tests__/salience-scoring.test.ts +0 -106
- package/src/__tests__/scope-inventory.test.ts +0 -200
- package/src/__tests__/scope-policy.test.ts +0 -69
- package/src/__tests__/session-checkpoint.test.ts +0 -259
- package/src/__tests__/session-distiller.test.ts +0 -611
- package/src/__tests__/session-gc.test.ts +0 -215
- package/src/__tests__/skill-engine.test.ts +0 -546
- package/src/__tests__/skill-promotion.test.ts +0 -349
- package/src/__tests__/store-scope-audit.test.ts +0 -81
- package/src/__tests__/supersede-chain.test.ts +0 -154
- package/src/__tests__/temporal-parser.test.ts +0 -241
- package/src/__tests__/temporal-validity.test.ts +0 -160
- package/src/__tests__/term-registry.test.ts +0 -121
- package/src/__tests__/tool-output-compressor.test.ts +0 -133
- package/src/__tests__/topic-tag.test.ts +0 -113
- package/src/__tests__/trusted-memory.test.ts +0 -828
- package/src/__tests__/version-manager.test.ts +0 -213
- package/src/__tests__/workflow-observation.test.ts +0 -400
- package/src/__tests__/write-verifier.test.ts +0 -122
package/.env
ADDED
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
package/.claude-plugin/CLAUDE.md
DELETED
|
@@ -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
package/.github/workflows/ci.yml
DELETED
|
@@ -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
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.”
|