recallnest 1.4.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/.claude-plugin/CLAUDE.md +29 -0
- package/.claude-plugin/marketplace.json +18 -0
- package/.env.example +3 -0
- package/.github/workflows/ci.yml +28 -0
- package/.mcp.json +9 -0
- package/CHANGELOG.md +51 -0
- package/CLAUDE.md +42 -0
- package/DEMO.md +94 -0
- package/EVAL.md +89 -0
- package/FAILURES.md +75 -0
- package/LICENSE +21 -0
- package/OPERATIONS.md +59 -0
- package/README.md +427 -0
- package/README_CN.md +425 -0
- package/ROADMAP.md +198 -0
- package/assets/recallnest-workbench.png +0 -0
- package/assets/ui/app.js +807 -0
- package/assets/ui/index.html +154 -0
- package/assets/ui/styles.css +605 -0
- package/assets/wechat-qr.jpg +0 -0
- package/config.json.example +38 -0
- package/daily-recall.sh +87 -0
- package/daily-reflections/2026-03-05.md +15 -0
- package/daily-reflections/2026-03-06.md +15 -0
- package/daily-reflections/2026-03-07.md +7 -0
- package/daily-reflections/2026-03-08.md +34 -0
- package/daily-reflections/2026-03-09.md +35 -0
- package/daily-reflections/2026-03-10.md +36 -0
- package/daily-reflections/2026-03-11.md +35 -0
- package/daily-reflections/2026-03-12.md +36 -0
- package/daily-reflections/2026-03-13.md +35 -0
- package/daily-reflections/2026-03-14.md +35 -0
- package/daily-reflections/2026-03-15.md +35 -0
- package/daily-reflections/2026-03-16.md +41 -0
- package/daily-reflections/2026-03-17.md +10 -0
- package/daily-reflections/2026-03-18.md +10 -0
- package/daily-reflections/2026-03-19.md +10 -0
- package/daily-reflections/2026-03-20.md +10 -0
- package/daily-reflections/2026-03-21.md +10 -0
- package/daily-reflections/2026-03-22.md +10 -0
- package/daily-reflections/2026-03-23.md +10 -0
- package/daily-reflections/2026-03-24.md +10 -0
- package/daily-reflections/2026-03-25.md +32 -0
- package/daily-reflections/2026-03-26.md +37 -0
- package/daily-reflections/2026-03-27.md +35 -0
- package/daily-reflections/2026-03-28.md +35 -0
- package/daily-reflections/2026-03-29.md +35 -0
- package/daily-reflections/2026-03-30.md +36 -0
- package/daily-reflections/2026-03-31.md +35 -0
- package/daily-reflections/2026-04-01.md +35 -0
- package/docs/api-reference.md +1291 -0
- package/docs/architecture.md +168 -0
- package/docs/memory-boundary-contract.md +226 -0
- package/docs/memory-categories.md +119 -0
- package/docs/pipeline-audit-ultramemory.md +177 -0
- package/docs/plans/2026-03-08-query-expansion.md +270 -0
- package/docs/plans/2026-03-16-continuity-layer.md +196 -0
- package/docs/plans/mcp-tiering-plan.md +126 -0
- package/docs/research/recall-quality-audit-2026-03-22.md +153 -0
- package/docs/self-evolution.md +198 -0
- package/docs/superpowers/plans/2026-03-19-ingest-pipeline-upgrade.md +782 -0
- package/docs/superpowers/specs/2026-03-19-ingest-pipeline-upgrade-design.md +77 -0
- package/docs/superpowers/specs/2026-03-23-pull-claude-desktop-design.md +95 -0
- package/eval/cases.json +85 -0
- package/eval/continuity/case-seeds.json +90 -0
- package/eval/continuity/cases.json +302 -0
- package/eval/continuity/memory-seeds.json +26 -0
- package/eval/continuity/pattern-seeds.json +100 -0
- package/eval/continuity/results-2026-03-16.md +117 -0
- package/eval/continuity/results-2026-03-19.md +453 -0
- package/eval/continuity/runbook.md +110 -0
- package/eval/continuity/seed-cases.md +54 -0
- package/eval/reports/2026-03-06-abstract-query-baseline.md +96 -0
- package/eval/reports/2026-03-06-aws-ssh-baseline.md +82 -0
- package/eval/reports/2026-03-06-baseline.md +82 -0
- package/eval/reports/query-expansion.md +138 -0
- package/integrations/README.md +57 -0
- package/integrations/claude-code/README.md +133 -0
- package/integrations/claude-code/claude-md-snippet.md +31 -0
- package/integrations/claude-code/setup.sh +66 -0
- package/integrations/claude-code/smoke-continuity.sh +452 -0
- package/integrations/codex/README.md +49 -0
- package/integrations/codex/agents-md-snippet.md +31 -0
- package/integrations/codex/setup.sh +58 -0
- package/integrations/examples/claude-agent-sdk/memory-agent.ts +182 -0
- package/integrations/examples/langchain/memory-chain.py +111 -0
- package/integrations/examples/openai-agents-sdk/memory-agent.py +109 -0
- package/integrations/gemini-cli/README.md +57 -0
- package/integrations/gemini-cli/gemini-md-snippet.md +31 -0
- package/integrations/gemini-cli/setup.sh +64 -0
- package/integrations/shared/install-managed-block.sh +51 -0
- package/lm +19 -0
- package/package.json +50 -0
- package/plan-v1.2-distributable.md +105 -0
- package/scripts/archive-distilled-junk.ts +116 -0
- package/scripts/backfill-l0l1l2.ts +98 -0
- package/scripts/blind-scan.ts +588 -0
- package/scripts/cleanup-step1-exact-dups.ts +117 -0
- package/scripts/cleanup-step2-template-dups.ts +113 -0
- package/scripts/cleanup-step3-stale-content.ts +149 -0
- package/scripts/cleanup-step4-orphan-scopes.ts +131 -0
- package/scripts/delete-distilled-junk.ts +88 -0
- package/scripts/distill-facts.ts +305 -0
- package/scripts/health-check.ts +343 -0
- package/scripts/incremental-ingest.sh +71 -0
- package/scripts/mlp-health-check.ts +382 -0
- package/scripts/pull-claude-desktop.ts +515 -0
- package/scripts/re-ingest-cc.sh +66 -0
- package/scripts/rebalance-memory-health.ts +181 -0
- package/scripts/run-desktop-ingest.sh +11 -0
- package/scripts/start-server.sh +12 -0
- package/scripts/viz-dashboard.html +423 -0
- package/scripts/viz-export.ts +703 -0
- package/src/__tests__/access-tracker-novelty.test.ts +228 -0
- package/src/__tests__/auto-consolidation.test.ts +168 -0
- package/src/__tests__/auto-recall.test.ts +131 -0
- package/src/__tests__/batch-dedup.test.ts +65 -0
- package/src/__tests__/capture-engine.test.ts +1142 -0
- package/src/__tests__/capture-heuristic.test.ts +171 -0
- package/src/__tests__/cascade-forget.test.ts +210 -0
- package/src/__tests__/category-min-scores.test.ts +33 -0
- package/src/__tests__/confidence-tracker.test.ts +196 -0
- package/src/__tests__/conflict-advisor.test.ts +206 -0
- package/src/__tests__/conflict-escalation.test.ts +149 -0
- package/src/__tests__/conflict-lifecycle.test.ts +83 -0
- package/src/__tests__/conflict-output.test.ts +85 -0
- package/src/__tests__/conflict-store.test.ts +374 -0
- package/src/__tests__/consolidation-engine.test.ts +181 -0
- package/src/__tests__/context-composer-pins.test.ts +64 -0
- package/src/__tests__/context-composer-task-selection.test.ts +24 -0
- package/src/__tests__/context-renderer.test.ts +91 -0
- package/src/__tests__/continuity-eval.test.ts +275 -0
- package/src/__tests__/continuity-schema.test.ts +97 -0
- package/src/__tests__/core-recall-eval.test.ts +235 -0
- package/src/__tests__/core-summary.test.ts +109 -0
- package/src/__tests__/dedup-actions.test.ts +58 -0
- package/src/__tests__/deterministic-id.test.ts +39 -0
- package/src/__tests__/doctor.test.ts +303 -0
- package/src/__tests__/drill-down.test.ts +108 -0
- package/src/__tests__/embedder.test.ts +122 -0
- package/src/__tests__/entity-resolver.test.ts +58 -0
- package/src/__tests__/event-segmenter.test.ts +153 -0
- package/src/__tests__/hotness-blend.test.ts +76 -0
- package/src/__tests__/ingest.test.ts +360 -0
- package/src/__tests__/kg-extractor.test.ts +184 -0
- package/src/__tests__/kg-store.test.ts +198 -0
- package/src/__tests__/llm-consolidation.test.ts +226 -0
- package/src/__tests__/memory-boundaries.test.ts +237 -0
- package/src/__tests__/memory-health-rebalance.test.ts +144 -0
- package/src/__tests__/memory-output.test.ts +215 -0
- package/src/__tests__/multi-vector.test.ts +242 -0
- package/src/__tests__/ppr-traversal.test.ts +256 -0
- package/src/__tests__/preference-guard-smoke.test.ts +211 -0
- package/src/__tests__/preference-matcher.test.ts +230 -0
- package/src/__tests__/preference-slots.test.ts +106 -0
- package/src/__tests__/prospective-memory.test.ts +283 -0
- package/src/__tests__/query-entity-detector.test.ts +171 -0
- package/src/__tests__/query-expander.test.ts +34 -0
- package/src/__tests__/recall-mode.test.ts +64 -0
- package/src/__tests__/result-synthesizer.test.ts +198 -0
- package/src/__tests__/resume-context.test.ts +4743 -0
- package/src/__tests__/retrieval-trace.test.ts +213 -0
- package/src/__tests__/retriever-boundary-weight.test.ts +136 -0
- package/src/__tests__/retroactive-boost.test.ts +223 -0
- package/src/__tests__/scope-inventory.test.ts +200 -0
- package/src/__tests__/scope-policy.test.ts +69 -0
- package/src/__tests__/session-checkpoint.test.ts +259 -0
- package/src/__tests__/session-gc.test.ts +215 -0
- package/src/__tests__/store-scope-audit.test.ts +81 -0
- package/src/__tests__/temporal-parser.test.ts +241 -0
- package/src/__tests__/term-registry.test.ts +121 -0
- package/src/__tests__/tool-output-compressor.test.ts +133 -0
- package/src/__tests__/version-manager.test.ts +213 -0
- package/src/__tests__/workflow-observation.test.ts +400 -0
- package/src/access-tracker.ts +316 -0
- package/src/adaptive-retrieval.ts +64 -0
- package/src/api-server.ts +667 -0
- package/src/asset-sync.ts +79 -0
- package/src/auto-consolidation.ts +133 -0
- package/src/auto-gc.ts +124 -0
- package/src/auto-recall.ts +95 -0
- package/src/capture-engine.ts +931 -0
- package/src/capture-heuristic.ts +177 -0
- package/src/cascade-forget.ts +135 -0
- package/src/chunker.ts +253 -0
- package/src/cli.ts +1917 -0
- package/src/confidence-tracker.ts +166 -0
- package/src/conflict-advisor.ts +433 -0
- package/src/conflict-engine.ts +181 -0
- package/src/conflict-escalation.ts +138 -0
- package/src/conflict-lifecycle.ts +67 -0
- package/src/conflict-output.ts +218 -0
- package/src/conflict-schema.ts +130 -0
- package/src/conflict-store.ts +127 -0
- package/src/consolidation-engine.ts +256 -0
- package/src/context-composer-pins.ts +183 -0
- package/src/context-composer-queries.ts +121 -0
- package/src/context-composer-scope.ts +56 -0
- package/src/context-composer-stable-selection.ts +200 -0
- package/src/context-composer-stable.ts +217 -0
- package/src/context-composer-task-fallbacks.ts +36 -0
- package/src/context-composer-task-ranking.ts +197 -0
- package/src/context-composer-task-results.ts +137 -0
- package/src/context-composer-task-selection.ts +342 -0
- package/src/context-composer-text.ts +57 -0
- package/src/context-composer.ts +300 -0
- package/src/context-renderer.ts +179 -0
- package/src/decay-engine.ts +189 -0
- package/src/doctor.ts +543 -0
- package/src/embedder.ts +557 -0
- package/src/entity-resolver.ts +131 -0
- package/src/eval.ts +632 -0
- package/src/event-segmenter.ts +216 -0
- package/src/ingest.ts +1822 -0
- package/src/kg-extractor.ts +217 -0
- package/src/kg-store.ts +353 -0
- package/src/legacy-scope-review.ts +53 -0
- package/src/llm-client.ts +629 -0
- package/src/llm-consolidation.ts +168 -0
- package/src/mcp-server.ts +1337 -0
- package/src/memory-assets.ts +475 -0
- package/src/memory-boundaries.ts +354 -0
- package/src/memory-health-rebalance.ts +220 -0
- package/src/memory-output.ts +474 -0
- package/src/memory-schema.ts +184 -0
- package/src/multi-vector.ts +234 -0
- package/src/noise-filter.ts +155 -0
- package/src/ppr-traversal.ts +279 -0
- package/src/preference-matcher.ts +174 -0
- package/src/preference-slots.ts +259 -0
- package/src/prospective-memory.ts +198 -0
- package/src/query-entity-detector.ts +207 -0
- package/src/query-expander.ts +98 -0
- package/src/result-synthesizer.ts +114 -0
- package/src/retrieval-profiles.ts +101 -0
- package/src/retrieval-trace.ts +94 -0
- package/src/retriever.ts +1338 -0
- package/src/retroactive-boost.ts +154 -0
- package/src/rif.ts +73 -0
- package/src/runtime-config.ts +172 -0
- package/src/schema-utils.ts +56 -0
- package/src/scope-inventory.ts +310 -0
- package/src/scope-policy.ts +142 -0
- package/src/session-engine.ts +168 -0
- package/src/session-output.ts +96 -0
- package/src/session-schema.ts +60 -0
- package/src/session-store.ts +293 -0
- package/src/stderr-log.ts +16 -0
- package/src/store.ts +903 -0
- package/src/temporal-parser.ts +318 -0
- package/src/term-registry.ts +791 -0
- package/src/tool-output-compressor.ts +115 -0
- package/src/tracker.ts +57 -0
- package/src/ui-server.ts +430 -0
- package/src/version-manager.ts +172 -0
- package/src/workflow-observation-engine.ts +316 -0
- package/src/workflow-observation-managed.ts +83 -0
- package/src/workflow-observation-output.ts +86 -0
- package/src/workflow-observation-schema.ts +87 -0
- package/src/workflow-observation-scope-review.ts +409 -0
- package/src/workflow-observation-store.ts +69 -0
package/README_CN.md
ADDED
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# RecallNest
|
|
4
|
+
|
|
5
|
+
**面向 Claude Code、Codex、Gemini CLI 的共享记忆层**
|
|
6
|
+
|
|
7
|
+
*一套记忆,三个终端,上下文跨窗口延续。*
|
|
8
|
+
|
|
9
|
+
基于 LanceDB 的本地优先记忆系统,把散落在三个终端的对话历史沉淀为可复用知识,跨终端共享,自动召回。
|
|
10
|
+
|
|
11
|
+
[](https://github.com/AliceLJY/recallnest)
|
|
12
|
+
[](LICENSE)
|
|
13
|
+
[](https://bun.sh)
|
|
14
|
+
[](https://lancedb.com)
|
|
15
|
+
[](https://modelcontextprotocol.io)
|
|
16
|
+
[](https://github.com/AliceLJY/recallnest)
|
|
17
|
+
|
|
18
|
+
[English](README.md) | **简体中文** | [Roadmap](ROADMAP.md)
|
|
19
|
+
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 为什么需要 RecallNest?
|
|
25
|
+
|
|
26
|
+
大多数编程 Agent 一开新窗口就失忆。更糟的是,你的历史上下文分散在三个终端里,互相不通。
|
|
27
|
+
|
|
28
|
+
### 没有 RecallNest —— 每个窗口从零开始:
|
|
29
|
+
|
|
30
|
+
> **你(Claude Code):**"Docker 配置在 `/opt/app/config.json`,用 4318 端口。"
|
|
31
|
+
>
|
|
32
|
+
> *(切到 Codex)*
|
|
33
|
+
>
|
|
34
|
+
> **你:**"配置路径是……等下让我再找找。"😤
|
|
35
|
+
>
|
|
36
|
+
> *(第二天,新开 Claude Code 窗口)*
|
|
37
|
+
>
|
|
38
|
+
> **你:**"这个 bug 上周刚修过!方案是……"
|
|
39
|
+
>
|
|
40
|
+
> **Agent:**"我没有之前会话的上下文。"🤷
|
|
41
|
+
|
|
42
|
+
### 有了 RecallNest —— 上下文无缝延续:
|
|
43
|
+
|
|
44
|
+
> **你(Claude Code):**"Docker 配置在 `/opt/app/config.json`,用 4318 端口。"
|
|
45
|
+
>
|
|
46
|
+
> *(切到 Codex —— 同一套记忆层)*
|
|
47
|
+
>
|
|
48
|
+
> **Agent:**(自动召回项目实体)"使用 `/opt/app/config.json`,端口 4318。"✅
|
|
49
|
+
>
|
|
50
|
+
> *(第二天,新窗口)*
|
|
51
|
+
>
|
|
52
|
+
> **Agent:**(resume_context 自动触发)"接续昨天 —— Docker 端口冲突已通过……解决。"✅
|
|
53
|
+
|
|
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
|
+
| **多源导入** | 导入三个终端已有的对话历史 |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 快速开始
|
|
76
|
+
|
|
77
|
+
### 方式 A:Claude Code Plugin(推荐)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
/plugin marketplace add AliceLJY/recallnest
|
|
81
|
+
/plugin install recallnest@AliceLJY
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
RecallNest 随 Claude Code 自动启动,无需手动配置 MCP。
|
|
85
|
+
|
|
86
|
+
> **前置要求:** 安装 [Bun](https://bun.sh) 运行时。首次启动自动安装依赖。
|
|
87
|
+
|
|
88
|
+
### 方式 B:手动安装
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
git clone https://github.com/AliceLJY/recallnest.git
|
|
92
|
+
cd recallnest
|
|
93
|
+
bun install
|
|
94
|
+
cp config.json.example config.json
|
|
95
|
+
cp .env.example .env
|
|
96
|
+
# 编辑 .env → 填入 JINA_API_KEY
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 启动服务
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
bun run api
|
|
103
|
+
# → RecallNest API running at http://localhost:4318
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 试一下
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# 存入一条记忆
|
|
110
|
+
curl -X POST http://localhost:4318/v1/store \
|
|
111
|
+
-H "Content-Type: application/json" \
|
|
112
|
+
-d '{"text": "用户偏好暗色模式", "category": "preferences"}'
|
|
113
|
+
|
|
114
|
+
# 搜索记忆
|
|
115
|
+
curl -X POST http://localhost:4318/v1/recall \
|
|
116
|
+
-H "Content-Type: application/json" \
|
|
117
|
+
-d '{"query": "用户偏好"}'
|
|
118
|
+
|
|
119
|
+
# 查看统计
|
|
120
|
+
curl http://localhost:4318/v1/stats
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 接入终端
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
bash integrations/claude-code/setup.sh
|
|
127
|
+
bash integrations/gemini-cli/setup.sh
|
|
128
|
+
bash integrations/codex/setup.sh
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
每个脚本会同时安装 MCP 和 continuity 规则,新窗口自动触发 `resume_context`。
|
|
132
|
+
|
|
133
|
+
### 索引已有对话
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
bun run src/cli.ts ingest --source all
|
|
137
|
+
bun run seed:continuity
|
|
138
|
+
bun run src/cli.ts doctor
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 架构
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
┌──────────────────────────────────────────────────────────┐
|
|
147
|
+
│ 客户端层 │
|
|
148
|
+
├──────────┬──────────┬──────────┬──────────────────────────┤
|
|
149
|
+
│ Claude │ Gemini │ Codex │ 自定义 Agent / curl │
|
|
150
|
+
│ Code │ CLI │ │ │
|
|
151
|
+
└────┬─────┴────┬─────┴────┬─────┴──────┬──────────────────┘
|
|
152
|
+
│ │ │ │
|
|
153
|
+
└──── MCP (stdio) ───┘ HTTP API(端口 4318)
|
|
154
|
+
│ │
|
|
155
|
+
▼ ▼
|
|
156
|
+
┌──────────────────────────────────────────────────────────┐
|
|
157
|
+
│ 集成层 │
|
|
158
|
+
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
|
|
159
|
+
│ │ MCP Server │ │ HTTP API Server │ │
|
|
160
|
+
│ │ 29 个工具 │ │ 19 个端点 │ │
|
|
161
|
+
│ └─────────┬───────────┘ └──────────┬─────────────────┘ │
|
|
162
|
+
└────────────┼─────────────────────────┼───────────────────┘
|
|
163
|
+
└──────────┬──────────────┘
|
|
164
|
+
▼
|
|
165
|
+
┌──────────────────────────────────────────────────────────┐
|
|
166
|
+
│ 核心引擎 │
|
|
167
|
+
│ │
|
|
168
|
+
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
|
|
169
|
+
│ │ 检索器 │ │ 分类器 │ │ 上下文编排器 │ │
|
|
170
|
+
│ │(向量 + │ │(6 类分类) │ │(resume_context) │ │
|
|
171
|
+
│ │ BM25 + RRF)│ │ │ │ │ │
|
|
172
|
+
│ └────────────┘ └────────────┘ └──────────────────────┘ │
|
|
173
|
+
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
|
|
174
|
+
│ │ 衰减引擎 │ │ 冲突引擎 │ │ 捕获引擎 │ │
|
|
175
|
+
│ │(Weibull) │ │(审计 + │ │(evidence → durable)│ │
|
|
176
|
+
│ │ │ │ 合并) │ │ │ │
|
|
177
|
+
│ └────────────┘ └────────────┘ └──────────────────────┘ │
|
|
178
|
+
└──────────────────────────┬───────────────────────────────┘
|
|
179
|
+
▼
|
|
180
|
+
┌──────────────────────────────────────────────────────────┐
|
|
181
|
+
│ 存储层 │
|
|
182
|
+
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
|
|
183
|
+
│ │ LanceDB │ │ Jina Embeddings v5 │ │
|
|
184
|
+
│ │(向量 + 列式存储) │ │(1024 维,任务感知) │ │
|
|
185
|
+
│ └─────────────────────┘ └────────────────────────────┘ │
|
|
186
|
+
└──────────────────────────────────────────────────────────┘
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
> 完整架构详解:[`docs/architecture.md`](docs/architecture.md)
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 集成方式
|
|
194
|
+
|
|
195
|
+
RecallNest 提供两条接入路径:
|
|
196
|
+
|
|
197
|
+
- **MCP** —— 给 Claude Code、Gemini CLI、Codex 等终端工具使用
|
|
198
|
+
- **HTTP API** —— 给自定义 Agent 和 SDK 应用使用
|
|
199
|
+
|
|
200
|
+
### Agent 框架示例
|
|
201
|
+
|
|
202
|
+
示例位于 [`integrations/examples/`](integrations/examples/):
|
|
203
|
+
|
|
204
|
+
| 框架 | 示例文件 | 语言 |
|
|
205
|
+
|------|---------|------|
|
|
206
|
+
| [Claude Agent SDK](integrations/examples/claude-agent-sdk/) | `memory-agent.ts` | TypeScript |
|
|
207
|
+
| [OpenAI Agents SDK](integrations/examples/openai-agents-sdk/) | `memory-agent.py` | Python |
|
|
208
|
+
| [LangChain](integrations/examples/langchain/) | `memory-chain.py` | Python |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
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
|
+
<details>
|
|
281
|
+
<summary><strong>MCP 工具(29 个)</strong></summary>
|
|
282
|
+
|
|
283
|
+
| 工具 | 说明 |
|
|
284
|
+
|------|------|
|
|
285
|
+
| `workflow_observe` | 记录一条 append-only workflow observation,不写进普通 memory |
|
|
286
|
+
| `workflow_health` | 查看单个 workflow 的健康度,或输出退化 workflow dashboard |
|
|
287
|
+
| `workflow_evidence` | 为某个 workflow primitive 生成 evidence pack |
|
|
288
|
+
| `store_memory` | 存一条可跨窗口复用的长期记忆 |
|
|
289
|
+
| `store_workflow_pattern` | 把可复用工作流存成 durable `patterns` 记忆 |
|
|
290
|
+
| `store_case` | 把可复用问题-解决方案存成 durable `cases` 记忆 |
|
|
291
|
+
| `promote_memory` | 把 evidence 显式升级成 durable memory |
|
|
292
|
+
| `list_conflicts` | 列出或查看 promotion 冲突候选项 |
|
|
293
|
+
| `audit_conflicts` | 汇总 stale / escalated 冲突的优先级 |
|
|
294
|
+
| `escalate_conflicts` | 预览或应用冲突升级元数据 |
|
|
295
|
+
| `resolve_conflict` | 解决一条冲突候选项(保留 / 接受 / 合并) |
|
|
296
|
+
| `checkpoint_session` | 把当前工作状态存成独立 checkpoint |
|
|
297
|
+
| `latest_checkpoint` | 查看某个 session 或 scope 的最新 checkpoint |
|
|
298
|
+
| `resume_context` | 为新窗口编排启动上下文 |
|
|
299
|
+
| `search_memory` | 在任务开始时主动回忆 |
|
|
300
|
+
| `explain_memory` | 解释为什么这些记忆被命中 |
|
|
301
|
+
| `distill_memory` | 把结果提炼成简报 |
|
|
302
|
+
| `brief_memory` | 创建结构化 brief 并回写索引 |
|
|
303
|
+
| `pin_memory` | 把一条带 scope 边界的记忆提升成 pinned asset |
|
|
304
|
+
| `export_memory` | 把 distill 结果导出到磁盘 |
|
|
305
|
+
| `list_pins` | 列出 pinned 记忆 |
|
|
306
|
+
| `list_assets` | 列出所有结构化资产 |
|
|
307
|
+
| `list_dirty_briefs` | 预览旧规则生成的 dirty brief 资产 |
|
|
308
|
+
| `clean_dirty_briefs` | 归档 dirty brief 并清理其索引行 |
|
|
309
|
+
| `memory_stats` | 查看索引统计 |
|
|
310
|
+
| `memory_drill_down` | 查看某条记忆的完整元数据和来源追踪 |
|
|
311
|
+
| `auto_capture` | 零 LLM 调用,从文本中启发式提取并存储记忆信号 |
|
|
312
|
+
| `set_reminder` | 设置前瞻性记忆提醒,在未来会话中自动浮现 |
|
|
313
|
+
| `consolidate_memories` | 聚类近重复记忆并合并(默认 dry-run,不直接写入) |
|
|
314
|
+
|
|
315
|
+
</details>
|
|
316
|
+
|
|
317
|
+
<details>
|
|
318
|
+
<summary><strong>HTTP API(19 个端点)</strong></summary>
|
|
319
|
+
|
|
320
|
+
基础地址:`http://localhost:4318`
|
|
321
|
+
|
|
322
|
+
| 端点 | 方法 | 说明 |
|
|
323
|
+
|------|------|------|
|
|
324
|
+
| `/v1/recall` | POST | 快速语义搜索 |
|
|
325
|
+
| `/v1/store` | POST | 写入一条新记忆 |
|
|
326
|
+
| `/v1/capture` | POST | 批量写入结构化记忆 |
|
|
327
|
+
| `/v1/pattern` | POST | 写入结构化 workflow pattern |
|
|
328
|
+
| `/v1/case` | POST | 写入结构化 problem-solution case |
|
|
329
|
+
| `/v1/promote` | POST | 把 evidence 显式升级成 durable memory |
|
|
330
|
+
| `/v1/conflicts` | GET | 列出或查看冲突候选项 |
|
|
331
|
+
| `/v1/conflicts/audit` | GET | 汇总冲突优先级 |
|
|
332
|
+
| `/v1/conflicts/escalate` | POST | 预览或应用冲突升级元数据 |
|
|
333
|
+
| `/v1/conflicts/resolve` | POST | 解决一条冲突候选项(保留 / 接受 / 合并) |
|
|
334
|
+
| `/v1/checkpoint` | POST | 写入当前工作状态的 checkpoint |
|
|
335
|
+
| `/v1/workflow-observe` | POST | 把 workflow observation 写到独立 store,不混入 durable memory |
|
|
336
|
+
| `/v1/checkpoint/latest` | GET | 按 session 或 scope 取最新 checkpoint |
|
|
337
|
+
| `/v1/workflow-health` | GET | 查看 workflow 健康度,或返回退化 workflow dashboard |
|
|
338
|
+
| `/v1/workflow-evidence` | GET | 从最近 issue observation 生成 workflow evidence pack |
|
|
339
|
+
| `/v1/resume` | POST | 为新窗口编排启动上下文 |
|
|
340
|
+
| `/v1/search` | POST | 高级搜索,返回完整元数据 |
|
|
341
|
+
| `/v1/stats` | GET | 查看记忆统计 |
|
|
342
|
+
| `/v1/health` | GET | 健康检查 |
|
|
343
|
+
|
|
344
|
+
完整文档:[`docs/api-reference.md`](docs/api-reference.md)
|
|
345
|
+
|
|
346
|
+
</details>
|
|
347
|
+
|
|
348
|
+
<details>
|
|
349
|
+
<summary><strong>CLI 命令</strong></summary>
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
# 搜索与探索
|
|
353
|
+
bun run src/cli.ts search "你的查询"
|
|
354
|
+
bun run src/cli.ts explain "你的查询" --profile debug
|
|
355
|
+
bun run src/cli.ts distill "主题" --profile writing
|
|
356
|
+
bun run src/cli.ts stats
|
|
357
|
+
|
|
358
|
+
# Workflow observation
|
|
359
|
+
bun run src/cli.ts workflow-observe resume_context "Fresh window skipped continuity recovery." --outcome missed --scope project:recallnest
|
|
360
|
+
bun run src/cli.ts workflow-health resume_context --scope project:recallnest
|
|
361
|
+
bun run src/cli.ts workflow-evidence checkpoint_session --scope project:recallnest
|
|
362
|
+
|
|
363
|
+
# 冲突管理
|
|
364
|
+
bun run src/cli.ts conflicts list
|
|
365
|
+
bun run src/cli.ts conflicts list --attention resolved
|
|
366
|
+
bun run src/cli.ts conflicts list --group-by cluster --attention resolved
|
|
367
|
+
bun run src/cli.ts conflicts audit
|
|
368
|
+
bun run src/cli.ts conflicts audit --export --format md
|
|
369
|
+
bun run src/cli.ts conflicts escalate --attention stale
|
|
370
|
+
bun run src/cli.ts conflicts show af70545a
|
|
371
|
+
bun run src/cli.ts conflicts resolve af70545a --keep-existing
|
|
372
|
+
bun run src/cli.ts conflicts resolve af70545a --merge
|
|
373
|
+
bun run src/cli.ts conflicts resolve --all --keep-existing --status open
|
|
374
|
+
|
|
375
|
+
# 导入与诊断
|
|
376
|
+
bun run src/cli.ts ingest --source all
|
|
377
|
+
bun run src/cli.ts doctor
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
</details>
|
|
381
|
+
|
|
382
|
+
<details>
|
|
383
|
+
<summary><strong>Web UI(调试用)</strong></summary>
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
bun run src/ui-server.ts
|
|
387
|
+
# → http://localhost:4317
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
Web UI 主要用于调试和探索,不是主要生产接口。
|
|
391
|
+
|
|
392
|
+
</details>
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 与 memory-lancedb-pro 的关系
|
|
397
|
+
|
|
398
|
+
RecallNest 最初从 [memory-lancedb-pro](https://github.com/CortexReach/memory-lancedb-pro) fork 而来,共享其混合检索、衰减建模和记忆工程化的核心思路。关键区别:
|
|
399
|
+
|
|
400
|
+
- **memory-lancedb-pro** 是 OpenClaw 插件 —— 为单个 OpenClaw Agent 添加长期记忆。
|
|
401
|
+
- **RecallNest** 是独立记忆层 —— 同时服务 Claude Code、Codex 和 Gemini CLI,内建会话连续性、结构化资产和冲突管理。
|
|
402
|
+
|
|
403
|
+
## 致谢
|
|
404
|
+
|
|
405
|
+
| 来源 | 贡献 |
|
|
406
|
+
|------|------|
|
|
407
|
+
| [claude-memory-pro](https://github.com/CortexReach/claude-memory-pro) by [@win4r](https://github.com/win4r) | 检索核心思路和实现基础 |
|
|
408
|
+
| Claude Code | 基础架构和早期搭建 |
|
|
409
|
+
| OpenAI Codex | 产品化和 MCP 扩展 |
|
|
410
|
+
|
|
411
|
+
特别感谢秦超老师([@win4r](https://github.com/win4r))和 [CortexReach](https://github.com/CortexReach) 团队的基础工作。
|
|
412
|
+
|
|
413
|
+
## Star History
|
|
414
|
+
|
|
415
|
+
<a href="https://star-history.com/#AliceLJY/recallnest&Date">
|
|
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>
|
|
422
|
+
|
|
423
|
+
## 许可证
|
|
424
|
+
|
|
425
|
+
MIT
|
package/ROADMAP.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# RecallNest Roadmap
|
|
2
|
+
|
|
3
|
+
> Vision: a shared memory layer for Claude Code, Codex, and Gemini CLI that gets more useful over time.
|
|
4
|
+
|
|
5
|
+
RecallNest is no longer best described as "local transcript search." The real target is stricter:
|
|
6
|
+
|
|
7
|
+
- one memory layer shared by the three terminals
|
|
8
|
+
- stable context that survives across windows
|
|
9
|
+
- memory that becomes more reusable, not just larger
|
|
10
|
+
|
|
11
|
+
This roadmap reflects that direction.
|
|
12
|
+
|
|
13
|
+
## The Core Problem
|
|
14
|
+
|
|
15
|
+
Today, most coding agents have weak continuity:
|
|
16
|
+
|
|
17
|
+
- past context is scattered across tools
|
|
18
|
+
- a new window often behaves like a reset
|
|
19
|
+
- search is passive, so memory works only when explicitly invoked
|
|
20
|
+
- transcript archives are large, but high-value memories are sparse
|
|
21
|
+
|
|
22
|
+
RecallNest exists to close that gap without giving up local control.
|
|
23
|
+
|
|
24
|
+
What matters first is this: opening another window should not erase stable context about the user, projects, patterns, and past solutions.
|
|
25
|
+
|
|
26
|
+
## Status Summary
|
|
27
|
+
|
|
28
|
+
### Already Done
|
|
29
|
+
|
|
30
|
+
- Shared local LanceDB index
|
|
31
|
+
- MCP server for Claude Code, Gemini CLI, and Codex
|
|
32
|
+
- HTTP API for custom agents
|
|
33
|
+
- Ingestion from existing transcripts and memory files
|
|
34
|
+
- Hybrid retrieval: vector + BM25 + reranking
|
|
35
|
+
- 6-category memory classification
|
|
36
|
+
- Tier-aware decay and access reinforcement
|
|
37
|
+
- Brief and pin assets re-indexed into recall
|
|
38
|
+
- Session checkpoints for active work state
|
|
39
|
+
- `resume_context` composition for fresh windows
|
|
40
|
+
- Continuity eval harness with seed cases and baseline reports
|
|
41
|
+
- Setup scripts, diagnostics, and debugging UI
|
|
42
|
+
- Explicit evidence -> durable promotion with provenance and `canonicalKey`
|
|
43
|
+
- Conflict candidates, review, audit, escalation, merge resolution, and audit export
|
|
44
|
+
|
|
45
|
+
### Current Gap
|
|
46
|
+
|
|
47
|
+
RecallNest is already usable as a three-terminal continuity layer, but a few operating gaps remain.
|
|
48
|
+
|
|
49
|
+
The main gaps are:
|
|
50
|
+
|
|
51
|
+
- continuity eval still depends on the latest live checkpoint in one case
|
|
52
|
+
- conflict review is strong in CLI, but scheduled audit/export is still missing
|
|
53
|
+
- high-signal memory extraction and promotion quality can still improve
|
|
54
|
+
|
|
55
|
+
## Phase 1: Shared Memory Foundation
|
|
56
|
+
|
|
57
|
+
Status: done
|
|
58
|
+
|
|
59
|
+
Goal: make all three terminals use the same local memory base.
|
|
60
|
+
|
|
61
|
+
Delivered:
|
|
62
|
+
|
|
63
|
+
- one local index shared by Claude Code, Codex, and Gemini CLI
|
|
64
|
+
- MCP integration scripts for the three terminals
|
|
65
|
+
- HTTP API for agent frameworks
|
|
66
|
+
- multi-source ingest pipeline
|
|
67
|
+
|
|
68
|
+
## Phase 2: Searchable Recall Engine
|
|
69
|
+
|
|
70
|
+
Status: done
|
|
71
|
+
|
|
72
|
+
Goal: make the memory base actually retrievable.
|
|
73
|
+
|
|
74
|
+
Delivered:
|
|
75
|
+
|
|
76
|
+
- hybrid retrieval
|
|
77
|
+
- retrieval profiles
|
|
78
|
+
- memory categories
|
|
79
|
+
- tiering and decay
|
|
80
|
+
- explain, distill, brief, and pin flows
|
|
81
|
+
|
|
82
|
+
## Phase 3: Cross-Window Continuity Layer
|
|
83
|
+
|
|
84
|
+
Status: usable in the current stage
|
|
85
|
+
|
|
86
|
+
Goal: a fresh window should recall stable context without depending on the user to restate it.
|
|
87
|
+
|
|
88
|
+
Delivered:
|
|
89
|
+
|
|
90
|
+
- session checkpoints for active work state
|
|
91
|
+
- `resume_context` for fresh windows
|
|
92
|
+
- context composition that prefers stable background over blindly replaying the last topic
|
|
93
|
+
- managed continuity rules installed by setup for Claude Code, Codex, and Gemini CLI
|
|
94
|
+
|
|
95
|
+
Remaining work:
|
|
96
|
+
|
|
97
|
+
- isolate eval from live checkpoint drift
|
|
98
|
+
- keep measuring instruction-driven startup continuity across the three terminals
|
|
99
|
+
- expand checkpoint-aware continuity coverage and keep tracking trendlines
|
|
100
|
+
|
|
101
|
+
Likely interfaces:
|
|
102
|
+
|
|
103
|
+
- `resume_context`
|
|
104
|
+
- `checkpoint_session`
|
|
105
|
+
- startup-oriented MCP and API flows
|
|
106
|
+
|
|
107
|
+
## Phase 4: High-Signal Memory Capture
|
|
108
|
+
|
|
109
|
+
Status: usable in the current stage
|
|
110
|
+
|
|
111
|
+
Goal: store more useful memory and less raw transcript residue.
|
|
112
|
+
|
|
113
|
+
Delivered:
|
|
114
|
+
|
|
115
|
+
- `store_memory` for MCP
|
|
116
|
+
- dedicated workflow-pattern capture for durable `patterns`
|
|
117
|
+
- structured capture endpoints for non-MCP agents
|
|
118
|
+
- explicit evidence promotion into durable memory
|
|
119
|
+
- boundary guards for `evidence / durable / session`
|
|
120
|
+
- conflict handling when new durable candidates disagree with existing canonical owners
|
|
121
|
+
|
|
122
|
+
Remaining work:
|
|
123
|
+
|
|
124
|
+
- improve extraction toward durable facts, preferences, entities, cases, and patterns
|
|
125
|
+
- better dedup before low-value text reaches the index
|
|
126
|
+
|
|
127
|
+
Likely interfaces:
|
|
128
|
+
|
|
129
|
+
- `store_memory` for MCP
|
|
130
|
+
- structured capture endpoints for non-MCP agents
|
|
131
|
+
|
|
132
|
+
## Phase 5: Memory Boundary and Conflict Operations
|
|
133
|
+
|
|
134
|
+
Status: usable in the current stage
|
|
135
|
+
|
|
136
|
+
Goal: stop durable memory from drifting silently and make conflicts operable in the terminal.
|
|
137
|
+
|
|
138
|
+
Delivered:
|
|
139
|
+
|
|
140
|
+
- `promote_memory` with provenance and `canonicalKey`
|
|
141
|
+
- conflict candidates instead of silent overwrite
|
|
142
|
+
- terminal conflict review: `list / show / resolve`
|
|
143
|
+
- conflict advice, clusters, audit, escalation, and `merge`
|
|
144
|
+
- audit export snapshots in markdown or JSON
|
|
145
|
+
|
|
146
|
+
Remaining work:
|
|
147
|
+
|
|
148
|
+
- scheduled audit / export for recurring review
|
|
149
|
+
- stronger merge and promotion heuristics
|
|
150
|
+
|
|
151
|
+
Likely interfaces:
|
|
152
|
+
|
|
153
|
+
- `resolve_conflict`
|
|
154
|
+
- `audit_conflicts`
|
|
155
|
+
- `escalate_conflicts`
|
|
156
|
+
- CLI `recallnest conflicts ...`
|
|
157
|
+
|
|
158
|
+
## Phase 6: Self-Evolution Engine
|
|
159
|
+
|
|
160
|
+
Status: planned
|
|
161
|
+
|
|
162
|
+
Goal: make memory quality improve over time.
|
|
163
|
+
|
|
164
|
+
Planned work:
|
|
165
|
+
|
|
166
|
+
- memory consolidation for merge-style categories
|
|
167
|
+
- duplicate cleanup for append-style categories
|
|
168
|
+
- gap detection from weak or failed searches
|
|
169
|
+
- promotion suggestions for memories that should become persistent rules
|
|
170
|
+
- better tier maintenance and archival policies
|
|
171
|
+
|
|
172
|
+
Likely endpoints:
|
|
173
|
+
|
|
174
|
+
- `POST /v1/consolidate`
|
|
175
|
+
- `GET /v1/gaps`
|
|
176
|
+
- MCP `consolidate_memory`
|
|
177
|
+
|
|
178
|
+
## Phase 7: Product Polish
|
|
179
|
+
|
|
180
|
+
Status: ongoing
|
|
181
|
+
|
|
182
|
+
Goal: make RecallNest easier to trust, measure, and operate.
|
|
183
|
+
|
|
184
|
+
Planned work:
|
|
185
|
+
|
|
186
|
+
- continuity eval isolation from live checkpoints
|
|
187
|
+
- broader continuity-focused evals and benchmarks
|
|
188
|
+
- stronger docs around achieved vs planned capabilities
|
|
189
|
+
- health and quality summaries in CLI
|
|
190
|
+
- cleaner setup for long-running background usage
|
|
191
|
+
|
|
192
|
+
## Principles
|
|
193
|
+
|
|
194
|
+
- Local-first: all memory stays on your machine
|
|
195
|
+
- Three-terminal first: Claude Code, Codex, and Gemini CLI are the immediate focus
|
|
196
|
+
- Continuity over transcript hoarding: useful memory matters more than raw volume
|
|
197
|
+
- Agent-agnostic at the interface layer: HTTP API and MCP remain the public surface
|
|
198
|
+
- Measured evolution: use evals before tuning retrieval or memory policies
|
|
Binary file
|