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
package/README_CN.md
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
[](https://bun.sh)
|
|
14
14
|
[](https://lancedb.com)
|
|
15
|
-
[](https://modelcontextprotocol.io)
|
|
16
|
+
[](https://github.com/AliceLJY/recallnest)
|
|
16
17
|
[](https://github.com/AliceLJY/recallnest)
|
|
17
18
|
|
|
18
19
|
[English](README.md) | **简体中文** | [Roadmap](ROADMAP.md)
|
|
@@ -23,52 +24,22 @@
|
|
|
23
24
|
|
|
24
25
|
## 为什么需要 RecallNest?
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
编程 Agent 每开一个窗口就失忆。项目配置、调试决策、实体映射——散落在 Claude Code、Codex、Gemini CLI 三个终端里,互相不通。
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
RecallNest 的解法:**一个 LanceDB 驱动的记忆层,三个终端共读共写**。一个窗口存入的上下文,另一个窗口自动召回。会话退出时 checkpoint,启动时 resume。记忆会衰减、演化、自组织——不是简单的日志堆积。
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
>
|
|
32
|
-
> *(切到 Codex)*
|
|
33
|
-
>
|
|
34
|
-
> **你:**"配置路径是……等下让我再找找。"😤
|
|
35
|
-
>
|
|
36
|
-
> *(第二天,新开 Claude Code 窗口)*
|
|
37
|
-
>
|
|
38
|
-
> **你:**"这个 bug 上周刚修过!方案是……"
|
|
39
|
-
>
|
|
40
|
-
> **Agent:**"我没有之前会话的上下文。"🤷
|
|
31
|
+
### 基准测试:LongMemEval (ICLR 2025)
|
|
41
32
|
|
|
42
|
-
|
|
33
|
+
在 6 项记忆能力、500 个问题上评估([评测方法](https://arxiv.org/abs/2407.15168)):
|
|
43
34
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
> *(第二天,新窗口)*
|
|
51
|
-
>
|
|
52
|
-
> **Agent:**(resume_context 自动触发)"接续昨天 —— Docker 端口冲突已通过……解决。"✅
|
|
35
|
+
| | RecallNest | 纯向量基线 | 差值 |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| 总体准确率 | **29.6%** | 24.2% | **+5.4pp** |
|
|
38
|
+
| 用户事实 | **64.3%** | 52.9% | +11.4pp |
|
|
39
|
+
| 知识更新 | **43.6%** | 42.3% | +1.3pp |
|
|
40
|
+
| 弃权率 | **55.6%** | 67.8% | **-12.2pp** |
|
|
53
41
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
### 能力一览
|
|
57
|
-
|
|
58
|
-
| | 能力 |
|
|
59
|
-
|---|---|
|
|
60
|
-
| **CC Plugin** | 一行命令装入 Claude Code,无需手动配置 MCP |
|
|
61
|
-
| **共享索引** | Claude Code、Codex、Gemini CLI 共用同一个 LanceDB 存储 |
|
|
62
|
-
| **双通道接入** | MCP(stdio)给 CLI 工具 + HTTP API 给自定义 Agent |
|
|
63
|
-
| **一键接入** | 集成脚本同时安装 MCP 和 continuity 规则 |
|
|
64
|
-
| **混合检索** | 向量 + BM25 + 重排序 + Weibull 衰减 + 分层提升 |
|
|
65
|
-
| **会话连续性** | `checkpoint_session` + `resume_context` 跨窗口恢复 |
|
|
66
|
-
| **Workflow Observation** | 专门的 append-only 工作流观测层,不混入普通 memory |
|
|
67
|
-
| **结构化资产** | Pin、Brief、Distill —— 不只是原始日志 |
|
|
68
|
-
| **显式升级** | Evidence → Durable Memory,带冲突守卫和合并决议 |
|
|
69
|
-
| **6 类记忆** | profile、preferences、entities、events、cases、patterns |
|
|
70
|
-
| **4 套检索策略** | default、writing、debug、fact-check —— 按任务类型调优 |
|
|
71
|
-
| **多源导入** | 导入三个终端已有的对话历史 |
|
|
42
|
+
**全部 6 项胜出或持平**,无任何退步。混合检索管线(BM25 + 向量 + 时效性 + RIF 去重)比纯向量搜索多召回 12.2% 的相关上下文。
|
|
72
43
|
|
|
73
44
|
---
|
|
74
45
|
|
|
@@ -140,6 +111,117 @@ bun run src/cli.ts doctor
|
|
|
140
111
|
|
|
141
112
|
---
|
|
142
113
|
|
|
114
|
+
## Web UI
|
|
115
|
+
|
|
116
|
+
<p align="center">
|
|
117
|
+
<img src="assets/dashboard.png" alt="RecallNest Dashboard" width="800" />
|
|
118
|
+
<br><em>Dashboard —— 总量、类别分布、健康评分、增长趋势一目了然。</em>
|
|
119
|
+
</p>
|
|
120
|
+
|
|
121
|
+
<p align="center">
|
|
122
|
+
<img src="assets/screenshots/ui-full.png" alt="RecallNest Search Workbench" width="800" />
|
|
123
|
+
<br><em>Search Workbench —— 混合检索 + Topic Tag 过滤 + 4 套检索策略 + Skills 浏览 + 资产管理。</em>
|
|
124
|
+
</p>
|
|
125
|
+
|
|
126
|
+
<p align="center">
|
|
127
|
+
<img src="assets/knowledge-graph.png" alt="RecallNest Knowledge Graph" width="800" />
|
|
128
|
+
<br><em>Knowledge Graph —— 交互式力导向图,语义桥接揭示跨域隐藏关联。</em>
|
|
129
|
+
</p>
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
bun run src/ui-server.ts
|
|
133
|
+
# → http://localhost:4317
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 核心能力
|
|
139
|
+
|
|
140
|
+
### 接入与安装
|
|
141
|
+
|
|
142
|
+
| 能力 | 说明 |
|
|
143
|
+
|---|---|
|
|
144
|
+
| **CC Plugin** | 一行命令装入 Claude Code,无需手动配置 MCP |
|
|
145
|
+
| **共享索引** | Claude Code、Codex、Gemini CLI 共用同一个 LanceDB 存储 |
|
|
146
|
+
| **双通道接入** | MCP(stdio)给 CLI 工具 + HTTP API 给自定义 Agent |
|
|
147
|
+
| **一键接入** | 集成脚本同时安装 MCP 和 continuity 规则 |
|
|
148
|
+
|
|
149
|
+
### 检索与连续性
|
|
150
|
+
|
|
151
|
+
| 能力 | 说明 |
|
|
152
|
+
|---|---|
|
|
153
|
+
| **混合检索** | 6 通道:向量 + BM25 + L0/L1/L2 多向量 + KG 图(PPR) |
|
|
154
|
+
| **4 套检索策略** | default、writing、debug、fact-check —— 按任务类型调优 |
|
|
155
|
+
| **会话连续性** | `checkpoint_session` + `resume_context`(full/light/summary 三种模式)+ 仓库状态守卫 |
|
|
156
|
+
| **会话蒸馏** | 3 层对话压缩:微缩 → LLM 结构化摘要 → 知识提取 |
|
|
157
|
+
| **对话导入** | 支持 Claude Code、Claude.ai、ChatGPT、Slack、纯文本 |
|
|
158
|
+
| **Topic Tags** | scope 内 topic 分区,自动检测,搜索时可过滤 |
|
|
159
|
+
|
|
160
|
+
### 记忆生命周期与治理
|
|
161
|
+
|
|
162
|
+
| 能力 | 说明 |
|
|
163
|
+
|---|---|
|
|
164
|
+
| **记忆演化** | Supersede 链、衰减评分、LLM 重要性、聚合、归档 |
|
|
165
|
+
| **显式升级** | Evidence → Durable Memory,带冲突守卫、合并决议、审计日志 |
|
|
166
|
+
| **隐私分级** | 4 级(`ephemeral` / `private` / `durable` / `shared`)+ 级联遗忘 |
|
|
167
|
+
| **准入控制** | 写入时门控:噪音过滤、重要性下限、去重、限流 |
|
|
168
|
+
| **Memory Lint** | 矛盾、重复、过期、孤儿检测 + 健康评分 |
|
|
169
|
+
| **离线整合** | `dream` 命令:聚类、合并、修剪积累的记忆 |
|
|
170
|
+
|
|
171
|
+
### 推理与结构
|
|
172
|
+
|
|
173
|
+
| 能力 | 说明 |
|
|
174
|
+
|---|---|
|
|
175
|
+
| **Knowledge Graph** | 实体关系图 + PPR 算法,支持多跳问题 |
|
|
176
|
+
| **建构式检索** | 多源候选扩展 + 溯源锚定的上下文重建 |
|
|
177
|
+
| **叙事架构** | 三层自传式元数据(生命阶段 → 一般事件 → 具体事件) |
|
|
178
|
+
| **Skill Memory** | 存储、检索、自动提升来自重复模式的可执行技能 |
|
|
179
|
+
| **预测式提醒** | 行为信号预测引擎,主动浮现"你可能需要这个" |
|
|
180
|
+
| **6 类记忆** | profile、preferences、entities、events、cases、patterns —— 类别分化合并策略 |
|
|
181
|
+
|
|
182
|
+
### 可视化与运维
|
|
183
|
+
|
|
184
|
+
| 能力 | 说明 |
|
|
185
|
+
|---|---|
|
|
186
|
+
| **Dashboard** | Web UI 首页:统计卡片、类别分布、增长趋势、健康概览 |
|
|
187
|
+
| **Workflow Observation** | 专门的 append-only 工作流观测层,不混入普通 memory |
|
|
188
|
+
| **结构化资产** | Pin、Brief、Distill —— 不只是原始日志 |
|
|
189
|
+
| **Data Checkup** | 记忆存储数据质量健康检查 |
|
|
190
|
+
| **导出图谱** | 导出交互式 HTML 知识图谱可视化 |
|
|
191
|
+
| **批量操作** | 单次调用存储最多 20 条记忆,自带去重 |
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## v2.1 新增:记忆哲学驱动的架构升级
|
|
196
|
+
|
|
197
|
+
v2.0 建立了完整的记忆操作平台;v2.1 加入了记忆哲学驱动的记忆行为。
|
|
198
|
+
|
|
199
|
+
来自 9 个记忆哲学研究维度的 5 项工程升级:
|
|
200
|
+
|
|
201
|
+
- **情绪感知衰减** *(情感记忆理论)* —— 带有强烈情绪的记忆衰减慢 20-30%。基于关键词的情绪检测计算 `salience`(记忆显著性),注入 Weibull 半衰期公式和重新平衡的 4 因子演化评分。零 LLM 成本。
|
|
202
|
+
|
|
203
|
+
- **记忆伦理层** *(遗忘权 / GDPR 第 17 条)* —— 四级隐私:`ephemeral`(临时)/ `private`(私密)/ `durable`(持久)/ `shared`(共享)。级联遗忘引擎贯穿 KG 三元组、演化链、Pin 资产和摘要。完整审计日志。`forget_memory` MCP 工具支持 Agent 驱动的删除。
|
|
204
|
+
|
|
205
|
+
- **自传叙事架构** *(叙事身份理论 / Conway 三层模型)* —— 记忆标注 `生命阶段 → 一般事件 → 具体事件` 层级,正交于现有 6 类别。检索自动拉取叙事兄弟。上下文渲染按生命阶段分组。支持中英文的规则式标注器。
|
|
206
|
+
|
|
207
|
+
- **建构式检索** *(模拟理论 / Michaelian)* —— 不再返回原始存储文本,而是从扩展候选集(KG 邻居 + 演化链 + 聚类成员 + 叙事兄弟)中重建上下文。Source-map 语义覆盖率替代词汇重叠。矛盾检测与标记。
|
|
208
|
+
|
|
209
|
+
- **预测式前瞻记忆** *(精神时间旅行 / Tulving)* —— 启发式预测引擎从行为信号中浮现"你可能需要这个"提醒:过期的 checkpoint 待办事项、被纠正的工作流观察、高频休眠记忆和未覆盖的查询主题。零 LLM 成本。7 天未接受自动过期。
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## v2.2 新增:检索质量强化
|
|
214
|
+
|
|
215
|
+
v2.1 加入了哲学记忆行为;v2.2 补齐前沿扫描(ACC、PI-LLM、TSM)发现的最后三个引擎层空白。
|
|
216
|
+
|
|
217
|
+
- **记忆置信度元标签** *(ACC / 双过程不确定性量化)* —— 每条记忆携带结构化 `ConfidenceMetadata`(分数 + 可靠性层级:`direct` 用户亲述 / `inferred` LLM 推断 / `hearsay` 二手转述)。写入时根据 source 自动赋值(manual=0.9, agent=0.7, conversation_import=0.5)。检索评分加权置信度。`resume_context` 对低置信条目标注 `[低置信]`。
|
|
218
|
+
|
|
219
|
+
- **干扰检测 + 主动遗忘门** *(PI-LLM / SleepGate)* —— 语义聚簇检测识别竞争检索的近重复记忆群。增强版 RIF 每簇仅保留 top-K(默认 3),多余的降权 50% 而非删除。写入时预警:scope 内累积 ≥5 条高相似活跃记忆时,最弱的标记 `pending_review`。`data_checkup` 报告干扰密度。
|
|
220
|
+
|
|
221
|
+
- **时间有效性窗口** *(TSM / TiMem / Zep)* —— `store_memory` 接受 `validUntil`(过期时间)和 `eventTime`(事件发生时间)。`search_memory` 支持 `validAt`(时间点查询)和 `includeExpired`(降权 80% 而非隐藏)。auto-GC 对过期记忆施加 2 倍衰减加速。
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
143
225
|
## 架构
|
|
144
226
|
|
|
145
227
|
```
|
|
@@ -157,7 +239,7 @@ bun run src/cli.ts doctor
|
|
|
157
239
|
│ 集成层 │
|
|
158
240
|
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
|
|
159
241
|
│ │ MCP Server │ │ HTTP API Server │ │
|
|
160
|
-
│ │
|
|
242
|
+
│ │ 41 个工具 │ │ 21 个端点 │ │
|
|
161
243
|
│ └─────────┬───────────┘ └──────────┬─────────────────┘ │
|
|
162
244
|
└────────────┼─────────────────────────┼───────────────────┘
|
|
163
245
|
└──────────┬──────────────┘
|
|
@@ -172,7 +254,7 @@ bun run src/cli.ts doctor
|
|
|
172
254
|
│ └────────────┘ └────────────┘ └──────────────────────┘ │
|
|
173
255
|
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
|
|
174
256
|
│ │ 衰减引擎 │ │ 冲突引擎 │ │ 捕获引擎 │ │
|
|
175
|
-
│ │(Weibull) │ │(审计 +
|
|
257
|
+
│ │(Weibull) │ │(审计 + │ │(evidence → durable)│ │
|
|
176
258
|
│ │ │ │ 合并) │ │ │ │
|
|
177
259
|
│ └────────────┘ └────────────┘ └──────────────────────┘ │
|
|
178
260
|
└──────────────────────────┬───────────────────────────────┘
|
|
@@ -181,164 +263,117 @@ bun run src/cli.ts doctor
|
|
|
181
263
|
│ 存储层 │
|
|
182
264
|
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
|
|
183
265
|
│ │ LanceDB │ │ Jina Embeddings v5 │ │
|
|
184
|
-
│ │(向量 + 列式存储)
|
|
266
|
+
│ │(向量 + 列式存储) │ │(1024 维,任务感知) │ │
|
|
185
267
|
│ └─────────────────────┘ └────────────────────────────┘ │
|
|
186
268
|
└──────────────────────────────────────────────────────────┘
|
|
187
269
|
```
|
|
188
270
|
|
|
271
|
+
### 内部设计
|
|
272
|
+
|
|
273
|
+
- **L0 / L1 / L2 动态折叠** —— 每条记忆存储 3 个粒度层(一句话 / 要点概要 / 完整内容);检索时根据相关性分数和 token 预算动态选择返回哪个层级
|
|
274
|
+
- **Weibull 衰减 + 情绪调制** —— 记忆沿参数化 Weibull 曲线衰减;情绪显著性可额外延长半衰期最高 30%
|
|
275
|
+
- **向量预筛 + LLM 去重** —— 90% 的去重决策用低成本余弦相似度(≥ 0.92);仅临界情况调用 LLM 判断
|
|
276
|
+
- **类别分化合并策略** —— `profile` 和 `preferences` 采用冲突合并(新版覆盖);`events` 和 `cases` 采用追加(保留历史)
|
|
277
|
+
- **展示分 vs 淘汰分双轨制** —— 检索使用双轨评分:tier floor 防止核心记忆被淘汰,decay boost 让新鲜记忆临时浮现而不永久挤掉稳定记忆
|
|
278
|
+
|
|
189
279
|
> 完整架构详解:[`docs/architecture.md`](docs/architecture.md)
|
|
190
280
|
|
|
191
281
|
---
|
|
192
282
|
|
|
193
|
-
##
|
|
283
|
+
## 接口
|
|
194
284
|
|
|
195
|
-
RecallNest
|
|
285
|
+
RecallNest 提供两种接口:
|
|
196
286
|
|
|
197
|
-
- **MCP** —— 给 Claude Code、Gemini CLI、Codex
|
|
198
|
-
- **HTTP API** —— 给自定义 Agent
|
|
287
|
+
- **MCP** —— 给 Claude Code、Gemini CLI、Codex 使用(原生工具访问)
|
|
288
|
+
- **HTTP API** —— 给自定义 Agent、SDK 应用和任何 HTTP 客户端使用
|
|
199
289
|
|
|
200
290
|
### Agent 框架示例
|
|
201
291
|
|
|
202
|
-
|
|
292
|
+
示例代码位于 [`integrations/examples/`](integrations/examples/):
|
|
203
293
|
|
|
204
|
-
| 框架 |
|
|
205
|
-
|
|
294
|
+
| 框架 | 示例 | 语言 |
|
|
295
|
+
|------|------|------|
|
|
206
296
|
| [Claude Agent SDK](integrations/examples/claude-agent-sdk/) | `memory-agent.ts` | TypeScript |
|
|
207
297
|
| [OpenAI Agents SDK](integrations/examples/openai-agents-sdk/) | `memory-agent.py` | Python |
|
|
208
298
|
| [LangChain](integrations/examples/langchain/) | `memory-chain.py` | Python |
|
|
209
299
|
|
|
210
300
|
---
|
|
211
301
|
|
|
212
|
-
## 核心特性
|
|
213
|
-
|
|
214
|
-
### 混合检索
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
查询 → 向量嵌入 ──┐
|
|
218
|
-
├── 混合融合 → 重排序 → Weibull 衰减 → 过滤 → Top-K
|
|
219
|
-
查询 → BM25 全文 ─┘
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
- **向量搜索** —— 基于 LanceDB ANN 的语义相似度匹配
|
|
223
|
-
- **BM25 全文搜索** —— 基于 LanceDB FTS 的精确关键词匹配
|
|
224
|
-
- **混合融合** —— 向量 + BM25 组合评分
|
|
225
|
-
- **重排序** —— Jina 交叉编码器重排
|
|
226
|
-
- **衰减 + 分层** —— Weibull 时间衰减模型,Core / Working / Peripheral 三层
|
|
227
|
-
|
|
228
|
-
### 会话连续性
|
|
229
|
-
|
|
230
|
-
跨窗口工作流的核心能力:
|
|
231
|
-
|
|
232
|
-
- **`checkpoint_session`** —— 快照当前工作状态(决策、未完成项、下一步)
|
|
233
|
-
- **repo-state 守卫** —— 保存 checkpoint 前会清洗 `git status` / modified-file 文本,避免易变 repo 状态污染后续 handoff
|
|
234
|
-
- **`resume_context`** —— 从 checkpoint + 长期记忆 + pin 编排启动上下文
|
|
235
|
-
- **托管规则** —— 集成脚本自动安装 continuity 规则,新窗口自动触发 `resume_context`
|
|
236
|
-
|
|
237
|
-
### Workflow Observation
|
|
238
|
-
|
|
239
|
-
RecallNest 现在把 workflow observation 放在专门的 append-only store,而不是硬塞进普通记忆索引:
|
|
240
|
-
|
|
241
|
-
- **`workflow_observe`** —— 记录 `resume_context`、`checkpoint_session` 等 workflow primitive 是成功、失败、被纠正,还是被漏掉
|
|
242
|
-
- **`workflow_health`** —— 汇总单个 workflow 的 7 天 / 30 天健康度,或输出退化 workflow dashboard
|
|
243
|
-
- **`workflow_evidence`** —— 打包最近 issue observation、top signals 和后续建议,方便做规则或测试收口
|
|
244
|
-
|
|
245
|
-
这些记录默认落在 `data/workflow-observations`,不属于那 6 类 memory,也不会被 `resume_context` 当成 stable recall 回注。
|
|
246
|
-
|
|
247
|
-
### 记忆升级与冲突决议
|
|
248
|
-
|
|
249
|
-
原始 transcript 不会静默变成长期记忆:
|
|
250
|
-
|
|
251
|
-
- **Evidence → Durable** —— 显式 `promote_memory`,带 `canonicalKey` 和来源追踪
|
|
252
|
-
- **冲突守卫** —— canonicalKey 碰撞会生成冲突候选项
|
|
253
|
-
- **决议方式** —— 保留已有、接受新的、或合并 —— 带建议和聚类视图
|
|
254
|
-
- **审计 + 升级** —— `conflicts audit --export` 输出运营审查报告
|
|
255
|
-
|
|
256
|
-
### 检索策略
|
|
257
|
-
|
|
258
|
-
| 策略 | 适用场景 | 偏向 |
|
|
259
|
-
|------|---------|------|
|
|
260
|
-
| `default` | 日常回忆 | 均衡 |
|
|
261
|
-
| `writing` | 写作和灵感挖掘 | 语义更宽,较旧内容也保留 |
|
|
262
|
-
| `debug` | 报错、命令、修复 | 关键词优先,偏近期 |
|
|
263
|
-
| `fact-check` | 证据查找 | 阈值更严,偏精确匹配 |
|
|
264
|
-
|
|
265
|
-
### 记忆分类
|
|
266
|
-
|
|
267
|
-
| 分类 | 说明 | 策略 |
|
|
268
|
-
|------|------|------|
|
|
269
|
-
| `profile` | 用户身份和背景 | 合并 |
|
|
270
|
-
| `preferences` | 习惯、风格、偏好 | 合并 |
|
|
271
|
-
| `entities` | 项目、工具、人物 | 合并 |
|
|
272
|
-
| `events` | 发生过的事情 | 追加 |
|
|
273
|
-
| `cases` | 问题 → 解决方案 | 追加 |
|
|
274
|
-
| `patterns` | 可复用工作流 | 合并 |
|
|
275
|
-
|
|
276
|
-
详情:[`docs/memory-categories.md`](docs/memory-categories.md)
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
302
|
<details>
|
|
281
|
-
<summary><strong>MCP 工具(
|
|
303
|
+
<summary><strong>MCP 工具(41 个)</strong></summary>
|
|
282
304
|
|
|
283
305
|
| 工具 | 说明 |
|
|
284
306
|
|------|------|
|
|
285
|
-
| `workflow_observe` |
|
|
286
|
-
| `workflow_health` |
|
|
287
|
-
| `workflow_evidence` |
|
|
288
|
-
| `store_memory` |
|
|
289
|
-
| `store_workflow_pattern` |
|
|
290
|
-
| `store_case` |
|
|
291
|
-
| `promote_memory` |
|
|
292
|
-
| `list_conflicts` |
|
|
293
|
-
| `audit_conflicts` |
|
|
307
|
+
| `workflow_observe` | 存储 append-only 工作流观察记录 |
|
|
308
|
+
| `workflow_health` | 查看工作流健康状态或降级面板 |
|
|
309
|
+
| `workflow_evidence` | 构建工作流证据包 |
|
|
310
|
+
| `store_memory` | 存储一条持久记忆 |
|
|
311
|
+
| `store_workflow_pattern` | 存储可复用工作流模式 |
|
|
312
|
+
| `store_case` | 存储问题-方案对 |
|
|
313
|
+
| `promote_memory` | 显式升级 evidence 为持久记忆 |
|
|
314
|
+
| `list_conflicts` | 列出或查看冲突候选 |
|
|
315
|
+
| `audit_conflicts` | 汇总过期/升级的冲突优先级 |
|
|
294
316
|
| `escalate_conflicts` | 预览或应用冲突升级元数据 |
|
|
295
|
-
| `resolve_conflict` |
|
|
296
|
-
| `checkpoint_session` |
|
|
297
|
-
| `latest_checkpoint` |
|
|
317
|
+
| `resolve_conflict` | 解决冲突(保留 / 接受 / 合并) |
|
|
318
|
+
| `checkpoint_session` | 保存当前工作状态 |
|
|
319
|
+
| `latest_checkpoint` | 查看最近的 checkpoint |
|
|
298
320
|
| `resume_context` | 为新窗口编排启动上下文 |
|
|
299
|
-
| `search_memory` |
|
|
300
|
-
| `explain_memory` |
|
|
301
|
-
| `distill_memory` |
|
|
302
|
-
| `brief_memory` |
|
|
303
|
-
| `pin_memory` |
|
|
304
|
-
| `export_memory` |
|
|
305
|
-
| `list_pins` |
|
|
321
|
+
| `search_memory` | 任务开始时主动召回 |
|
|
322
|
+
| `explain_memory` | 解释为什么这些记忆被匹配 |
|
|
323
|
+
| `distill_memory` | 将结果蒸馏为精简摘要 |
|
|
324
|
+
| `brief_memory` | 创建结构化摘要并重新索引 |
|
|
325
|
+
| `pin_memory` | 将记忆升级为 Pin 资产 |
|
|
326
|
+
| `export_memory` | 导出蒸馏摘要到磁盘 |
|
|
327
|
+
| `list_pins` | 列出所有 Pin |
|
|
306
328
|
| `list_assets` | 列出所有结构化资产 |
|
|
307
|
-
| `list_dirty_briefs` |
|
|
308
|
-
| `clean_dirty_briefs` |
|
|
329
|
+
| `list_dirty_briefs` | 预览过时的 Brief 资产 |
|
|
330
|
+
| `clean_dirty_briefs` | 归档过时 Brief 并移除索引 |
|
|
309
331
|
| `memory_stats` | 查看索引统计 |
|
|
310
|
-
| `memory_drill_down` |
|
|
311
|
-
| `auto_capture` |
|
|
312
|
-
| `set_reminder` |
|
|
313
|
-
| `consolidate_memories` |
|
|
332
|
+
| `memory_drill_down` | 查看记忆完整元数据和溯源 |
|
|
333
|
+
| `auto_capture` | 启发式提取记忆信号(零 LLM) |
|
|
334
|
+
| `set_reminder` | 设置前瞻记忆提醒 |
|
|
335
|
+
| `consolidate_memories` | 聚类合并近似记忆(默认 dry-run) |
|
|
336
|
+
| `store_skill` | 存储可执行技能 |
|
|
337
|
+
| `retrieve_skill` | 按语义相似度检索技能 |
|
|
338
|
+
| `scan_skill_promotions` | 扫描可升级为技能的候选 |
|
|
339
|
+
| `list_tools` | 按层级发现工具(core/advanced/full) |
|
|
340
|
+
| `batch_store` | 批量存储最多 20 条记忆 |
|
|
341
|
+
| `distill_session` | 三层管线蒸馏对话为结构化知识 |
|
|
342
|
+
| `import_conversations` | 导入 Claude Code、ChatGPT、Slack 等对话 |
|
|
343
|
+
| `data_checkup` | 运行数据质量健康检查 |
|
|
344
|
+
| `dream` | 离线记忆整合(聚类、合并、修剪) |
|
|
345
|
+
| `memory_lint` | 记忆质量检查:矛盾、重复、过期、孤儿 |
|
|
346
|
+
| `forget_memory` | 级联删除记忆 + KG 清理 + Pin 归档 + 审计 |
|
|
347
|
+
| `export_graph` | 导出交互式 HTML 知识图谱 |
|
|
314
348
|
|
|
315
349
|
</details>
|
|
316
350
|
|
|
317
351
|
<details>
|
|
318
|
-
<summary><strong>HTTP API(
|
|
352
|
+
<summary><strong>HTTP API(21 个端点)</strong></summary>
|
|
319
353
|
|
|
320
|
-
|
|
354
|
+
基地址:`http://localhost:4318`
|
|
321
355
|
|
|
322
356
|
| 端点 | 方法 | 说明 |
|
|
323
357
|
|------|------|------|
|
|
324
358
|
| `/v1/recall` | POST | 快速语义搜索 |
|
|
325
|
-
| `/v1/store` | POST |
|
|
326
|
-
| `/v1/capture` | POST |
|
|
327
|
-
| `/v1/pattern` | POST |
|
|
328
|
-
| `/v1/case` | POST |
|
|
329
|
-
| `/v1/promote` | POST |
|
|
330
|
-
| `/v1/conflicts` | GET |
|
|
331
|
-
| `/v1/conflicts/audit` | GET |
|
|
332
|
-
| `/v1/conflicts/escalate` | POST |
|
|
333
|
-
| `/v1/conflicts/resolve` | POST |
|
|
334
|
-
| `/v1/checkpoint` | POST |
|
|
335
|
-
| `/v1/workflow-observe` | POST |
|
|
336
|
-
| `/v1/checkpoint/latest` | GET |
|
|
337
|
-
| `/v1/workflow-health` | GET |
|
|
338
|
-
| `/v1/workflow-evidence` | GET |
|
|
339
|
-
| `/v1/resume` | POST |
|
|
340
|
-
| `/v1/search` | POST |
|
|
341
|
-
| `/v1/stats` | GET |
|
|
359
|
+
| `/v1/store` | POST | 存储一条记忆 |
|
|
360
|
+
| `/v1/capture` | POST | 批量存储结构化记忆 |
|
|
361
|
+
| `/v1/pattern` | POST | 存储工作流模式 |
|
|
362
|
+
| `/v1/case` | POST | 存储问题-方案对 |
|
|
363
|
+
| `/v1/promote` | POST | 升级 evidence 为持久记忆 |
|
|
364
|
+
| `/v1/conflicts` | GET | 列出冲突候选 |
|
|
365
|
+
| `/v1/conflicts/audit` | GET | 冲突审计汇总 |
|
|
366
|
+
| `/v1/conflicts/escalate` | POST | 冲突升级 |
|
|
367
|
+
| `/v1/conflicts/resolve` | POST | 解决冲突 |
|
|
368
|
+
| `/v1/checkpoint` | POST | 保存工作检查点 |
|
|
369
|
+
| `/v1/workflow-observe` | POST | 存储工作流观察 |
|
|
370
|
+
| `/v1/checkpoint/latest` | GET | 获取最近检查点 |
|
|
371
|
+
| `/v1/workflow-health` | GET | 工作流健康面板 |
|
|
372
|
+
| `/v1/workflow-evidence` | GET | 工作流证据包 |
|
|
373
|
+
| `/v1/resume` | POST | 编排新窗口启动上下文 |
|
|
374
|
+
| `/v1/search` | POST | 高级搜索(含完整元数据) |
|
|
375
|
+
| `/v1/stats` | GET | 记忆统计 |
|
|
376
|
+
| `/v1/lint` | GET | 记忆质量报告 |
|
|
342
377
|
| `/v1/health` | GET | 健康检查 |
|
|
343
378
|
|
|
344
379
|
完整文档:[`docs/api-reference.md`](docs/api-reference.md)
|
|
@@ -350,12 +385,12 @@ RecallNest 现在把 workflow observation 放在专门的 append-only store,
|
|
|
350
385
|
|
|
351
386
|
```bash
|
|
352
387
|
# 搜索与探索
|
|
353
|
-
bun run src/cli.ts search "
|
|
354
|
-
bun run src/cli.ts explain "
|
|
355
|
-
bun run src/cli.ts distill "
|
|
388
|
+
bun run src/cli.ts search "your query"
|
|
389
|
+
bun run src/cli.ts explain "your query" --profile debug
|
|
390
|
+
bun run src/cli.ts distill "topic" --profile writing
|
|
356
391
|
bun run src/cli.ts stats
|
|
357
392
|
|
|
358
|
-
#
|
|
393
|
+
# 工作流观察
|
|
359
394
|
bun run src/cli.ts workflow-observe resume_context "Fresh window skipped continuity recovery." --outcome missed --scope project:recallnest
|
|
360
395
|
bun run src/cli.ts workflow-health resume_context --scope project:recallnest
|
|
361
396
|
bun run src/cli.ts workflow-evidence checkpoint_session --scope project:recallnest
|
|
@@ -372,6 +407,12 @@ bun run src/cli.ts conflicts resolve af70545a --keep-existing
|
|
|
372
407
|
bun run src/cli.ts conflicts resolve af70545a --merge
|
|
373
408
|
bun run src/cli.ts conflicts resolve --all --keep-existing --status open
|
|
374
409
|
|
|
410
|
+
# 记忆健康与可视化
|
|
411
|
+
bun run src/cli.ts lint # 记忆质量报告
|
|
412
|
+
bun run src/cli.ts lint --scope project:myapp # 指定 scope
|
|
413
|
+
bun run src/cli.ts graph --open # 导出并打开知识图谱
|
|
414
|
+
bun run src/cli.ts graph --max-nodes 50 # 较小的图
|
|
415
|
+
|
|
375
416
|
# 导入与诊断
|
|
376
417
|
bun run src/cli.ts ingest --source all
|
|
377
418
|
bun run src/cli.ts doctor
|
|
@@ -379,47 +420,79 @@ bun run src/cli.ts doctor
|
|
|
379
420
|
|
|
380
421
|
</details>
|
|
381
422
|
|
|
382
|
-
|
|
383
|
-
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## 多语言支持
|
|
426
|
+
|
|
427
|
+
RecallNest 开箱即用支持英文。如需多语言记忆(中文、日文、泰文及 20+ 种语言),安装 [babel-memory](https://github.com/AliceLJY/babel-memory) 及所需语言包:
|
|
384
428
|
|
|
385
429
|
```bash
|
|
386
|
-
|
|
387
|
-
|
|
430
|
+
# 中文
|
|
431
|
+
npm install babel-memory jieba-wasm
|
|
432
|
+
|
|
433
|
+
# 日文
|
|
434
|
+
npm install babel-memory @sglkc/kuromoji
|
|
435
|
+
|
|
436
|
+
# 泰文
|
|
437
|
+
npm install babel-memory wordcut
|
|
438
|
+
|
|
439
|
+
# 欧洲语言(德语、法语、西班牙语、俄语等)
|
|
440
|
+
npm install babel-memory snowball-stemmers
|
|
441
|
+
|
|
442
|
+
# 同时安装多种语言
|
|
443
|
+
npm install babel-memory jieba-wasm @sglkc/kuromoji snowball-stemmers
|
|
388
444
|
```
|
|
389
445
|
|
|
390
|
-
|
|
446
|
+
RecallNest 启动时自动检测 babel-memory,无需额外配置。未安装 babel-memory 时,RecallNest 仍正常工作,使用标准 BM25 文本搜索。
|
|
391
447
|
|
|
392
|
-
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 项目状态与路线图
|
|
451
|
+
|
|
452
|
+
RecallNest 持续维护中。所有主要架构阶段已完成——完整路线图和未来计划见 [Roadmap](ROADMAP.md)。
|
|
393
453
|
|
|
394
454
|
---
|
|
395
455
|
|
|
396
456
|
## 与 memory-lancedb-pro 的关系
|
|
397
457
|
|
|
398
|
-
RecallNest
|
|
458
|
+
RecallNest 起源于 [memory-lancedb-pro](https://github.com/CortexReach/memory-lancedb-pro) 的 fork,共享混合检索、衰减建模、记忆即系统的核心理念。关键区别:
|
|
399
459
|
|
|
400
|
-
- **memory-lancedb-pro** 是 OpenClaw
|
|
401
|
-
- **RecallNest**
|
|
460
|
+
- **memory-lancedb-pro** 是 OpenClaw 插件——为单个 OpenClaw Agent 添加长期记忆。
|
|
461
|
+
- **RecallNest** 是独立记忆层——通过 MCP + HTTP API 同时服务 Claude Code、Codex、Gemini CLI,内建会话连续性、结构化资产和冲突管理。
|
|
402
462
|
|
|
403
463
|
## 致谢
|
|
404
464
|
|
|
405
465
|
| 来源 | 贡献 |
|
|
406
466
|
|------|------|
|
|
407
|
-
| [
|
|
408
|
-
| Claude Code |
|
|
467
|
+
| [memory-lancedb-pro](https://github.com/CortexReach/memory-lancedb-pro) by [@win4r](https://github.com/win4r) | Fork 基础——混合检索、衰减建模、记忆架构 |
|
|
468
|
+
| Claude Code | 基础搭建与早期脚手架 |
|
|
409
469
|
| OpenAI Codex | 产品化和 MCP 扩展 |
|
|
410
470
|
|
|
411
|
-
|
|
471
|
+
特别感谢秦超([@win4r](https://github.com/win4r))和 [CortexReach](https://github.com/CortexReach) 团队的基础性工作。
|
|
472
|
+
|
|
473
|
+
<details>
|
|
474
|
+
<summary><strong>生态系统</strong></summary>
|
|
475
|
+
|
|
476
|
+
**小试AI** 开源 AI 工作流矩阵:
|
|
412
477
|
|
|
413
|
-
|
|
478
|
+
| 项目 | 说明 |
|
|
479
|
+
|------|------|
|
|
480
|
+
| [babel-memory](https://github.com/AliceLJY/babel-memory) | BM25 多语言预处理——27+ 种语言,零依赖 |
|
|
481
|
+
| [content-alchemy](https://github.com/AliceLJY/content-alchemy) | 5 阶段 AI 写作管线 |
|
|
482
|
+
| [content-publisher](https://github.com/AliceLJY/content-publisher) | 图片生成 + 排版 + 微信公众号发布 |
|
|
483
|
+
| [wechat-ai-bridge](https://github.com/AliceLJY/wechat-ai-bridge) | 在微信中运行 Claude Code / Codex / Gemini |
|
|
484
|
+
| [telegram-ai-bridge](https://github.com/AliceLJY/telegram-ai-bridge) | Telegram Bot:Claude、Codex、Gemini |
|
|
485
|
+
| [telegram-cli-bridge](https://github.com/AliceLJY/telegram-cli-bridge) | Telegram CLI 桥接 Gemini CLI |
|
|
486
|
+
| [openclaw-tunnel](https://github.com/AliceLJY/openclaw-tunnel) | Docker ↔ 宿主机 CLI 桥接 |
|
|
487
|
+
| [openclaw-config](https://github.com/AliceLJY/openclaw-config) | OpenClaw Bot 配置与记忆备份 |
|
|
488
|
+
| [digital-clone-skill](https://github.com/AliceLJY/digital-clone-skill) | 从语料构建数字分身 |
|
|
489
|
+
| [claude-code-studio](https://github.com/AliceLJY/claude-code-studio) | Claude Code 多会话协作平台 |
|
|
490
|
+
| [cc-genius](https://github.com/AliceLJY/cc-genius) | Web 版 Claude 客户端(PWA)—— 自托管,iPad 可用 |
|
|
491
|
+
| [agent-nexus](https://github.com/AliceLJY/agent-nexus) | 一键安装:记忆 + 远程控制 |
|
|
492
|
+
| [cc-cabin](https://github.com/AliceLJY/cc-cabin) | Claude Code 完整工作流脚手架 |
|
|
414
493
|
|
|
415
|
-
|
|
416
|
-
<picture>
|
|
417
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=AliceLJY/recallnest&type=Date&theme=dark&transparent=true" />
|
|
418
|
-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=AliceLJY/recallnest&type=Date&transparent=true" />
|
|
419
|
-
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=AliceLJY/recallnest&type=Date&transparent=true" />
|
|
420
|
-
</picture>
|
|
421
|
-
</a>
|
|
494
|
+
</details>
|
|
422
495
|
|
|
423
|
-
##
|
|
496
|
+
## License
|
|
424
497
|
|
|
425
498
|
MIT
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* RecallNest CLI launcher — cross-runtime compatible
|
|
4
|
+
*
|
|
5
|
+
* Priority: bun (native TS, fastest) → node + tsx (fallback)
|
|
6
|
+
*/
|
|
7
|
+
import { spawn, execFileSync } from "node:child_process";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
|
+
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const cli = join(__dirname, "..", "src", "cli.ts");
|
|
14
|
+
const args = process.argv.slice(2);
|
|
15
|
+
|
|
16
|
+
function hasBun() {
|
|
17
|
+
try {
|
|
18
|
+
execFileSync("bun", ["--version"], { stdio: "ignore" });
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function run(command, commandArgs) {
|
|
26
|
+
const child = spawn(command, commandArgs, { stdio: "inherit" });
|
|
27
|
+
child.on("close", (code) => process.exit(code || 0));
|
|
28
|
+
child.on("error", (err) => {
|
|
29
|
+
console.error(`Failed to start ${command}: ${err.message}`);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (hasBun()) {
|
|
35
|
+
// Native bun — fastest path
|
|
36
|
+
run("bun", ["run", cli, ...args]);
|
|
37
|
+
} else {
|
|
38
|
+
// Fallback: node + tsx
|
|
39
|
+
const tsxBin = join(__dirname, "..", "node_modules", ".bin", "tsx");
|
|
40
|
+
if (existsSync(tsxBin)) {
|
|
41
|
+
run(tsxBin, [cli, ...args]);
|
|
42
|
+
} else {
|
|
43
|
+
// tsx not found in local node_modules, try global
|
|
44
|
+
try {
|
|
45
|
+
execFileSync("tsx", ["--version"], { stdio: "ignore" });
|
|
46
|
+
run("tsx", [cli, ...args]);
|
|
47
|
+
} catch {
|
|
48
|
+
console.error(`
|
|
49
|
+
RecallNest requires either Bun or tsx to run TypeScript.
|
|
50
|
+
|
|
51
|
+
Option A (recommended):
|
|
52
|
+
curl -fsSL https://bun.sh/install | bash
|
|
53
|
+
|
|
54
|
+
Option B:
|
|
55
|
+
npm install -g tsx
|
|
56
|
+
|
|
57
|
+
Then retry your command.
|
|
58
|
+
`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|