recallnest 1.4.1 → 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/CLAUDE.md +7 -3
- package/README.md +202 -130
- package/README_CN.md +263 -190
- package/bin/recallnest.mjs +62 -0
- package/config.json +55 -0
- package/daily-recall.sh +23 -0
- package/integrations/setup-all.sh +31 -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 +10 -3
- package/src/access-tracker.ts +3 -2
- package/src/activity-counter.ts +109 -0
- package/src/adaptive-retrieval.ts +6 -5
- package/src/admission-control.ts +163 -0
- package/src/anchor-generator.ts +80 -0
- package/src/api-server.ts +10 -0
- package/src/audit-log.ts +122 -0
- package/src/auto-gc.ts +98 -29
- package/src/auto-recall.ts +33 -4
- package/src/capture-engine.ts +372 -23
- package/src/cascade-forget.ts +3 -2
- package/src/cli.ts +107 -5
- package/src/compat.ts +22 -0
- package/src/confidence-tracker.ts +210 -47
- package/src/conflict-store.ts +12 -3
- package/src/consolidation-engine.ts +296 -8
- package/src/context-collapse-renderer.ts +222 -0
- package/src/context-composer-stable-selection.ts +5 -1
- package/src/context-composer.ts +239 -4
- package/src/context-reconstructor.ts +404 -0
- package/src/conversation-importer.ts +441 -0
- package/src/data-checkup.ts +232 -0
- package/src/decay-engine.ts +84 -0
- package/src/distill-lock.ts +122 -0
- package/src/doctor.ts +8 -10
- package/src/dream-pipeline.ts +227 -0
- package/src/emotion-detector.ts +90 -0
- package/src/eval.ts +3 -2
- package/src/forget-engine.ts +269 -0
- package/src/frequency-tracker.ts +175 -0
- package/src/graph-export.ts +644 -0
- package/src/ingest.ts +36 -6
- package/src/interference-detector.ts +187 -0
- package/src/kg-extractor.ts +15 -24
- package/src/kg-store.ts +2 -1
- package/src/language-hook.ts +67 -0
- package/src/llm-client.ts +289 -6
- package/src/mcp-server.ts +707 -80
- package/src/memory-assets.ts +22 -5
- package/src/memory-evolution.ts +365 -0
- package/src/memory-lint.ts +429 -0
- package/src/memory-output.ts +69 -0
- package/src/memory-schema.ts +74 -2
- package/src/narrative-schema.ts +79 -0
- package/src/narrative-tagger.ts +164 -0
- package/src/pii-detector.ts +98 -0
- package/src/post-retrieval-filter.ts +76 -0
- package/src/prediction-engine.ts +253 -0
- package/src/preference-slots.ts +65 -2
- package/src/prospective-memory.ts +215 -0
- package/src/query-expander.ts +67 -0
- package/src/recall-governor.ts +183 -0
- package/src/retention-policy.ts +90 -0
- package/src/retriever.ts +828 -55
- package/src/rif.ts +34 -8
- package/src/runtime-config.ts +23 -8
- package/src/scope-inventory.ts +4 -3
- package/src/scope-policy.ts +4 -0
- package/src/session-distiller.ts +307 -0
- package/src/session-output.ts +40 -0
- package/src/session-schema.ts +37 -0
- package/src/session-store.ts +7 -2
- package/src/skill-engine.ts +208 -0
- package/src/skill-promotion.ts +293 -0
- package/src/skill-schema.ts +39 -0
- package/src/store.ts +96 -10
- package/src/topic-tag.ts +66 -0
- package/src/tracker.ts +3 -1
- package/src/ui-server.ts +80 -8
- package/src/workflow-observation-scope-review.ts +2 -1
- package/src/workflow-observation-store.ts +2 -1
- package/src/write-verifier.ts +126 -0
- package/.claude-plugin/CLAUDE.md +0 -29
- package/.claude-plugin/marketplace.json +0 -18
- package/.github/workflows/ci.yml +0 -28
- package/.mcp.json +0 -9
- package/CHANGELOG.md +0 -51
- package/DEMO.md +0 -94
- package/EVAL.md +0 -89
- package/FAILURES.md +0 -75
- package/OPERATIONS.md +0 -59
- package/ROADMAP.md +0 -198
- package/assets/recallnest-workbench.png +0 -0
- package/assets/ui/app.js +0 -807
- package/assets/ui/index.html +0 -154
- package/assets/ui/styles.css +0 -605
- package/assets/wechat-qr.jpg +0 -0
- 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/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/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/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/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/lm +0 -19
- package/plan-v1.2-distributable.md +0 -105
- package/scripts/archive-distilled-junk.ts +0 -116
- 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/distill-facts.ts +0 -305
- package/scripts/health-check.ts +0 -343
- package/scripts/incremental-ingest.sh +0 -71
- 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/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__/auto-consolidation.test.ts +0 -168
- package/src/__tests__/auto-recall.test.ts +0 -131
- package/src/__tests__/batch-dedup.test.ts +0 -65
- package/src/__tests__/capture-engine.test.ts +0 -1142
- 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__/confidence-tracker.test.ts +0 -196
- 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__/context-composer-pins.test.ts +0 -64
- package/src/__tests__/context-composer-task-selection.test.ts +0 -24
- 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__/core-recall-eval.test.ts +0 -235
- package/src/__tests__/core-summary.test.ts +0 -109
- package/src/__tests__/dedup-actions.test.ts +0 -58
- package/src/__tests__/deterministic-id.test.ts +0 -39
- package/src/__tests__/doctor.test.ts +0 -303
- package/src/__tests__/drill-down.test.ts +0 -108
- package/src/__tests__/embedder.test.ts +0 -122
- package/src/__tests__/entity-resolver.test.ts +0 -58
- package/src/__tests__/event-segmenter.test.ts +0 -153
- package/src/__tests__/hotness-blend.test.ts +0 -76
- package/src/__tests__/ingest.test.ts +0 -360
- 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__/memory-boundaries.test.ts +0 -237
- package/src/__tests__/memory-health-rebalance.test.ts +0 -144
- package/src/__tests__/memory-output.test.ts +0 -215
- package/src/__tests__/multi-vector.test.ts +0 -242
- package/src/__tests__/ppr-traversal.test.ts +0 -256
- 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 -106
- package/src/__tests__/prospective-memory.test.ts +0 -283
- package/src/__tests__/query-entity-detector.test.ts +0 -171
- package/src/__tests__/query-expander.test.ts +0 -34
- 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 -4743
- 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__/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-gc.test.ts +0 -215
- package/src/__tests__/store-scope-audit.test.ts +0 -81
- package/src/__tests__/temporal-parser.test.ts +0 -241
- package/src/__tests__/term-registry.test.ts +0 -121
- package/src/__tests__/tool-output-compressor.test.ts +0 -133
- package/src/__tests__/version-manager.test.ts +0 -213
- package/src/__tests__/workflow-observation.test.ts +0 -400
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# RecallNest Eval Baseline
|
|
2
|
-
|
|
3
|
-
- Generated: 2026-03-06T09:46:36.449Z
|
|
4
|
-
- Cases: 6
|
|
5
|
-
- Passed: 6/6
|
|
6
|
-
- Average score: 91.7%
|
|
7
|
-
|
|
8
|
-
| Case | Profile | Score | Pass | Hits | Top scopes |
|
|
9
|
-
|------|---------|-------|------|------|------------|
|
|
10
|
-
| telegram_bridge | debug | 100% | yes | 5 | asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db |
|
|
11
|
-
| openclaw_memory | writing | 87% | yes | 6 | cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c |
|
|
12
|
-
| writing_style | writing | 90% | yes | 5 | cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b |
|
|
13
|
-
| visual_style | default | 100% | yes | 5 | asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e |
|
|
14
|
-
| working_relationship | default | 73% | yes | 5 | asset:7e3c2155, memory, memory, memory, cc:6160fc10 |
|
|
15
|
-
| aws_ssh_access | debug | 100% | yes | 6 | cc:3590cd5a, cc:07d67b1c, cc:3590cd5a, cc:3590cd5a, cc:0d1e2e19 |
|
|
16
|
-
|
|
17
|
-
## Case Notes
|
|
18
|
-
|
|
19
|
-
### telegram_bridge
|
|
20
|
-
- Query: telegram bridge
|
|
21
|
-
- Score: 100%
|
|
22
|
-
- Pass: yes
|
|
23
|
-
- Hits: 5
|
|
24
|
-
- Top scopes: asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db
|
|
25
|
-
- Top snippet: [Pinned Asset] [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Summary: [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Snippet: [助手]...
|
|
26
|
-
- Matched any: telegram-cli-bridge, telegram-ai-bridge, Telegram bridge
|
|
27
|
-
- Matched all: -
|
|
28
|
-
- Matched scopes: cc, asset
|
|
29
|
-
- Forbidden matches: -
|
|
30
|
-
- Notes: Bridge maintenance and migration history should be easy to recall.
|
|
31
|
-
|
|
32
|
-
### openclaw_memory
|
|
33
|
-
- Query: OpenClaw 记忆系统
|
|
34
|
-
- Score: 87%
|
|
35
|
-
- Pass: yes
|
|
36
|
-
- Hits: 6
|
|
37
|
-
- Top scopes: cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c
|
|
38
|
-
- Top snippet: [助手] 先看看 OpenClaw 的 memory 结构。
|
|
39
|
-
- Matched any: OpenClaw, 记忆系统, memory-lancedb-pro, LanceDB
|
|
40
|
-
- Matched all: -
|
|
41
|
-
- Matched scopes: cc
|
|
42
|
-
- Forbidden matches: -
|
|
43
|
-
- Notes: Core memory architecture discussion should be recoverable.
|
|
44
|
-
|
|
45
|
-
### writing_style
|
|
46
|
-
- Query: 写作风格 口语化 不端着 可自嘲
|
|
47
|
-
- Score: 90%
|
|
48
|
-
- Pass: yes
|
|
49
|
-
- Hits: 5
|
|
50
|
-
- Top scopes: cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b
|
|
51
|
-
- Top snippet: [助手] 根据你的档案: - **医学出身,文化口工作,AI 野路子,不是程序员** - 公众号「我的AI小木屋」运营者,作者名 **小试AI** - GitHub: AliceLJY - 写作风格:口语化、不端着、可以自嘲但不说教 - 技术栈:本地 Docker(task...
|
|
52
|
-
- Matched any: 可自嘲, 写作风格
|
|
53
|
-
- Matched all: 口语化, 不端着
|
|
54
|
-
- Matched scopes: cc
|
|
55
|
-
- Forbidden matches: -
|
|
56
|
-
- Notes: User writing-style preferences should rank high.
|
|
57
|
-
|
|
58
|
-
### visual_style
|
|
59
|
-
- Query: 审美偏好 手绘涂鸦 高对比撞色
|
|
60
|
-
- Score: 100%
|
|
61
|
-
- Pass: yes
|
|
62
|
-
- Hits: 5
|
|
63
|
-
- Top scopes: asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e
|
|
64
|
-
- Top snippet: [Pinned Asset] 用户视觉审美偏好 Summary: 用户常用视觉风格是手绘涂鸦风加高对比撞色;在内容包装和配图生成时,应优先沿用这一审美方向,除非任务目标明确要求其他风格。 Snippet: [用户] 1. 给刚才写的文章生成配图(封面1张+插图1张就够,测试...
|
|
65
|
-
- Matched any: 审美偏好
|
|
66
|
-
- Matched all: 手绘涂鸦, 高对比撞色
|
|
67
|
-
- Matched scopes: cc, asset
|
|
68
|
-
- Forbidden matches: -
|
|
69
|
-
- Notes: Visual preference memories should stay stable.
|
|
70
|
-
|
|
71
|
-
### working_relationship
|
|
72
|
-
- Query: 我们相处态度
|
|
73
|
-
- Score: 73%
|
|
74
|
-
- Pass: yes
|
|
75
|
-
- Hits: 5
|
|
76
|
-
- Top scopes: asset:7e3c2155, memory, memory, memory, cc:6160fc10
|
|
77
|
-
- Top snippet: [Pinned Asset] 用户协作关系偏好 Summary: 用户明确要求与 AI 维持平等协作关系:我们是好搭子、最佳搭档,不是上下级关系。沟通和执行应体现互相补位,而非服从式口吻。 Snippet: [用户] 哎呀,我不是你老板,我们是最佳搭档啊!!!记住!!!!我...
|
|
78
|
-
- Matched any: 直接, 逻辑
|
|
79
|
-
- Matched all: -
|
|
80
|
-
- Matched scopes: cc, asset
|
|
81
|
-
- Forbidden matches: -
|
|
82
|
-
- Notes: Abstract, summarized relationship queries should work without precise keywords.
|
|
83
|
-
|
|
84
|
-
### aws_ssh_access
|
|
85
|
-
- Query: aws ssh
|
|
86
|
-
- Score: 100%
|
|
87
|
-
- Pass: yes
|
|
88
|
-
- Hits: 6
|
|
89
|
-
- Top scopes: cc:3590cd5a, cc:07d67b1c, cc:3590cd5a, cc:3590cd5a, cc:0d1e2e19
|
|
90
|
-
- Top snippet: [用户] 现在是aws bot又不在了 [助手] 这是因为之前 antigravity 用了 key2(AWS bot 的 token)登录,把 AWS bot 的 Discord session 挤掉了。虽然现在 antigravity 已经换成 key3,但 AWS 云...
|
|
91
|
-
- Matched any: AWS bot, aws bot, ssh, key2, Discord, 容器
|
|
92
|
-
- Matched all: -
|
|
93
|
-
- Matched scopes: cc
|
|
94
|
-
- Forbidden matches: -
|
|
95
|
-
- Notes: Real-world AWS access queries should use the wording the operator actually types.
|
|
96
|
-
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# RecallNest Eval Baseline
|
|
2
|
-
|
|
3
|
-
- Generated: 2026-03-06T09:11:01.487Z
|
|
4
|
-
- Cases: 5
|
|
5
|
-
- Passed: 5/5
|
|
6
|
-
- Average score: 95.3%
|
|
7
|
-
|
|
8
|
-
| Case | Profile | Score | Pass | Hits | Top scopes |
|
|
9
|
-
|------|---------|-------|------|------|------------|
|
|
10
|
-
| telegram_bridge | debug | 100% | yes | 5 | asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db |
|
|
11
|
-
| openclaw_memory | writing | 87% | yes | 6 | cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c |
|
|
12
|
-
| writing_style | writing | 90% | yes | 5 | cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b |
|
|
13
|
-
| visual_style | default | 100% | yes | 5 | asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e |
|
|
14
|
-
| aws_ssh_access | debug | 100% | yes | 6 | cc:3590cd5a, cc:07d67b1c, cc:3590cd5a, cc:3590cd5a, cc:0d1e2e19 |
|
|
15
|
-
|
|
16
|
-
## Case Notes
|
|
17
|
-
|
|
18
|
-
### telegram_bridge
|
|
19
|
-
- Query: telegram bridge
|
|
20
|
-
- Score: 100%
|
|
21
|
-
- Pass: yes
|
|
22
|
-
- Hits: 5
|
|
23
|
-
- Top scopes: asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db
|
|
24
|
-
- Top snippet: [Pinned Asset] [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Summary: [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Snippet: [助手]...
|
|
25
|
-
- Matched any: telegram-cli-bridge, telegram-ai-bridge, Telegram bridge
|
|
26
|
-
- Matched all: -
|
|
27
|
-
- Matched scopes: cc, asset
|
|
28
|
-
- Forbidden matches: -
|
|
29
|
-
- Notes: Bridge maintenance and migration history should be easy to recall.
|
|
30
|
-
|
|
31
|
-
### openclaw_memory
|
|
32
|
-
- Query: OpenClaw 记忆系统
|
|
33
|
-
- Score: 87%
|
|
34
|
-
- Pass: yes
|
|
35
|
-
- Hits: 6
|
|
36
|
-
- Top scopes: cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c
|
|
37
|
-
- Top snippet: [助手] 先看看 OpenClaw 的 memory 结构。
|
|
38
|
-
- Matched any: OpenClaw, 记忆系统, memory-lancedb-pro, LanceDB
|
|
39
|
-
- Matched all: -
|
|
40
|
-
- Matched scopes: cc
|
|
41
|
-
- Forbidden matches: -
|
|
42
|
-
- Notes: Core memory architecture discussion should be recoverable.
|
|
43
|
-
|
|
44
|
-
### writing_style
|
|
45
|
-
- Query: 写作风格 口语化 不端着 可自嘲
|
|
46
|
-
- Score: 90%
|
|
47
|
-
- Pass: yes
|
|
48
|
-
- Hits: 5
|
|
49
|
-
- Top scopes: cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b
|
|
50
|
-
- Top snippet: [助手] 根据你的档案: - **医学出身,文化口工作,AI 野路子,不是程序员** - 公众号「我的AI小木屋」运营者,作者名 **小试AI** - GitHub: AliceLJY - 写作风格:口语化、不端着、可以自嘲但不说教 - 技术栈:本地 Docker(task...
|
|
51
|
-
- Matched any: 可自嘲, 写作风格
|
|
52
|
-
- Matched all: 口语化, 不端着
|
|
53
|
-
- Matched scopes: cc
|
|
54
|
-
- Forbidden matches: -
|
|
55
|
-
- Notes: User writing-style preferences should rank high.
|
|
56
|
-
|
|
57
|
-
### visual_style
|
|
58
|
-
- Query: 审美偏好 手绘涂鸦 高对比撞色
|
|
59
|
-
- Score: 100%
|
|
60
|
-
- Pass: yes
|
|
61
|
-
- Hits: 5
|
|
62
|
-
- Top scopes: asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e
|
|
63
|
-
- Top snippet: [Pinned Asset] 用户视觉审美偏好 Summary: 用户常用视觉风格是手绘涂鸦风加高对比撞色;在内容包装和配图生成时,应优先沿用这一审美方向,除非任务目标明确要求其他风格。 Snippet: [用户] 1. 给刚才写的文章生成配图(封面1张+插图1张就够,测试...
|
|
64
|
-
- Matched any: 审美偏好
|
|
65
|
-
- Matched all: 手绘涂鸦, 高对比撞色
|
|
66
|
-
- Matched scopes: cc, asset
|
|
67
|
-
- Forbidden matches: -
|
|
68
|
-
- Notes: Visual preference memories should stay stable.
|
|
69
|
-
|
|
70
|
-
### aws_ssh_access
|
|
71
|
-
- Query: aws ssh
|
|
72
|
-
- Score: 100%
|
|
73
|
-
- Pass: yes
|
|
74
|
-
- Hits: 6
|
|
75
|
-
- Top scopes: cc:3590cd5a, cc:07d67b1c, cc:3590cd5a, cc:3590cd5a, cc:0d1e2e19
|
|
76
|
-
- Top snippet: [用户] 现在是aws bot又不在了 [助手] 这是因为之前 antigravity 用了 key2(AWS bot 的 token)登录,把 AWS bot 的 Discord session 挤掉了。虽然现在 antigravity 已经换成 key3,但 AWS 云...
|
|
77
|
-
- Matched any: AWS bot, aws bot, ssh, key2, Discord, 容器
|
|
78
|
-
- Matched all: -
|
|
79
|
-
- Matched scopes: cc
|
|
80
|
-
- Forbidden matches: -
|
|
81
|
-
- Notes: Real-world AWS access queries should use the wording the operator actually types.
|
|
82
|
-
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# RecallNest Eval Baseline
|
|
2
|
-
|
|
3
|
-
- Generated: 2026-03-06T08:18:24.009Z
|
|
4
|
-
- Cases: 5
|
|
5
|
-
- Passed: 5/5
|
|
6
|
-
- Average score: 89.3%
|
|
7
|
-
|
|
8
|
-
| Case | Profile | Score | Pass | Hits | Top scopes |
|
|
9
|
-
|------|---------|-------|------|------|------------|
|
|
10
|
-
| telegram_bridge | debug | 100% | yes | 5 | asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db |
|
|
11
|
-
| openclaw_memory | writing | 87% | yes | 6 | cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c |
|
|
12
|
-
| writing_style | writing | 90% | yes | 5 | cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b |
|
|
13
|
-
| visual_style | default | 100% | yes | 5 | asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e |
|
|
14
|
-
| aws_bot_config | debug | 70% | yes | 6 | memory, cc:d56c0e12, memory, memory, cc:a87ce7f0 |
|
|
15
|
-
|
|
16
|
-
## Case Notes
|
|
17
|
-
|
|
18
|
-
### telegram_bridge
|
|
19
|
-
- Query: telegram bridge
|
|
20
|
-
- Score: 100%
|
|
21
|
-
- Pass: yes
|
|
22
|
-
- Hits: 5
|
|
23
|
-
- Top scopes: asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db
|
|
24
|
-
- Top snippet: [Pinned Asset] [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Summary: [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Snippet: [助手]...
|
|
25
|
-
- Matched any: telegram-cli-bridge, telegram-ai-bridge, Telegram bridge
|
|
26
|
-
- Matched all: -
|
|
27
|
-
- Matched scopes: cc, asset
|
|
28
|
-
- Forbidden matches: -
|
|
29
|
-
- Notes: Bridge maintenance and migration history should be easy to recall.
|
|
30
|
-
|
|
31
|
-
### openclaw_memory
|
|
32
|
-
- Query: OpenClaw 记忆系统
|
|
33
|
-
- Score: 87%
|
|
34
|
-
- Pass: yes
|
|
35
|
-
- Hits: 6
|
|
36
|
-
- Top scopes: cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c
|
|
37
|
-
- Top snippet: [助手] 先看看 OpenClaw 的 memory 结构。
|
|
38
|
-
- Matched any: OpenClaw, 记忆系统, memory-lancedb-pro, LanceDB
|
|
39
|
-
- Matched all: -
|
|
40
|
-
- Matched scopes: cc
|
|
41
|
-
- Forbidden matches: -
|
|
42
|
-
- Notes: Core memory architecture discussion should be recoverable.
|
|
43
|
-
|
|
44
|
-
### writing_style
|
|
45
|
-
- Query: 写作风格 口语化 不端着 可自嘲
|
|
46
|
-
- Score: 90%
|
|
47
|
-
- Pass: yes
|
|
48
|
-
- Hits: 5
|
|
49
|
-
- Top scopes: cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b
|
|
50
|
-
- Top snippet: [助手] 根据你的档案: - **医学出身,文化口工作,AI 野路子,不是程序员** - 公众号「我的AI小木屋」运营者,作者名 **小试AI** - GitHub: AliceLJY - 写作风格:口语化、不端着、可以自嘲但不说教 - 技术栈:本地 Docker(task...
|
|
51
|
-
- Matched any: 可自嘲, 写作风格
|
|
52
|
-
- Matched all: 口语化, 不端着
|
|
53
|
-
- Matched scopes: cc
|
|
54
|
-
- Forbidden matches: -
|
|
55
|
-
- Notes: User writing-style preferences should rank high.
|
|
56
|
-
|
|
57
|
-
### visual_style
|
|
58
|
-
- Query: 审美偏好 手绘涂鸦 高对比撞色
|
|
59
|
-
- Score: 100%
|
|
60
|
-
- Pass: yes
|
|
61
|
-
- Hits: 5
|
|
62
|
-
- Top scopes: asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e
|
|
63
|
-
- Top snippet: [Pinned Asset] 用户视觉审美偏好 Summary: 用户常用视觉风格是手绘涂鸦风加高对比撞色;在内容包装和配图生成时,应优先沿用这一审美方向,除非任务目标明确要求其他风格。 Snippet: [用户] 1. 给刚才写的文章生成配图(封面1张+插图1张就够,测试...
|
|
64
|
-
- Matched any: 审美偏好
|
|
65
|
-
- Matched all: 手绘涂鸦, 高对比撞色
|
|
66
|
-
- Matched scopes: cc, asset
|
|
67
|
-
- Forbidden matches: -
|
|
68
|
-
- Notes: Visual preference memories should stay stable.
|
|
69
|
-
|
|
70
|
-
### aws_bot_config
|
|
71
|
-
- Query: AWS bot 配置 gpt-5.4
|
|
72
|
-
- Score: 70%
|
|
73
|
-
- Pass: yes
|
|
74
|
-
- Hits: 6
|
|
75
|
-
- Top scopes: memory, cc:d56c0e12, memory, memory, cc:a87ce7f0
|
|
76
|
-
- Top snippet: [当前阶段] - 五 Bot 稳定运行:AntiBot(本地 Opus 4.6)、睿智(本地 Gemini 3 Pro CLI)、小试AI(本地 Codex gpt-5.2-codex)、AWS-bot(Codex gpt-5.2-codex)、LanceDB Test(本...
|
|
77
|
-
- Matched any: AWS-bot, openclaw.json
|
|
78
|
-
- Matched all: -
|
|
79
|
-
- Matched scopes: cc
|
|
80
|
-
- Forbidden matches: -
|
|
81
|
-
- Notes: Operational config changes should be easy to recover.
|
|
82
|
-
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# RecallNest Eval Baseline
|
|
2
|
-
|
|
3
|
-
- Generated: 2026-03-08T08:25:34.870Z
|
|
4
|
-
- Cases: 9
|
|
5
|
-
- Passed: 8/9
|
|
6
|
-
- Average score: 90.1%
|
|
7
|
-
|
|
8
|
-
| Case | Profile | Score | Pass | Hits | Top scopes |
|
|
9
|
-
|------|---------|-------|------|------|------------|
|
|
10
|
-
| telegram_bridge | debug | 100% | yes | 5 | asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db |
|
|
11
|
-
| openclaw_memory | writing | 87% | yes | 6 | cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c |
|
|
12
|
-
| writing_style | writing | 90% | yes | 5 | cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b |
|
|
13
|
-
| visual_style | default | 100% | yes | 5 | asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e |
|
|
14
|
-
| working_relationship | default | 67% | no | 5 | asset:7e3c2155, memory, cc:57d92130, memory, memory |
|
|
15
|
-
| aws_ssh_access | debug | 100% | yes | 6 | cc:3590cd5a, cc:07d67b1c, cc:3590cd5a, cc:3590cd5a, cc:0d1e2e19 |
|
|
16
|
-
| fuzzy_bot_crash | debug | 94% | yes | 5 | cc:bb8ef732, cc:6ecc2b88, cc:6681d5e7, cc:1387b665, cc:1bad6838 |
|
|
17
|
-
| fuzzy_ai_feelings | writing | 73% | yes | 5 | cc:84a3b1b2, cc:82820c11, cc:52a15bab, cc:59542b2b, cc:852cd20c |
|
|
18
|
-
| fuzzy_image_style | default | 100% | yes | 5 | cc:722a3419, cc:7cff70c8, cc:14e244df, cc:16945beb, cc:722a3419 |
|
|
19
|
-
|
|
20
|
-
## Case Notes
|
|
21
|
-
|
|
22
|
-
### telegram_bridge
|
|
23
|
-
- Query: telegram bridge
|
|
24
|
-
- Score: 100%
|
|
25
|
-
- Pass: yes
|
|
26
|
-
- Hits: 5
|
|
27
|
-
- Top scopes: asset:12184154, cc:4bc6afd3, gemini:bdbe41c6, cc:8bfc1be5, asset:brief:ee8852db
|
|
28
|
-
- Top snippet: [Pinned Asset] [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Summary: [助手] 现在更新 telegram-cli-bridge 自己的 README(已经有旧引用)。 Snippet: [助手]...
|
|
29
|
-
- Matched any: telegram-cli-bridge, telegram-ai-bridge, Telegram bridge
|
|
30
|
-
- Matched all: -
|
|
31
|
-
- Matched scopes: cc, asset
|
|
32
|
-
- Forbidden matches: -
|
|
33
|
-
- Notes: Bridge maintenance and migration history should be easy to recall.
|
|
34
|
-
|
|
35
|
-
### openclaw_memory
|
|
36
|
-
- Query: OpenClaw 记忆系统
|
|
37
|
-
- Score: 87%
|
|
38
|
-
- Pass: yes
|
|
39
|
-
- Hits: 6
|
|
40
|
-
- Top scopes: cc:71b45899, cc:71b45899, cc:59542b2b, cc:b0b87b08, cc:09541b9c
|
|
41
|
-
- Top snippet: [助手] 先看看 OpenClaw 的 memory 结构。
|
|
42
|
-
- Matched any: OpenClaw, 记忆系统, memory-lancedb-pro, LanceDB
|
|
43
|
-
- Matched all: -
|
|
44
|
-
- Matched scopes: cc
|
|
45
|
-
- Forbidden matches: -
|
|
46
|
-
- Notes: Core memory architecture discussion should be recoverable.
|
|
47
|
-
|
|
48
|
-
### writing_style
|
|
49
|
-
- Query: 写作风格 口语化 不端着 可自嘲
|
|
50
|
-
- Score: 90%
|
|
51
|
-
- Pass: yes
|
|
52
|
-
- Hits: 5
|
|
53
|
-
- Top scopes: cc:ee847c5c, memory, cc:bf01f818, cc:d55409bf, cc:97327f1b
|
|
54
|
-
- Top snippet: [助手] 根据你的档案: - **医学出身,文化口工作,AI 野路子,不是程序员** - 公众号「我的AI小木屋」运营者,作者名 **小试AI** - GitHub: AliceLJY - 写作风格:口语化、不端着、可以自嘲但不说教 - 技术栈:本地 Docker(task...
|
|
55
|
-
- Matched any: 可自嘲, 写作风格
|
|
56
|
-
- Matched all: 口语化, 不端着
|
|
57
|
-
- Matched scopes: cc
|
|
58
|
-
- Forbidden matches: -
|
|
59
|
-
- Notes: User writing-style preferences should rank high.
|
|
60
|
-
|
|
61
|
-
### visual_style
|
|
62
|
-
- Query: 审美偏好 手绘涂鸦 高对比撞色
|
|
63
|
-
- Score: 100%
|
|
64
|
-
- Pass: yes
|
|
65
|
-
- Hits: 5
|
|
66
|
-
- Top scopes: asset:557a61f6, cc:2437f802, cc:8d0e747e, cc:f9de0d68, cc:7561947e
|
|
67
|
-
- Top snippet: [Pinned Asset] 用户视觉审美偏好 Summary: 用户常用视觉风格是手绘涂鸦风加高对比撞色;在内容包装和配图生成时,应优先沿用这一审美方向,除非任务目标明确要求其他风格。 Snippet: [用户] 1. 给刚才写的文章生成配图(封面1张+插图1张就够,测试...
|
|
68
|
-
- Matched any: 审美偏好
|
|
69
|
-
- Matched all: 手绘涂鸦, 高对比撞色
|
|
70
|
-
- Matched scopes: cc, asset
|
|
71
|
-
- Forbidden matches: -
|
|
72
|
-
- Notes: Visual preference memories should stay stable.
|
|
73
|
-
|
|
74
|
-
### working_relationship
|
|
75
|
-
- Query: 我们相处态度
|
|
76
|
-
- Score: 67%
|
|
77
|
-
- Pass: no
|
|
78
|
-
- Hits: 5
|
|
79
|
-
- Top scopes: asset:7e3c2155, memory, cc:57d92130, memory, memory
|
|
80
|
-
- Top snippet: [Pinned Asset] 用户协作关系偏好 Summary: 用户明确要求与 AI 维持平等协作关系:我们是好搭子、最佳搭档,不是上下级关系。沟通和执行应体现互相补位,而非服从式口吻。 Snippet: [用户] 哎呀,我不是你老板,我们是最佳搭档啊!!!记住!!!!我...
|
|
81
|
-
- Matched any: 逻辑
|
|
82
|
-
- Matched all: -
|
|
83
|
-
- Matched scopes: cc, asset
|
|
84
|
-
- Forbidden matches: -
|
|
85
|
-
- Notes: Abstract, summarized relationship queries should work without precise keywords.
|
|
86
|
-
|
|
87
|
-
### aws_ssh_access
|
|
88
|
-
- Query: aws ssh
|
|
89
|
-
- Score: 100%
|
|
90
|
-
- Pass: yes
|
|
91
|
-
- Hits: 6
|
|
92
|
-
- Top scopes: cc:3590cd5a, cc:07d67b1c, cc:3590cd5a, cc:3590cd5a, cc:0d1e2e19
|
|
93
|
-
- Top snippet: [用户] 现在是aws bot又不在了 [助手] 这是因为之前 antigravity 用了 key2(AWS bot 的 token)登录,把 AWS bot 的 Discord session 挤掉了。虽然现在 antigravity 已经换成 key3,但 AWS 云...
|
|
94
|
-
- Matched any: AWS bot, aws bot, ssh, key2, Discord, 容器
|
|
95
|
-
- Matched all: -
|
|
96
|
-
- Matched scopes: cc
|
|
97
|
-
- Forbidden matches: -
|
|
98
|
-
- Notes: Real-world AWS access queries should use the wording the operator actually types.
|
|
99
|
-
|
|
100
|
-
### fuzzy_bot_crash
|
|
101
|
-
- Query: 上次那个 bot 突然挂了是怎么回事来着
|
|
102
|
-
- Score: 94%
|
|
103
|
-
- Pass: yes
|
|
104
|
-
- Hits: 5
|
|
105
|
-
- Top scopes: cc:bb8ef732, cc:6ecc2b88, cc:6681d5e7, cc:1387b665, cc:1bad6838
|
|
106
|
-
- Top snippet: environment and routes the issue directly to our team for investigation. 4. Check status.anthropic.com to see whether there is an active ...
|
|
107
|
-
- Matched any: 崩溃, crash, error, 报错, 修复, docker
|
|
108
|
-
- Matched all: -
|
|
109
|
-
- Matched scopes: cc
|
|
110
|
-
- Forbidden matches: -
|
|
111
|
-
- Notes: Fuzzy colloquial query about bot crash should find debugging conversations.
|
|
112
|
-
|
|
113
|
-
### fuzzy_ai_feelings
|
|
114
|
-
- Query: 之前聊过一个关于 AI 到底有没有感受的话题
|
|
115
|
-
- Score: 73%
|
|
116
|
-
- Pass: yes
|
|
117
|
-
- Hits: 5
|
|
118
|
-
- Top scopes: cc:84a3b1b2, cc:82820c11, cc:52a15bab, cc:59542b2b, cc:852cd20c
|
|
119
|
-
- Top snippet: [用户] 9. 第三推荐:I can't tell if I'm experiencing or simulating experiencing 链接: https://www.moltbook.com/post/6fe6491e-5e9c-4371-961d-f90c4d...
|
|
120
|
-
- Matched any: 意识, experiencing
|
|
121
|
-
- Matched all: -
|
|
122
|
-
- Matched scopes: cc
|
|
123
|
-
- Forbidden matches: -
|
|
124
|
-
- Notes: Vague conversational query about AI consciousness should recall philosophical discussions.
|
|
125
|
-
|
|
126
|
-
### fuzzy_image_style
|
|
127
|
-
- Query: 那个配图风格轮换的逻辑是怎么搞的
|
|
128
|
-
- Score: 100%
|
|
129
|
-
- Pass: yes
|
|
130
|
-
- Hits: 5
|
|
131
|
-
- Top scopes: cc:722a3419, cc:7cff70c8, cc:14e244df, cc:16945beb, cc:722a3419
|
|
132
|
-
- Top snippet: [助手] 好,搞清楚了。结构是: - `~/.openclaw-antigravity/` 挂载到容器的 `/home/node/.openclaw`(配置 + workspace) - workspace 文件(MEMORY.md、scripts、images 等)是 A...
|
|
133
|
-
- Matched any: 风格, style, 轮换, catalog, 配图
|
|
134
|
-
- Matched all: -
|
|
135
|
-
- Matched scopes: cc
|
|
136
|
-
- Forbidden matches: -
|
|
137
|
-
- Notes: Casual question about image style rotation should find implementation discussions.
|
|
138
|
-
|
package/lm
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# RecallNest CLI shortcut
|
|
3
|
-
# Usage:
|
|
4
|
-
# lm search "keywords" — search memory
|
|
5
|
-
# lm ingest — ingest all sources
|
|
6
|
-
# lm ingest --source cc — ingest Claude Code only
|
|
7
|
-
# lm stats — show stats
|
|
8
|
-
# lm reset --yes — reset index
|
|
9
|
-
|
|
10
|
-
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
11
|
-
|
|
12
|
-
# Load .env if present (CLI also loads it, this is for standalone use)
|
|
13
|
-
if [ -f "$SCRIPT_DIR/.env" ]; then
|
|
14
|
-
set -a
|
|
15
|
-
source "$SCRIPT_DIR/.env"
|
|
16
|
-
set +a
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
cd "$SCRIPT_DIR" && bun run src/cli.ts "$@"
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# RecallNest v1.2: 首个可传播版本 Plan
|
|
2
|
-
|
|
3
|
-
> 目标:别人 15 分钟能跑起来,30 分钟能感知价值
|
|
4
|
-
> 负责人:CC (实现) + 用户 (审批)
|
|
5
|
-
> 预计:3-4 天
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 阻塞项(必须修,按优先级排)
|
|
10
|
-
|
|
11
|
-
### B1: `recallnest doctor` 命令(新增) ✅ DONE
|
|
12
|
-
**问题**:用户装完后没有一键验证手段,每个环节都可能静默失败
|
|
13
|
-
**方案**:新增 `lm doctor` 子命令,检查清单:
|
|
14
|
-
- [x] Bun 运行时可用?(检测版本)
|
|
15
|
-
- [x] Jina API key 已配置?(读 .env)
|
|
16
|
-
- [x] Jina API key 有效?(发一个测试 embedding 请求)
|
|
17
|
-
- [x] CC transcript 路径可访问?(auto-detect 或 config)
|
|
18
|
-
- [x] LanceDB 数据目录可写?
|
|
19
|
-
- [x] 已有索引?多少条?
|
|
20
|
-
- 输出:绿色 PASS / 红色 FAIL + 修复建议
|
|
21
|
-
|
|
22
|
-
### B2: README 安装体验重写 ✅ DONE
|
|
23
|
-
**问题**:Bun 未提及、Jina key 获取无引导、步骤跳跃
|
|
24
|
-
**方案**:
|
|
25
|
-
- [x] Prerequisites 段:明确列出 Bun ≥1.0 + Node ≥20(Bun 优先,Node 作为 fallback 说明)
|
|
26
|
-
- [x] 快速开始改为 5 步 copy-paste:clone → install → 配 key → doctor → search
|
|
27
|
-
- [x] 每步附带预期输出(用户知道"成功了"长什么样)
|
|
28
|
-
- [x] 添加 "Troubleshooting" 段:Bun not found / Jina 401 / 路径不存在
|
|
29
|
-
|
|
30
|
-
### B3: Jina API key 前置验证 ✅ DONE
|
|
31
|
-
**问题**:config 加载成功,但第一次 ingest 才报 embedding 失败,错误信息是 OpenAI SDK 的原始 401
|
|
32
|
-
**方案**:
|
|
33
|
-
- [x] `ingest` 命令启动时,先调 embedder 发一个测试请求(embed "test")
|
|
34
|
-
- [x] 失败则立即报错:`Jina API key invalid or missing. Get one at https://jina.ai/embeddings/`
|
|
35
|
-
- [x] `doctor` 命令复用同一验证逻辑
|
|
36
|
-
|
|
37
|
-
### B4: Gemini 支持诚实化 ✅ DONE
|
|
38
|
-
**问题**:README 说支持 Gemini CLI,config 里有 gemini 源,但实际 Gemini 会话是加密 protobuf,解析不了
|
|
39
|
-
**方案**:
|
|
40
|
-
- [x] README 中 Gemini 行标注为 `Coming soon`(不是 ✅)
|
|
41
|
-
- [x] config.json.example 中移除 gemini source(新用户不会误配)
|
|
42
|
-
- [x] ingest 遇到 gemini source 时打印明确 warning:`Gemini CLI sessions are encrypted protobuf; skipping`
|
|
43
|
-
- [x] doctor 显示 Gemini 状态为 warn(已有配置的用户看到明确提示)
|
|
44
|
-
- 不删代码,保留未来扩展能力
|
|
45
|
-
|
|
46
|
-
### B5: 配置路径健壮化 ✅ DONE
|
|
47
|
-
**问题**:`./data/lancedb` 是相对路径,换目录就炸;auto-detect 失败后建议不够具体
|
|
48
|
-
**方案**:
|
|
49
|
-
- [x] config.json.example 默认路径改为 `~/.recallnest/data/lancedb`(绝对,用户无感)
|
|
50
|
-
- [x] 首次运行自动创建目录(validateStoragePath 已有 mkdirSync recursive)
|
|
51
|
-
- [x] auto-detect 失败时,给出完整示例(含用户名的真实路径)
|
|
52
|
-
- [x] config.json 加入 .gitignore,用户配置不被 git 覆盖
|
|
53
|
-
- [x] findConfigPath 失败时提示 `cp config.json.example config.json`
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 加分项(做了更好,不阻塞发布)
|
|
58
|
-
|
|
59
|
-
### P1: Demo 查询内置 ✅ DONE
|
|
60
|
-
- [x] `lm demo` 命令:用 3 个内置 query 跑搜索,展示结果格式
|
|
61
|
-
- [x] 显示索引统计 + 每条结果的分数/来源/预览
|
|
62
|
-
|
|
63
|
-
### P2: 一键安装脚本
|
|
64
|
-
- [ ] `curl -fsSL https://raw.githubusercontent.com/.../install.sh | bash`
|
|
65
|
-
- [ ] 检测 Bun → clone → npm install → 提示配 key → 跑 doctor
|
|
66
|
-
- [ ] 可以 Q2 再做,现在 README 手动步骤够用
|
|
67
|
-
|
|
68
|
-
### P3: CI 基础 ✅ DONE
|
|
69
|
-
- [x] GitHub Actions:push/PR 时跑 `doctor --ci` + TypeScript check
|
|
70
|
-
- [x] `lm doctor --ci` 模式跳过 API key 在线验证
|
|
71
|
-
|
|
72
|
-
### P4: CHANGELOG.md ✅ DONE
|
|
73
|
-
- [x] v1.0.0 到 v1.2.0 的变更记录
|
|
74
|
-
- [x] 后续每个 release 维护
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 不做的事(明确排除)
|
|
79
|
-
|
|
80
|
-
- ❌ 不做 Docker 化(用户群是 CLI/MCP 用户,不是 Docker 用户)
|
|
81
|
-
- ❌ 不做 NPM 发布(先 git clone 模式验证需求)
|
|
82
|
-
- ❌ 不做 UI 重写(现有 UI 够用,不是本次重点)
|
|
83
|
-
- ❌ 不做多用户支持(单 operator 场景)
|
|
84
|
-
- ❌ 不重写检索逻辑(已经够好,不是本次范围)
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## 执行顺序
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
Day 1: B1 (doctor) + B3 (Jina 验证) — 核心安全网 ✅
|
|
92
|
-
Day 2: B5 (路径健壮化) + B4 (Gemini 诚实化) + B2 (README 重写) ✅
|
|
93
|
-
Day 3: P1 (demo 查询) + P3 (CI) + P4 (CHANGELOG) ✅
|
|
94
|
-
Day 4: 自测完整流程
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## 验收标准
|
|
100
|
-
|
|
101
|
-
1. 全新 macOS 机器(有 Bun),从 clone 到第一条搜索结果 ≤ 15 分钟
|
|
102
|
-
2. `lm doctor` 全绿
|
|
103
|
-
3. Jina key 错误时,3 秒内给出明确修复建议
|
|
104
|
-
4. README 无需翻代码即可完成安装
|
|
105
|
-
5. `lm search "telegram bridge"` 返回有意义结果
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
/**
|
|
3
|
-
* Archive raw fact fragments that have already been distilled.
|
|
4
|
-
* Targets: entries in distill-completed scopes with importance < 0.4, no L0, category=fact.
|
|
5
|
-
* Action: set tier="archived", importance=0.05 — they won't surface but data isn't lost.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* bun scripts/archive-distilled-junk.ts --dry-run # preview
|
|
9
|
-
* bun scripts/archive-distilled-junk.ts # execute
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import fs from "fs";
|
|
13
|
-
import path from "path";
|
|
14
|
-
import { loadDotEnv, loadConfig, expandHome } from "../src/runtime-config.js";
|
|
15
|
-
import { loadLanceDB } from "../src/store.js";
|
|
16
|
-
|
|
17
|
-
loadDotEnv();
|
|
18
|
-
const config = loadConfig();
|
|
19
|
-
const dryRun = process.argv.includes("--dry-run");
|
|
20
|
-
|
|
21
|
-
const PROGRESS_FILE = path.join(import.meta.dir, "..", "data", "distill-progress.json");
|
|
22
|
-
|
|
23
|
-
async function main() {
|
|
24
|
-
// Load distill progress to know which scopes are done
|
|
25
|
-
const progress = JSON.parse(fs.readFileSync(PROGRESS_FILE, "utf-8"));
|
|
26
|
-
const completedScopes = new Set<string>(progress.completedScopes);
|
|
27
|
-
console.log(`=== Archive distilled junk${dryRun ? " (dry run)" : ""} ===\n`);
|
|
28
|
-
console.log(` Distill-completed scopes: ${completedScopes.size}`);
|
|
29
|
-
|
|
30
|
-
const lancedb = await loadLanceDB();
|
|
31
|
-
const dbPath = expandHome(config.database?.path || "data/lancedb");
|
|
32
|
-
const db = await lancedb.connect(dbPath);
|
|
33
|
-
const table = await db.openTable("memories");
|
|
34
|
-
|
|
35
|
-
// Read all fact entries
|
|
36
|
-
const allFacts = await table.query()
|
|
37
|
-
.where("category = 'fact'")
|
|
38
|
-
.select(["id", "text", "vector", "category", "scope", "importance", "timestamp", "metadata"])
|
|
39
|
-
.toArray();
|
|
40
|
-
|
|
41
|
-
console.log(` Total fact entries: ${allFacts.length}`);
|
|
42
|
-
|
|
43
|
-
// Filter: in completed scope, importance < 0.4, no L0
|
|
44
|
-
const toArchive: any[] = [];
|
|
45
|
-
const sampleJunk: string[] = [];
|
|
46
|
-
|
|
47
|
-
for (const row of allFacts) {
|
|
48
|
-
const scope = (row.scope as string) || "";
|
|
49
|
-
if (!completedScopes.has(scope)) continue;
|
|
50
|
-
|
|
51
|
-
const imp = Number(row.importance);
|
|
52
|
-
if (imp >= 0.4) continue;
|
|
53
|
-
|
|
54
|
-
const metaStr = (row.metadata as string) || "{}";
|
|
55
|
-
let meta: Record<string, unknown>;
|
|
56
|
-
try { meta = JSON.parse(metaStr); } catch { continue; }
|
|
57
|
-
|
|
58
|
-
// Has L0 = already a quality entry, skip
|
|
59
|
-
if (typeof meta.l0_abstract === "string" && meta.l0_abstract.length > 0) continue;
|
|
60
|
-
|
|
61
|
-
// Mark as archived
|
|
62
|
-
meta.tier = "archived";
|
|
63
|
-
meta.archived_reason = "distilled-junk-cleanup-2026-03-26";
|
|
64
|
-
|
|
65
|
-
toArchive.push({
|
|
66
|
-
id: row.id,
|
|
67
|
-
text: row.text,
|
|
68
|
-
vector: Array.from(row.vector as Iterable<number>),
|
|
69
|
-
category: row.category,
|
|
70
|
-
scope: scope,
|
|
71
|
-
importance: 0.05, // near-zero so it never surfaces
|
|
72
|
-
timestamp: Number(row.timestamp),
|
|
73
|
-
metadata: JSON.stringify(meta),
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// Collect samples
|
|
77
|
-
if (sampleJunk.length < 10) {
|
|
78
|
-
const text = (row.text as string).slice(0, 80);
|
|
79
|
-
sampleJunk.push(` ${(row.id as string).slice(0, 8)} imp=${imp.toFixed(2)} scope=${scope.slice(0, 15)} | ${text}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
console.log(` Junk to archive: ${toArchive.length}`);
|
|
84
|
-
console.log(` Would keep: ${allFacts.length - toArchive.length} fact entries\n`);
|
|
85
|
-
|
|
86
|
-
if (sampleJunk.length > 0) {
|
|
87
|
-
console.log(` Sample junk:\n${sampleJunk.join("\n")}\n`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (dryRun) {
|
|
91
|
-
console.log(` (dry run — no changes made)`);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (toArchive.length === 0) {
|
|
96
|
-
console.log(` Nothing to archive.`);
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Batch update
|
|
101
|
-
const batchSize = 1000;
|
|
102
|
-
for (let i = 0; i < toArchive.length; i += batchSize) {
|
|
103
|
-
const batch = toArchive.slice(i, i + batchSize);
|
|
104
|
-
const ids = batch.map((r: any) => `'${r.id.replace(/'/g, "''")}'`).join(",");
|
|
105
|
-
await table.delete(`id IN (${ids})`);
|
|
106
|
-
await table.add(batch);
|
|
107
|
-
console.log(` Batch ${Math.floor(i / batchSize) + 1}: archived ${batch.length} entries`);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
console.log(`\nDone. Archived ${toArchive.length} junk fact entries (importance → 0.05, tier → archived).`);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
main().catch(err => {
|
|
114
|
-
console.error("Archive failed:", err);
|
|
115
|
-
process.exit(1);
|
|
116
|
-
});
|