recallnest 2.6.1 → 3.0.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/CHANGELOG.md +292 -0
- package/README.md +280 -195
- package/README_CN.md +266 -199
- package/config.json.example +8 -1
- package/docs/api-reference.md +1 -1
- package/integrations/README.md +1 -1
- package/integrations/agy/README.md +73 -0
- package/integrations/agy/setup.sh +75 -0
- package/integrations/setup-all.sh +1 -1
- package/package.json +7 -5
- package/src/access-tracker.ts +10 -1
- package/src/activity-counter.ts +69 -11
- package/src/age-label.ts +29 -0
- package/src/audit-log.ts +35 -0
- package/src/auto-gc.ts +97 -30
- package/src/capture-engine.ts +26 -4
- package/src/cli.ts +224 -10
- package/src/consolidation-engine.ts +317 -123
- package/src/context-composer-stable.ts +5 -1
- package/src/data-checkup.ts +17 -3
- package/src/dream-pipeline.ts +90 -12
- package/src/embedder.ts +44 -5
- package/src/env-config.ts +71 -0
- package/src/forget-engine.ts +8 -2
- package/src/gateway-server.ts +272 -0
- package/src/ingest.ts +248 -22
- package/src/kg-extractor.ts +17 -0
- package/src/llm-client.ts +86 -25
- package/src/mcp-server.ts +2 -1
- package/src/mcp-tools-advanced.ts +7 -2
- package/src/mcp-tools-core.ts +11 -1
- package/src/mcp-tools-governance.ts +45 -3
- package/src/memory-evolution.ts +16 -0
- package/src/memory-output.ts +47 -8
- package/src/memory-promotion.ts +280 -0
- package/src/memory-store-port.ts +32 -3
- package/src/memory-utility.ts +314 -0
- package/src/pivot-apply.ts +52 -1
- package/src/pivot-evidence.ts +128 -0
- package/src/ppr-traversal.ts +25 -1
- package/src/recall-ledger.ts +76 -0
- package/src/retriever.ts +82 -9
- package/src/runtime-config.ts +9 -0
- package/src/scope-policy.ts +22 -1
- package/src/session-engine.ts +11 -4
- package/src/session-output.ts +13 -4
- package/src/session-store.ts +2 -3
- package/src/skill-promotion.ts +218 -1
- package/src/store.ts +231 -71
- package/src/synthesis-contract.ts +286 -0
- package/src/version-manager.ts +83 -0
- package/src/workflow-observation-schema.ts +26 -0
- package/integrations/gemini-cli/README.md +0 -57
- package/integrations/gemini-cli/setup.sh +0 -64
- package/src/__tests__/access-tracker-novelty.test.ts +0 -304
- package/src/__tests__/activity-counter.test.ts +0 -125
- package/src/__tests__/adaptive-fidelity.test.ts +0 -102
- package/src/__tests__/admission-control.test.ts +0 -206
- package/src/__tests__/anchor-generator.test.ts +0 -67
- package/src/__tests__/api-server-security.test.ts +0 -102
- 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 -144
- package/src/__tests__/batch-dedup.test.ts +0 -65
- package/src/__tests__/belief-history.test.ts +0 -220
- package/src/__tests__/canary-eval.test.ts +0 -114
- package/src/__tests__/capture-engine.test.ts +0 -1328
- 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 -116
- 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 -945
- package/src/__tests__/confidence-metadata.test.ts +0 -125
- package/src/__tests__/confidence-tracker.test.ts +0 -261
- 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 -418
- package/src/__tests__/connector-v1.test.ts +0 -181
- package/src/__tests__/consolidation-engine.test.ts +0 -430
- 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__/contracts.test.ts +0 -262
- 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 -276
- package/src/__tests__/decay-exemption.test.ts +0 -129
- 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 -305
- package/src/__tests__/distill-session-argshape.test.ts +0 -79
- package/src/__tests__/doctor.test.ts +0 -319
- package/src/__tests__/dream-pipeline.test.ts +0 -780
- 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__/env-config.test.ts +0 -151
- package/src/__tests__/error-signature-boost.test.ts +0 -87
- package/src/__tests__/error-signature.test.ts +0 -95
- package/src/__tests__/error-taxonomy.test.ts +0 -129
- 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__/freshness.test.ts +0 -186
- package/src/__tests__/graph-export.test.ts +0 -489
- package/src/__tests__/hotness-blend.test.ts +0 -283
- package/src/__tests__/ingest-chunking.test.ts +0 -44
- 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 -192
- package/src/__tests__/kg-store.test.ts +0 -300
- package/src/__tests__/llm-client-pivot.test.ts +0 -628
- package/src/__tests__/llm-consolidation.test.ts +0 -226
- package/src/__tests__/maintenance-locks.test.ts +0 -189
- package/src/__tests__/mcp-efficiency.test.ts +0 -288
- package/src/__tests__/mcp-related-scopes.test.ts +0 -151
- package/src/__tests__/memory-boundaries.test.ts +0 -282
- package/src/__tests__/memory-evolution-b2-b3-e1.test.ts +0 -345
- 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 -421
- package/src/__tests__/memory-output.test.ts +0 -215
- package/src/__tests__/memory-promotion.test.ts +0 -315
- package/src/__tests__/migrate-dedup-ids.test.ts +0 -65
- package/src/__tests__/multi-vector.test.ts +0 -242
- package/src/__tests__/narrative-architecture.test.ts +0 -456
- package/src/__tests__/noise-filter.test.ts +0 -205
- package/src/__tests__/noise-prototype-bank.test.ts +0 -280
- package/src/__tests__/obsidian-connector.test.ts +0 -363
- package/src/__tests__/omitted-reporting.test.ts +0 -98
- package/src/__tests__/pending-review.test.ts +0 -77
- package/src/__tests__/pii-redact.test.ts +0 -333
- package/src/__tests__/pivot-apply.test.ts +0 -373
- package/src/__tests__/pivot-distill-supervisor.test.ts +0 -457
- package/src/__tests__/pivot-distill.test.ts +0 -1178
- 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 -282
- package/src/__tests__/preference-slots.test.ts +0 -205
- package/src/__tests__/prospective-memory.test.ts +0 -283
- package/src/__tests__/pull-from-macbook-sync-only.test.ts +0 -679
- package/src/__tests__/query-entity-detector.test.ts +0 -171
- package/src/__tests__/query-expander-alias.test.ts +0 -146
- package/src/__tests__/query-expander.test.ts +0 -34
- package/src/__tests__/recall-gate.test.ts +0 -266
- package/src/__tests__/recall-governor.test.ts +0 -227
- package/src/__tests__/recall-mode.test.ts +0 -64
- package/src/__tests__/resolve-db-path.test.ts +0 -130
- package/src/__tests__/resolve-tier.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-eval.test.ts +0 -163
- package/src/__tests__/retrieval-trace.test.ts +0 -213
- package/src/__tests__/retriever-boundary-weight.test.ts +0 -136
- package/src/__tests__/retriever-lazy-init-dispatch.test.ts +0 -123
- 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__/scope-suggester.test.ts +0 -80
- package/src/__tests__/session-checkpoint.test.ts +0 -291
- package/src/__tests__/session-distiller.test.ts +0 -640
- package/src/__tests__/session-gc.test.ts +0 -215
- package/src/__tests__/skill-engine.test.ts +0 -552
- package/src/__tests__/skill-promotion.test.ts +0 -654
- package/src/__tests__/skill-verifier.test.ts +0 -122
- package/src/__tests__/source-heartbeat.test.ts +0 -250
- package/src/__tests__/stable-context-length-contract.test.ts +0 -62
- package/src/__tests__/store-patch-metadata.test.ts +0 -205
- package/src/__tests__/store-read-consistency.test.ts +0 -122
- package/src/__tests__/store-schema-migration.test.ts +0 -87
- package/src/__tests__/store-scope-audit.test.ts +0 -81
- package/src/__tests__/store-upsert.test.ts +0 -201
- 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-terminal-roster.test.ts +0 -127
- package/src/__tests__/term-registry.test.ts +0 -121
- package/src/__tests__/tool-error-surfacing.test.ts +0 -98
- package/src/__tests__/tool-output-compressor.test.ts +0 -160
- package/src/__tests__/topic-tag.test.ts +0 -113
- package/src/__tests__/trusted-memory.test.ts +0 -839
- package/src/__tests__/ui-server-security.test.ts +0 -93
- package/src/__tests__/usage-tracker.test.ts +0 -287
- package/src/__tests__/version-manager.test.ts +0 -213
- package/src/__tests__/workflow-observation-skill-outcome.test.ts +0 -352
- package/src/__tests__/workflow-observation.test.ts +0 -433
- package/src/__tests__/write-verifier.test.ts +0 -122
- /package/integrations/{gemini-cli/gemini-md-snippet.md → agy/agy-md-snippet.md} +0 -0
package/README_CN.md
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
# RecallNest
|
|
4
4
|
|
|
5
|
-
**面向任意
|
|
5
|
+
**面向任意 AI 客户端的共享记忆层 —— CLI agent、桌面 app、你自己的脚本**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
*一套记忆,每个客户端,上下文跨窗口延续——也跨机器。*
|
|
8
8
|
|
|
9
9
|
基于 LanceDB 的本地优先记忆系统,把散落在各个终端的对话历史沉淀为可复用知识,跨终端共享,自动召回。
|
|
10
10
|
|
|
11
11
|
[](https://github.com/AliceLJY/recallnest)
|
|
12
12
|
[](LICENSE)
|
|
13
|
-
[](https://bun.sh)
|
|
14
14
|
[](https://lancedb.com)
|
|
15
|
-
[](https://modelcontextprotocol.io)
|
|
16
16
|
[](https://github.com/AliceLJY/recallnest/actions/workflows/ci.yml)
|
|
17
17
|
[](https://github.com/AliceLJY/recallnest)
|
|
18
18
|
|
|
@@ -26,115 +26,34 @@
|
|
|
26
26
|
|
|
27
27
|
编程 Agent 每开一个窗口就失忆。项目配置、调试决策、实体映射——散落在 Claude Code、Codex、Kimi、Antigravity 以及你打开的每一个终端里,互相不通。
|
|
28
28
|
|
|
29
|
-
RecallNest
|
|
29
|
+
RecallNest 是**一个 LanceDB 驱动的记忆层,你所有的 Agent 共读共写**。一个窗口存入的上下文,另一个窗口能召回。会话退出时 checkpoint,启动时 resume。记忆会衰减、演化、自组织——它不是一堆等你 grep 的日志。
|
|
30
30
|
|
|
31
|
+
### 一次召回长什么样
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
/plugin marketplace add AliceLJY/recallnest
|
|
38
|
-
/plugin install recallnest@AliceLJY
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
RecallNest 随 Claude Code 自动启动,无需手动配置 MCP。
|
|
42
|
-
|
|
43
|
-
安装时 Claude Code 会提示填写 Jina API key。密钥由 Claude Code 的敏感插件配置保存;自动生成的配置和 LanceDB 数据库则放在插件持久数据目录,不会混进按版本更新的插件缓存。
|
|
44
|
-
|
|
45
|
-
> Claude Code 插件与 npm 包共用同一个发布版本,并随版本发布同步更新。
|
|
46
|
-
>
|
|
47
|
-
> **前置要求:** [Bun](https://bun.sh)。首次启动自动安装依赖。
|
|
48
|
-
|
|
49
|
-
### 方式 B:npm 安装
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npx recallnest --help # 直接运行
|
|
53
|
-
# 或
|
|
54
|
-
npm install -g recallnest # 全局安装
|
|
55
|
-
recallnest doctor
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
支持 Node.js 18+(通过 tsx)或 Bun,无需 clone 仓库。
|
|
59
|
-
|
|
60
|
-
### 方式 C:手动安装
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
git clone https://github.com/AliceLJY/recallnest.git
|
|
64
|
-
cd recallnest
|
|
65
|
-
bun install
|
|
66
|
-
cp config.json.example config.json
|
|
67
|
-
cp .env.example .env
|
|
68
|
-
# 编辑 .env → 填入 JINA_API_KEY
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 启动服务
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
bun run api
|
|
75
|
-
# → RecallNest API running at http://localhost:4318
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 试一下
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
# 存入一条记忆
|
|
82
|
-
curl -X POST http://localhost:4318/v1/store \
|
|
83
|
-
-H "Content-Type: application/json" \
|
|
84
|
-
-d '{"text": "用户偏好暗色模式", "category": "preferences"}'
|
|
85
|
-
|
|
86
|
-
# 搜索记忆
|
|
87
|
-
curl -X POST http://localhost:4318/v1/recall \
|
|
88
|
-
-H "Content-Type: application/json" \
|
|
89
|
-
-d '{"query": "用户偏好"}'
|
|
90
|
-
|
|
91
|
-
# 查看统计
|
|
92
|
-
curl http://localhost:4318/v1/stats
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### 接入终端
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
bash integrations/claude-code/setup.sh
|
|
99
|
-
bash integrations/gemini-cli/setup.sh
|
|
100
|
-
bash integrations/codex/setup.sh
|
|
101
|
-
```
|
|
33
|
+
```text
|
|
34
|
+
Query : deploy rollback
|
|
35
|
+
Hits : 5
|
|
102
36
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
bun run src/cli.ts ingest --source all
|
|
109
|
-
bun run seed:continuity
|
|
110
|
-
bun run src/cli.ts doctor
|
|
37
|
+
# ID Score Category Tier Source Date Age Retrieval Path
|
|
38
|
+
1 ee79037a 46.1% cases peripheral cc 2026-08-25 2d vector
|
|
39
|
+
[assistant] Rolled back to the previous image and pinned the digest so the next…
|
|
40
|
+
prov : evidence/transcript-ingest
|
|
41
|
+
imgs : 52 agent-made in this session · read sess=dca70d4a
|
|
111
42
|
```
|
|
112
43
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
## Web UI
|
|
44
|
+
这一小块里有三样东西,几乎就是整个设计:
|
|
116
45
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
<img src="assets/screenshots/ui-full.png" alt="RecallNest Search Workbench" width="800" />
|
|
124
|
-
<br><em>Search Workbench —— 混合检索 + Topic Tag 过滤 + 4 套检索策略 + Skills 浏览 + 资产管理。</em>
|
|
125
|
-
</p>
|
|
126
|
-
|
|
127
|
-
<p align="center">
|
|
128
|
-
<img src="assets/knowledge-graph.png" alt="RecallNest Knowledge Graph" width="800" />
|
|
129
|
-
<br><em>Knowledge Graph —— 交互式力导向图,语义桥接揭示跨域隐藏关联。</em>
|
|
130
|
-
</p>
|
|
46
|
+
- **`Source cc` · `Age 2d`** —— 它出自两天前的一个 Claude Code 窗口,而你正在另一个终端、
|
|
47
|
+
甚至另一台机器上读它。整个项目就建在这个前提上。
|
|
48
|
+
- **`prov : evidence/…`** —— 每一行都标着自己待在哪一层。从对话里刮下来的碎片,永远没资格
|
|
49
|
+
冒充你真正做过的决定;要变成稳定记忆,得另走一道带证据门槛的提升流程。
|
|
50
|
+
- **`imgs : …`** —— 那个 session 里有 52 张图,**一张都没进数据库**。这一行的存在只是让你知道
|
|
51
|
+
那儿有东西可看,而产生它没花一次模型调用、没多一个向量、没占一份存储。
|
|
131
52
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
```
|
|
53
|
+
最后这条就是整套做法的缩影:**只存"让一样东西能被找到"所需的部分,不存"将来可能被问到"的一切。**
|
|
54
|
+
完整的推理——包括最显然的那种实现错在哪两个地方——在
|
|
55
|
+
[图片:可寻址,而不是被编码](#图片可寻址而不是被编码)。
|
|
136
56
|
|
|
137
|
-
---
|
|
138
57
|
|
|
139
58
|
## 核心能力
|
|
140
59
|
|
|
@@ -143,8 +62,8 @@ bun run src/ui-server.ts
|
|
|
143
62
|
| 能力 | 说明 |
|
|
144
63
|
|---|---|
|
|
145
64
|
| **CC Plugin** | 一行命令装入 Claude Code,无需手动配置 MCP |
|
|
146
|
-
| **共享索引** |
|
|
147
|
-
| **双通道接入** | MCP(stdio)给 CLI
|
|
65
|
+
| **共享索引** | 所有客户端共用同一个 LanceDB 存储,跨机指向 `ssh` 即可共用真相源 |
|
|
66
|
+
| **双通道接入** | MCP(stdio)给 CLI agent 与能填 MCP 配置的 GUI app + HTTP API 给只会发请求的客户端 |
|
|
148
67
|
| **一键接入** | 集成脚本同时安装 MCP 和 continuity 规则 |
|
|
149
68
|
|
|
150
69
|
### 检索与连续性
|
|
@@ -196,133 +115,240 @@ bun run src/ui-server.ts
|
|
|
196
115
|
|
|
197
116
|
---
|
|
198
117
|
|
|
199
|
-
##
|
|
118
|
+
## 架构
|
|
200
119
|
|
|
201
|
-
|
|
120
|
+
```
|
|
121
|
+
CLIENTS ACCESS CORE ENGINE STORAGE
|
|
122
|
+
────────────────────── ─────────────────────── ──────────────────────────── ──────────────────────
|
|
123
|
+
|
|
124
|
+
Claude Code MCP over stdio Retriever LanceDB
|
|
125
|
+
Codex ───▶ 44 tools, 3 tiers ───▶ vector + BM25 + RRF ───▶ vector + columnar
|
|
126
|
+
Kimi · Antigravity Classifier · 6 categories
|
|
127
|
+
Doubao desktop Context composer
|
|
128
|
+
HTTP API :4318 resume_context Jina embeddings v5
|
|
129
|
+
your scripts · cron ───▶ 21 endpoints ───▶ Decay · Weibull half-life ─▶ 1024-dim, task-aware
|
|
130
|
+
Conflict · audit + merge
|
|
131
|
+
phone app ───▶ read-only gateway ───▶ Capture: evidence → durable
|
|
132
|
+
:8791, token-gated
|
|
133
|
+
```
|
|
202
134
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
- **更可靠的整合管线** —— `dream` 增加失败分型、总时长预算、聚类前向量回填,以及“成功必须真的产出结果”的断言。
|
|
206
|
-
- **更完整的对话来源** —— Kimi、AGY/Antigravity 和 minis 已同步纳入 ingest、scope 边界与术语识别。
|
|
207
|
-
- **一个公开版本号** —— npm 元数据、CLI `--version`、MCP 握手、HTTP 健康接口和 Claude Code marketplace 统一遵守 `2.6.0` 发布契约。
|
|
208
|
-
- **真正可安装的 Claude Code 插件** —— 安装后自动注册 43 个 MCP 工具与连续性 skill,通过敏感插件配置接收 Jina key,并把配置与 LanceDB 数据放进 Claude Code 的持久插件数据目录。
|
|
135
|
+
> 图内保留英文术语:等宽字体下中文占两格,混排会把对齐打乱。四段从左到右分别是
|
|
136
|
+
> 客户端、接入层(MCP / HTTP / 只读网关)、核心引擎、存储层。
|
|
209
137
|
|
|
210
|
-
###
|
|
138
|
+
### 内部设计
|
|
139
|
+
|
|
140
|
+
- **L0 / L1 / L2 动态折叠** —— 每条记忆存储 3 个粒度层(一句话 / 要点概要 / 完整内容);检索时根据相关性分数和 token 预算动态选择返回哪个层级
|
|
141
|
+
- **Weibull 衰减 + 情绪调制** —— 记忆沿参数化 Weibull 曲线衰减;情绪显著性可额外延长半衰期最高 30%
|
|
142
|
+
- **向量预筛 + LLM 去重** —— 90% 的去重决策用低成本余弦相似度(≥ 0.92);仅临界情况调用 LLM 判断
|
|
143
|
+
- **类别分化合并策略** —— `profile` 和 `preferences` 采用冲突合并(新版覆盖);`events` 和 `cases` 采用追加(保留历史)
|
|
144
|
+
- **展示分 vs 淘汰分双轨制** —— 检索使用双轨评分:tier floor 防止核心记忆被淘汰,decay boost 让新鲜记忆临时浮现而不永久挤掉稳定记忆
|
|
211
145
|
|
|
212
|
-
|
|
213
|
-
- 插件数据位于版本缓存之外,更新插件不会清空;手动 clone 仍沿用现有 `config.json` 与数据库路径。
|
|
214
|
-
- 检索操作现已写入审计日志。`audit.jsonl` 暂无自动轮转,接近 50 MB 时建议人工归档。
|
|
215
|
-
- `RECALLNEST_LAYER_ADMISSION` 仍是显式开启项(`observe` 或 `on`),默认 `off`。
|
|
146
|
+
> 完整架构详解:[`docs/architecture.md`](docs/architecture.md)
|
|
216
147
|
|
|
217
148
|
---
|
|
218
149
|
|
|
219
|
-
##
|
|
150
|
+
## 谁能接上
|
|
220
151
|
|
|
221
|
-
|
|
152
|
+
**数据层不知道你的客户端长什么样。** RecallNest 把同一个 LanceDB 存储通过三个出口暴露出来,接法按客户端的能力选,而不是绑死在某一种协议上。
|
|
222
153
|
|
|
223
|
-
|
|
154
|
+
| 你的客户端能做什么 | 走哪条 | 已验证 |
|
|
155
|
+
|---|---|---|
|
|
156
|
+
| 执行本地命令(CLI agent) | **MCP over stdio** | Claude Code、Codex、Kimi、Antigravity |
|
|
157
|
+
| 执行本地命令(GUI app,手填 MCP 配置) | **MCP over stdio** | 豆包桌面端——与 Cherry Studio / ChatBox 同一形态 |
|
|
158
|
+
| 只会发 HTTP 请求 | **HTTP API** | 自定义 agent、脚本、定时任务 |
|
|
159
|
+
| 跑在另一台机器上 | 把 stdio 启动命令换成 `ssh <host> recallnest-mcp` | 笔记本上的四个客户端共读家里服务器上的同一个库 |
|
|
224
160
|
|
|
225
|
-
|
|
161
|
+
两条值得直说的推论:
|
|
226
162
|
|
|
227
|
-
-
|
|
163
|
+
- **不绑单一协议。** 支持填 MCP 配置的 GUI 聊天 app,接入方式和终端里的 agent 完全一样;只会发 HTTP 请求的客户端,读到的仍是同一份记忆。
|
|
164
|
+
- **不绑单台机器。** 因为 MCP 传输走 stdio,启动命令由你定义——把它指向 `ssh`,每台机器上的每个客户端共用同一个真相源,而不是各自长出一个数据库。
|
|
228
165
|
|
|
229
|
-
|
|
166
|
+
接一个新客户端不等于要改 RecallNest:够格的客户端自己写一行配置,能力受限的在 HTTP API 前面加一层薄网关。
|
|
230
167
|
|
|
231
|
-
|
|
168
|
+
### 手机上的 AI app:只读网关
|
|
232
169
|
|
|
233
|
-
|
|
170
|
+
HTTP API(`:4318`)只监听 `127.0.0.1`,并且会拒绝任何 Host 头不是本地的请求——这是**有意的**:它同时暴露写入路由(`/v1/store`、`/v1/checkpoint`),直接开到公网等于把写权限交出去。
|
|
234
171
|
|
|
235
|
-
|
|
172
|
+
所以要让手机上的 AI app 读到同一份记忆,前面加一层只读网关:
|
|
236
173
|
|
|
237
|
-
|
|
174
|
+
```bash
|
|
175
|
+
openssl rand -hex 32 > ~/.config/recallnest/gateway-token
|
|
176
|
+
chmod 600 ~/.config/recallnest/gateway-token
|
|
238
177
|
|
|
239
|
-
|
|
178
|
+
bun run api # 本机 API,:4318
|
|
179
|
+
bun run gateway # 只读网关,:8791 → 转发到 :4318
|
|
180
|
+
```
|
|
240
181
|
|
|
241
|
-
|
|
182
|
+
网关只放行读路由(`/recall`、`/search`、`/stats`、`/health`),**任何写路由一律 404**;Bearer token 常量时间比较、每分钟限流、请求与响应都有大小上限。把它放到隧道后面(Tailscale Serve/Funnel、Cloudflare Tunnel 等)即可从手机访问。
|
|
242
183
|
|
|
243
|
-
|
|
184
|
+
```bash
|
|
185
|
+
curl -X POST https://<你的隧道地址>/recall \
|
|
186
|
+
-H "Authorization: Bearer $(cat ~/.config/recallnest/gateway-token)" \
|
|
187
|
+
-H 'content-type: application/json' \
|
|
188
|
+
-d '{"query":"上次那个部署问题怎么解决的","limit":3,"allScopes":true}'
|
|
189
|
+
```
|
|
244
190
|
|
|
245
|
-
|
|
191
|
+
可选:配 `RECALLNEST_GATEWAY_FILE_ROOTS="notes=/abs/path,wiki=/abs/path"` 会多出一个 `GET /files/search`,用 ripgrep 只读检索你指定的 markdown 目录(查询词以 argv 传入,不经过 shell)。不配就没有这个路由。
|
|
246
192
|
|
|
247
|
-
|
|
193
|
+
> 网关默认也只绑 `127.0.0.1`——把它暴露到公网是隧道的职责,请自行评估风险。
|
|
248
194
|
|
|
249
|
-
|
|
195
|
+
作者用这条路把 iPhone 上的 [OpenMinis](https://github.com/OpenMinis/OpenMinis) 接了上来:手机 app 经 Tailscale Funnel 打到网关,能查到同一份记忆库。有意思的是它查回的是**它自己**的历史——那些对话导出后回流、被索引,于是一个每次冷启动的手机 agent 有了跨会话的记忆。
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
## 快速开始
|
|
200
|
+
|
|
201
|
+
### 方式 A:Claude Code Plugin(推荐)
|
|
250
202
|
|
|
251
|
-
|
|
203
|
+
```bash
|
|
204
|
+
/plugin marketplace add AliceLJY/recallnest
|
|
205
|
+
/plugin install recallnest@AliceLJY
|
|
206
|
+
```
|
|
252
207
|
|
|
253
|
-
|
|
208
|
+
RecallNest 随 Claude Code 自动启动,无需手动配置 MCP。
|
|
254
209
|
|
|
255
|
-
|
|
210
|
+
安装时 Claude Code 会提示填写 Jina API key。密钥由 Claude Code 的敏感插件配置保存;自动生成的配置和 LanceDB 数据库则放在插件持久数据目录,不会混进按版本更新的插件缓存。
|
|
256
211
|
|
|
257
|
-
|
|
212
|
+
> Claude Code 插件与 npm 包共用同一个发布版本,并随版本发布同步更新。
|
|
213
|
+
>
|
|
214
|
+
> **前置要求:** [Bun](https://bun.sh)。首次启动自动安装依赖。
|
|
258
215
|
|
|
259
|
-
|
|
216
|
+
### 方式 B:npm 安装
|
|
260
217
|
|
|
261
|
-
|
|
218
|
+
```bash
|
|
219
|
+
npx recallnest --help # 直接运行
|
|
220
|
+
# 或
|
|
221
|
+
npm install -g recallnest # 全局安装
|
|
222
|
+
recallnest doctor
|
|
223
|
+
```
|
|
262
224
|
|
|
263
|
-
|
|
225
|
+
支持 Node.js 22+(通过 tsx)或 Bun,无需 clone 仓库。
|
|
264
226
|
|
|
227
|
+
### 方式 C:手动安装
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
git clone https://github.com/AliceLJY/recallnest.git
|
|
231
|
+
cd recallnest
|
|
232
|
+
bun install
|
|
233
|
+
cp config.json.example config.json
|
|
234
|
+
cp .env.example .env
|
|
235
|
+
# 编辑 .env → 填入 JINA_API_KEY
|
|
265
236
|
```
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
│ │ │ │
|
|
273
|
-
└──── MCP (stdio) ───┘ HTTP API(端口 4318)
|
|
274
|
-
│ │
|
|
275
|
-
▼ ▼
|
|
276
|
-
┌──────────────────────────────────────────────────────────┐
|
|
277
|
-
│ 集成层 │
|
|
278
|
-
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
|
|
279
|
-
│ │ MCP Server │ │ HTTP API Server │ │
|
|
280
|
-
│ │ 43 个工具 │ │ 21 个端点 │ │
|
|
281
|
-
│ └─────────┬───────────┘ └──────────┬─────────────────┘ │
|
|
282
|
-
└────────────┼─────────────────────────┼───────────────────┘
|
|
283
|
-
└──────────┬──────────────┘
|
|
284
|
-
▼
|
|
285
|
-
┌──────────────────────────────────────────────────────────┐
|
|
286
|
-
│ 核心引擎 │
|
|
287
|
-
│ │
|
|
288
|
-
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
|
|
289
|
-
│ │ 检索器 │ │ 分类器 │ │ 上下文编排器 │ │
|
|
290
|
-
│ │(向量 + │ │(6 类分类) │ │(resume_context) │ │
|
|
291
|
-
│ │ BM25 + RRF)│ │ │ │ │ │
|
|
292
|
-
│ └────────────┘ └────────────┘ └──────────────────────┘ │
|
|
293
|
-
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
|
|
294
|
-
│ │ 衰减引擎 │ │ 冲突引擎 │ │ 捕获引擎 │ │
|
|
295
|
-
│ │(Weibull) │ │(审计 + │ │(evidence → durable)│ │
|
|
296
|
-
│ │ │ │ 合并) │ │ │ │
|
|
297
|
-
│ └────────────┘ └────────────┘ └──────────────────────┘ │
|
|
298
|
-
└──────────────────────────┬───────────────────────────────┘
|
|
299
|
-
▼
|
|
300
|
-
┌──────────────────────────────────────────────────────────┐
|
|
301
|
-
│ 存储层 │
|
|
302
|
-
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
|
|
303
|
-
│ │ LanceDB │ │ Jina Embeddings v5 │ │
|
|
304
|
-
│ │(向量 + 列式存储) │ │(1024 维,任务感知) │ │
|
|
305
|
-
│ └─────────────────────┘ └────────────────────────────┘ │
|
|
306
|
-
└──────────────────────────────────────────────────────────┘
|
|
237
|
+
|
|
238
|
+
### 启动服务
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
bun run api
|
|
242
|
+
# → RecallNest API running at http://localhost:4318
|
|
307
243
|
```
|
|
308
244
|
|
|
309
|
-
###
|
|
245
|
+
### 试一下
|
|
310
246
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
247
|
+
```bash
|
|
248
|
+
# 存入一条记忆
|
|
249
|
+
curl -X POST http://localhost:4318/v1/store \
|
|
250
|
+
-H "Content-Type: application/json" \
|
|
251
|
+
-d '{"text": "用户偏好暗色模式", "category": "preferences"}'
|
|
316
252
|
|
|
317
|
-
|
|
253
|
+
# 搜索记忆
|
|
254
|
+
curl -X POST http://localhost:4318/v1/recall \
|
|
255
|
+
-H "Content-Type: application/json" \
|
|
256
|
+
-d '{"query": "用户偏好"}'
|
|
257
|
+
|
|
258
|
+
# 查看统计
|
|
259
|
+
curl http://localhost:4318/v1/stats
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### 接入终端
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
bash integrations/claude-code/setup.sh
|
|
266
|
+
bash integrations/agy/setup.sh
|
|
267
|
+
bash integrations/codex/setup.sh
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
每个脚本会同时安装 MCP 和 continuity 规则,新窗口自动触发 `resume_context`。
|
|
271
|
+
|
|
272
|
+
### 索引已有对话
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
bun run src/cli.ts ingest --source all
|
|
276
|
+
bun run seed:continuity
|
|
277
|
+
bun run src/cli.ts doctor
|
|
278
|
+
```
|
|
318
279
|
|
|
319
280
|
---
|
|
320
281
|
|
|
282
|
+
## 图片:可寻址,而不是被编码
|
|
283
|
+
|
|
284
|
+
对话里有图,而文本记忆层没有。通常的答案是上一个多模态 embedding 模型,把每张图编码进
|
|
285
|
+
和文字同一个向量空间。那个答案对相册和商品库是对的,放在这里却是错的形状,理由很便宜:
|
|
286
|
+
**在对话里,一张图几乎从不孤零零地出现。** 它总被"你看这个报错"包着,而紧跟其后的回复
|
|
287
|
+
通常已经描述了图里是什么。图周围的文字,本来就是这张图的索引。缺的从来不是对像素做语义
|
|
288
|
+
检索,而是**知道那儿有一张图**。
|
|
289
|
+
|
|
290
|
+
所以 RecallNest 不编码图片。它只记下**这条记忆所属的 session 里有几张图**,剩下的交给你判断
|
|
291
|
+
要不要去翻原始对话。图的含义在需要的那一刻、由当时在问的那个模型现场解读。
|
|
292
|
+
|
|
293
|
+
代价值得说清楚:**不需要多模态模型,不重新 embedding,不存图片,不改动任何一个向量。**
|
|
294
|
+
给存量的 21,319 条记忆补上这个标记,只动了 metadata。
|
|
295
|
+
|
|
296
|
+
这里面有两个不那么显然的选择,而且两次的第一版都是错的。
|
|
297
|
+
|
|
298
|
+
### 粒度取 session,是故意的
|
|
299
|
+
|
|
300
|
+
标记数的是整个 session,不是单轮——比第一眼该有的粒度更粗,而粗正是重点。
|
|
301
|
+
|
|
302
|
+
一轮如果只有一张截图、几乎没有文字,它根本过不了长度闸,压根没进过库。在真实对话上实测,
|
|
303
|
+
**含用户贴图的轮次里有 12.5% 是整轮被丢掉的**——而且丢的恰恰是最值钱的那些:七张截图一个字
|
|
304
|
+
没配,或者「操作步骤在这里」配一张图、而那张图**就是**步骤本身。轮次级的标记,对最该被找到的
|
|
305
|
+
那批图**无处可挂**。session 级的标记会落到同一个 session 里**其他**进了库的记忆上,而那些才是
|
|
306
|
+
搜索会捞出来的东西。
|
|
307
|
+
|
|
308
|
+
代价不加掩饰:同一个 session 的每条记忆都带同一个数字,所以那些图未必和你眼前这一条有关。
|
|
309
|
+
输出里写的是 `in this session` 而不是 `in this memory`,就是为了这个。
|
|
310
|
+
|
|
311
|
+
### 分成两类,因为它们回答的不是同一个问题
|
|
312
|
+
|
|
313
|
+
| 类别 | 是什么 | 回答什么问题 |
|
|
314
|
+
|---|---|---|
|
|
315
|
+
| user-pasted | 人贴进消息里的图 | *我发过的那张截图在哪?* |
|
|
316
|
+
| agent-made | 这个 session 产生的其余所有图 | *那个页面当时长什么样?我当时生成的图是哪张?* |
|
|
317
|
+
|
|
318
|
+
只留第一类很诱人——人翻自己的记忆,想找的是自己的截图。但一个 agent 回溯自己干过的活,
|
|
319
|
+
要的是第二类:它画的示意图、它截的渲染结果、它为一篇文章配的插图。**1,767 个带图 session 里,
|
|
320
|
+
有 1,103 个一张人贴的图都没有。** 只留第一类,这些 session 就全哑了——而它们恰恰是 agent
|
|
321
|
+
做了大量视觉工作的那些。
|
|
322
|
+
|
|
323
|
+
### 第二类是补集,不是清单
|
|
324
|
+
|
|
325
|
+
第一版的实现是靠**枚举**定义"AI 产的图":`tool_result` 里的、`payload.output` 里的、
|
|
326
|
+
`tool.result` 里的。每一个位置都真实存在,这份清单依然是错的,因为**图片可能出现的方式只会
|
|
327
|
+
越来越多**,而枚举会悄无声息地漏掉它没预料到的那一种。
|
|
328
|
+
|
|
329
|
+
所以第二类改成了补集:数出这条记录里所有的图片信号,减去能明确认定为"人贴的",剩下的
|
|
330
|
+
一律归入,不问它从哪儿来。在 9,619 份对话记录上:
|
|
331
|
+
|
|
332
|
+
| | 枚举 | 补集 |
|
|
333
|
+
|---|---|---|
|
|
334
|
+
| AI 产的图 | 5,812 | **10,938** |
|
|
335
|
+
| 有图的 session | 1,507 | **1,767** |
|
|
336
|
+
| 人贴的图 | 1,629 | 1,629 |
|
|
337
|
+
|
|
338
|
+
**枚举漏掉了 5,126 张图和 376 个 session**,接近一半。漏得最多的是**生图**——它待在那份清单
|
|
339
|
+
知道的两个容器之外。而人贴的图在两种口径下数字完全一致,这正是关键的校验点:放宽第二类
|
|
340
|
+
没有污染精确的第一类。有一条回归测试钉住这件事:它喂给解析器一个源码里从未出现过的
|
|
341
|
+
`image_generation_call`,断言它落进第二类;在枚举式实现下那条测试必红。
|
|
342
|
+
|
|
343
|
+
一点诚实的说明:补集数的是*信号*,不是确认过的图片张数。一次生图可能同时留下调用和完成
|
|
344
|
+
两条记录,被数成两张。这个方向是刻意选的——它要回答的是"这儿有没有东西可看",而不是
|
|
345
|
+
"到底几张"。
|
|
346
|
+
|
|
321
347
|
## 接口
|
|
322
348
|
|
|
323
349
|
RecallNest 提供两种接口:
|
|
324
350
|
|
|
325
|
-
- **MCP
|
|
351
|
+
- **MCP(stdio)** —— 给任何能启动一条命令的客户端:CLI agent(Claude Code、Codex、Kimi、Antigravity)与能填 MCP 配置的 GUI app(豆包、Cherry Studio、ChatBox)
|
|
326
352
|
- **HTTP API** —— 给自定义 Agent、SDK 应用和任何 HTTP 客户端使用
|
|
327
353
|
|
|
328
354
|
### Agent 框架示例
|
|
@@ -338,7 +364,7 @@ RecallNest 提供两种接口:
|
|
|
338
364
|
---
|
|
339
365
|
|
|
340
366
|
<details>
|
|
341
|
-
<summary><strong>MCP 工具(
|
|
367
|
+
<summary><strong>MCP 工具(44 个)</strong></summary>
|
|
342
368
|
|
|
343
369
|
| 工具 | 说明 |
|
|
344
370
|
|------|------|
|
|
@@ -350,6 +376,7 @@ RecallNest 提供两种接口:
|
|
|
350
376
|
| `store_case` | 存储问题-方案对 |
|
|
351
377
|
| `promote_memory` | 显式升级 evidence 为持久记忆 |
|
|
352
378
|
| `promote_scan` | 扫描近期 evidence,自动晋升合格记忆为持久存储 |
|
|
379
|
+
| `promote_synthesis` | 扫描 dream 合成出的结论,把自身证据集撑得住的那些晋升为持久记忆 |
|
|
353
380
|
| `list_conflicts` | 列出或查看冲突候选 |
|
|
354
381
|
| `audit_conflicts` | 汇总过期/升级的冲突优先级 |
|
|
355
382
|
| `escalate_conflicts` | 预览或应用冲突升级元数据 |
|
|
@@ -462,6 +489,46 @@ bun run src/cli.ts doctor
|
|
|
462
489
|
|
|
463
490
|
---
|
|
464
491
|
|
|
492
|
+
## Web UI
|
|
493
|
+
|
|
494
|
+
<p align="center">
|
|
495
|
+
<img src="assets/dashboard.png" alt="RecallNest Dashboard" width="800" />
|
|
496
|
+
<br><em>Dashboard —— 总量、类别分布、健康评分、增长趋势一目了然。</em>
|
|
497
|
+
</p>
|
|
498
|
+
|
|
499
|
+
<p align="center">
|
|
500
|
+
<img src="assets/screenshots/ui-full.png" alt="RecallNest Search Workbench" width="800" />
|
|
501
|
+
<br><em>Search Workbench —— 混合检索 + Topic Tag 过滤 + 4 套检索策略 + Skills 浏览 + 资产管理。</em>
|
|
502
|
+
</p>
|
|
503
|
+
|
|
504
|
+
<p align="center">
|
|
505
|
+
<img src="assets/knowledge-graph.png" alt="RecallNest Knowledge Graph" width="800" />
|
|
506
|
+
<br><em>Knowledge Graph —— 交互式力导向图,语义桥接揭示跨域隐藏关联。</em>
|
|
507
|
+
</p>
|
|
508
|
+
|
|
509
|
+
```bash
|
|
510
|
+
bun run src/ui-server.ts
|
|
511
|
+
# → http://localhost:4317
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
## 最近更新
|
|
517
|
+
|
|
518
|
+
**v3.0** 把运行时下限提到 **Node 22**(本次唯一的破坏性变更,Bun 用户不受影响),
|
|
519
|
+
并给"合成出来的结论"开了一条通往稳定记忆的路:`dream` 产出的洞察现在可以凭它自己
|
|
520
|
+
那套已验证的证据被提升,而不是永远卡在证据层、下游谁也不敢依赖。
|
|
521
|
+
|
|
522
|
+
同批还修了一个限流回复引发的无限请求风暴——实测在一个正让我们慢下来的接口上
|
|
523
|
+
五秒打了六万多次请求。它是被新加的 HTTP 契约测试抓出来的:那些测试让真实的客户端类
|
|
524
|
+
去打一个本地回环服务,而不是把 SDK 打桩糊过去。
|
|
525
|
+
|
|
526
|
+
已有的 LanceDB 数据原地打开,不需要导出导入。
|
|
527
|
+
|
|
528
|
+
**完整变更历史(v3.0 到 v1.0,含每个版本的升级说明)在
|
|
529
|
+
[CHANGELOG.md](CHANGELOG.md)。**
|
|
530
|
+
|
|
531
|
+
|
|
465
532
|
## 多语言支持
|
|
466
533
|
|
|
467
534
|
RecallNest 开箱即用支持英文。如需多语言记忆(中文、日文、泰文及 20+ 种语言),安装 [babel-memory](https://github.com/AliceLJY/babel-memory) 及所需语言包:
|
|
@@ -498,7 +565,7 @@ RecallNest 持续维护中。所有主要架构阶段已完成——完整路线
|
|
|
498
565
|
RecallNest 起源于 [memory-lancedb-pro](https://github.com/CortexReach/memory-lancedb-pro) 的 fork,共享混合检索、衰减建模、记忆即系统的核心理念。关键区别:
|
|
499
566
|
|
|
500
567
|
- **memory-lancedb-pro** 是 OpenClaw 插件——为单个 OpenClaw Agent 添加长期记忆。
|
|
501
|
-
- **RecallNest** 是独立记忆层——通过 MCP + HTTP API
|
|
568
|
+
- **RecallNest** 是独立记忆层——通过 MCP + HTTP API 同时服务 CLI agent、GUI 聊天 app 与纯 HTTP 调用方,内建会话连续性、结构化资产和冲突管理。
|
|
502
569
|
|
|
503
570
|
## 致谢
|
|
504
571
|
|
|
@@ -518,13 +585,13 @@ RecallNest 起源于 [memory-lancedb-pro](https://github.com/CortexReach/memory-
|
|
|
518
585
|
| 项目 | 说明 |
|
|
519
586
|
|------|------|
|
|
520
587
|
| [babel-memory](https://github.com/AliceLJY/babel-memory) | BM25 多语言预处理——27+ 种语言,零依赖 |
|
|
521
|
-
|
|
|
522
|
-
|
|
|
523
|
-
| [wechat-ai-bridge](https://github.com/AliceLJY/wechat-ai-bridge) | 在微信中运行 Claude Code / Codex
|
|
524
|
-
| [telegram-ai-bridge](https://github.com/AliceLJY/telegram-ai-bridge) | Telegram Bot:Claude、Codex、
|
|
588
|
+
| content-alchemy *(private)* | 5 阶段 AI 写作管线 |
|
|
589
|
+
| content-publisher *(private)* | 图片生成 + 排版 + 微信公众号发布 |
|
|
590
|
+
| [wechat-ai-bridge](https://github.com/AliceLJY/wechat-ai-bridge) | 在微信中运行 Claude Code / Codex |
|
|
591
|
+
| [telegram-ai-bridge](https://github.com/AliceLJY/telegram-ai-bridge) | Telegram Bot:Claude、Codex、Agy、Kimi |
|
|
525
592
|
| [telegram-cli-bridge](https://github.com/AliceLJY/telegram-cli-bridge) | Telegram CLI 桥接 Gemini CLI |
|
|
526
593
|
| [openclaw-tunnel](https://github.com/AliceLJY/openclaw-tunnel) | Docker ↔ 宿主机 CLI 桥接 |
|
|
527
|
-
|
|
|
594
|
+
| openclaw-config *(private)* | OpenClaw Bot 配置与记忆备份 |
|
|
528
595
|
| [digital-clone-skill](https://github.com/AliceLJY/digital-clone-skill) | 从语料构建数字分身 |
|
|
529
596
|
| [claude-code-studio](https://github.com/AliceLJY/claude-code-studio) | Claude Code 多会话协作平台 |
|
|
530
597
|
| [cc-genius](https://github.com/AliceLJY/cc-genius) | Web 版 Claude 客户端(PWA)—— 自托管,iPad 可用 |
|
package/config.json.example
CHANGED
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
"path": "auto",
|
|
26
26
|
"glob": "*.md",
|
|
27
27
|
"description": "Claude Code memory files"
|
|
28
|
+
},
|
|
29
|
+
"minis": {
|
|
30
|
+
"path": "~/Desktop/minis-outbox/ingest",
|
|
31
|
+
"glob": "*.jsonl",
|
|
32
|
+
"description": "Minis (iPhone) conversations, dropped here by the agent itself"
|
|
28
33
|
}
|
|
29
34
|
},
|
|
30
35
|
"retrieval": {
|
|
@@ -36,6 +41,8 @@
|
|
|
36
41
|
"hardMinScore": 0.3
|
|
37
42
|
},
|
|
38
43
|
"scopeRelations": {
|
|
39
|
-
"project:example-a": [
|
|
44
|
+
"project:example-a": [
|
|
45
|
+
"project:example-b"
|
|
46
|
+
]
|
|
40
47
|
}
|
|
41
48
|
}
|
package/docs/api-reference.md
CHANGED
|
@@ -298,7 +298,7 @@ Each memory item supports:
|
|
|
298
298
|
"source": "agent",
|
|
299
299
|
"storedAt": "2026-03-16T02:11:00.000Z",
|
|
300
300
|
"disposition": "stored",
|
|
301
|
-
"canonicalKey": "entities:recallnest-is-the-shared-memory-layer-for-claude-code-codex-and-
|
|
301
|
+
"canonicalKey": "entities:recallnest-is-the-shared-memory-layer-for-claude-code-codex-and-agy"
|
|
302
302
|
}
|
|
303
303
|
]
|
|
304
304
|
}
|
package/integrations/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Best for AI coding assistants that support Model Context Protocol natively.
|
|
|
11
11
|
| Tool | Setup | What it does |
|
|
12
12
|
|------|-------|-------------|
|
|
13
13
|
| [Claude Code](claude-code/) | `setup.sh` adds MCP to `~/.claude.json` and installs rules in `~/.claude/CLAUDE.md` | Proactive continuity plus shared recall |
|
|
14
|
-
| [
|
|
14
|
+
| [Antigravity CLI (agy)](agy/) | `setup.sh` adds MCP to `~/.gemini/config/mcp_config.json` and installs rules in `~/.gemini/config/GEMINI.md` | Same MCP tools, shared index, continuity prompts |
|
|
15
15
|
| [Codex](codex/) | `setup.sh` adds MCP to `~/.codex/config.toml` and installs rules in `~/.codex/AGENTS.md` | Same MCP tools, shared index, continuity prompts |
|
|
16
16
|
|
|
17
17
|
All three share the same LanceDB index, and all three setup scripts now install a managed RecallNest continuity block so fresh windows are instructed to call `resume_context` and `checkpoint_session` at the right times.
|