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/.github/workflows/ci.yml
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
check:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@v4
|
|
14
|
-
|
|
15
|
-
- uses: oven-sh/setup-bun@v2
|
|
16
|
-
with:
|
|
17
|
-
bun-version: latest
|
|
18
|
-
|
|
19
|
-
- run: bun install
|
|
20
|
-
|
|
21
|
-
- name: Setup config
|
|
22
|
-
run: cp config.json.example config.json
|
|
23
|
-
|
|
24
|
-
- name: Doctor (CI mode)
|
|
25
|
-
run: bun run src/cli.ts doctor --ci
|
|
26
|
-
|
|
27
|
-
- name: TypeScript check
|
|
28
|
-
run: bun build src/cli.ts --target bun --no-bundle --outdir /tmp/check 2>&1 || true
|
package/.mcp.json
DELETED
package/CHANGELOG.md
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## v1.3.1 — Upstream Sync (2026-03-12)
|
|
4
|
-
|
|
5
|
-
Synced with [CortexReach/memory-lancedb-pro](https://github.com/CortexReach/memory-lancedb-pro) master (v1.1.0-beta.6+).
|
|
6
|
-
|
|
7
|
-
### Changed
|
|
8
|
-
|
|
9
|
-
- **Retriever**: Added `source` field to `RetrievalContext` — access reinforcement now only fires on manual retrieval, preventing auto-recall from strengthening noise memories (synced from upstream beta.2 design).
|
|
10
|
-
- **Noise filter**: Added Chinese meta-question patterns (`你记得`, `记不记得`, `还记得…吗`, `上次…说`, `之前…提到`) and diagnostic artifact filter (synced from upstream beta.3).
|
|
11
|
-
- **README**: Updated upstream credit link from `win4r/memory-lancedb-pro` to `CortexReach/memory-lancedb-pro`, added CortexReach team acknowledgement.
|
|
12
|
-
|
|
13
|
-
## v1.2.0 — First Distributable Release (2026-03-08)
|
|
14
|
-
|
|
15
|
-
The goal of this release: a new user can go from `git clone` to first search result in 15 minutes.
|
|
16
|
-
|
|
17
|
-
### New
|
|
18
|
-
|
|
19
|
-
- **`lm doctor`** — one-command pre-flight check for Bun, config, API key, data directory, transcript paths, and index health. Supports `--ci` mode for GitHub Actions.
|
|
20
|
-
- **`lm demo`** — run sample queries to see RecallNest in action before writing your own.
|
|
21
|
-
- **`config.json.example`** — ships with absolute `~/.recallnest/data/lancedb` path. New users copy this instead of editing the tracked config.
|
|
22
|
-
- **GitHub Actions CI** — runs `doctor --ci` and TypeScript check on every push.
|
|
23
|
-
- **Ingest pre-validation** — embedding API is tested before processing any files. Invalid Jina key now fails fast with a clear message instead of crashing mid-ingest.
|
|
24
|
-
|
|
25
|
-
### Changed
|
|
26
|
-
|
|
27
|
-
- **README rewritten** — added Prerequisites table (Bun + Jina key), 5-step quickstart with expected output, Troubleshooting section.
|
|
28
|
-
- **Gemini support marked "coming soon"** — README, config example, and doctor all honestly reflect that Gemini CLI sessions are encrypted protobuf and not yet parseable. The `lm ingest` command prints a clear skip message instead of silently failing.
|
|
29
|
-
- **Config path robustness** — default `dbPath` changed from relative `./data/lancedb` to absolute `~/.recallnest/data/lancedb` in config example. Auto-detect failure messages now include the user's actual home path.
|
|
30
|
-
- **`config.json` untracked** — added to `.gitignore` so user config is not overwritten by `git pull`.
|
|
31
|
-
|
|
32
|
-
### Fixed
|
|
33
|
-
|
|
34
|
-
- Auto-detect hint in `doctor` now shows a real example path based on the current user's home directory.
|
|
35
|
-
- `findConfigPath()` error message now suggests `cp config.json.example config.json` when the example file exists.
|
|
36
|
-
|
|
37
|
-
## v1.1.0 — Hybrid Retrieval + MCP + UI (2026-02)
|
|
38
|
-
|
|
39
|
-
- Hybrid retrieval: LanceDB vector + BM25 keyword search with configurable weights
|
|
40
|
-
- Retrieval profiles: `default`, `writing`, `debug`, `fact-check`
|
|
41
|
-
- MCP server with 9 tools: search, explain, distill, brief, pin, list assets/pins, export, stats
|
|
42
|
-
- Local web workbench UI at `http://localhost:4317`
|
|
43
|
-
- Multi-source ingest: Claude Code transcripts, Codex sessions, Gemini sessions, markdown notes
|
|
44
|
-
- Asset system: pin, brief, export with re-indexing
|
|
45
|
-
- Time-aware scoring with configurable decay
|
|
46
|
-
|
|
47
|
-
## v1.0.0 — Initial Release (2026-01)
|
|
48
|
-
|
|
49
|
-
- Basic vector search over Claude Code transcripts
|
|
50
|
-
- LanceDB storage with Jina embeddings
|
|
51
|
-
- CLI interface
|
package/DEMO.md
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# RecallNest 30-Second Demo
|
|
2
|
-
|
|
3
|
-
Use this script when you want to explain RecallNest fast on GitHub, X, Telegram, or in a live screen recording.
|
|
4
|
-
|
|
5
|
-
## Demo Goal
|
|
6
|
-
|
|
7
|
-
Show three things in one pass:
|
|
8
|
-
|
|
9
|
-
| What to prove | What the viewer should understand |
|
|
10
|
-
|------|------|
|
|
11
|
-
| Recall | old AI conversations can be found quickly |
|
|
12
|
-
| Explainability | hits are not opaque |
|
|
13
|
-
| Reusability | useful context can become a long-lived asset |
|
|
14
|
-
|
|
15
|
-
## Fast Setup
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
cd /Users/anxianjingya/recallnest
|
|
19
|
-
bun run src/ui-server.ts
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Open:
|
|
23
|
-
|
|
24
|
-
```text
|
|
25
|
-
http://localhost:4317
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Recommended Demo Query
|
|
29
|
-
|
|
30
|
-
Use:
|
|
31
|
-
|
|
32
|
-
```text
|
|
33
|
-
telegram bridge
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Reason:
|
|
37
|
-
|
|
38
|
-
| Why this query works | Result |
|
|
39
|
-
|------|------|
|
|
40
|
-
| already appears in the current dataset | likely to return hits immediately |
|
|
41
|
-
| has operational context | good for showing explainability |
|
|
42
|
-
| already has assets | good for showing reuse |
|
|
43
|
-
|
|
44
|
-
## 30-Second Talk Track
|
|
45
|
-
|
|
46
|
-
### Version A
|
|
47
|
-
|
|
48
|
-
```text
|
|
49
|
-
This is RecallNest, a local-first memory workbench for AI conversations.
|
|
50
|
-
It turns Claude Code, Codex, Gemini, and notes into a recall layer.
|
|
51
|
-
I can search an old topic, inspect why it matched, then pin useful context back into memory so it can be recalled again later.
|
|
52
|
-
The same memory layer is exposed through MCP, so an agent can use it and I can still verify it in the UI.
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Version B
|
|
56
|
-
|
|
57
|
-
```text
|
|
58
|
-
RecallNest is not just transcript search.
|
|
59
|
-
It lets me search, explain, distill, and reuse past AI conversations.
|
|
60
|
-
The key idea is that useful hits do not disappear again: I can turn them into assets and feed them back into recall.
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Demo Click Path
|
|
64
|
-
|
|
65
|
-
| Step | UI action | What to say |
|
|
66
|
-
|------|------|------|
|
|
67
|
-
| 1 | show the loaded `telegram bridge` query | "This starts from a real transcript topic." |
|
|
68
|
-
| 2 | click `Search` | "I can recall the relevant conversation history." |
|
|
69
|
-
| 3 | click `Details` on one result | "The hit is inspectable, not a black box." |
|
|
70
|
-
| 4 | click `Pin` or `Brief` | "Useful context becomes a reusable asset." |
|
|
71
|
-
| 5 | switch to `Assets` | "Assets stay visible and can be recalled later." |
|
|
72
|
-
|
|
73
|
-
## Screenshot Rules
|
|
74
|
-
|
|
75
|
-
| Rule | Why |
|
|
76
|
-
|------|------|
|
|
77
|
-
| keep the browser crop tight | the product, not Chrome, should dominate the frame |
|
|
78
|
-
| show real hits in the result area | empty states spread poorly |
|
|
79
|
-
| keep `Trace Output` collapsed unless you are explaining it | it distracts from the main product story |
|
|
80
|
-
| prefer one strong screenshot over many average ones | easier to share and understand |
|
|
81
|
-
|
|
82
|
-
## If The UI Opens Empty
|
|
83
|
-
|
|
84
|
-
Check:
|
|
85
|
-
|
|
86
|
-
1. the server is running
|
|
87
|
-
2. the current dataset was ingested
|
|
88
|
-
3. the page has been refreshed after startup
|
|
89
|
-
|
|
90
|
-
If needed, re-run:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
bun run src/ui-server.ts
|
|
94
|
-
```
|
package/EVAL.md
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# RecallNest Eval Memo
|
|
2
|
-
|
|
3
|
-
This file is the operator memo for improving retrieval quality without relying on intuition.
|
|
4
|
-
|
|
5
|
-
## Why this exists
|
|
6
|
-
|
|
7
|
-
RecallNest will keep evolving with:
|
|
8
|
-
- upstream retrieval changes from `memory-lancedb-pro`
|
|
9
|
-
- local tuning for your own workflows
|
|
10
|
-
- new asset behavior (`pin`, `brief`, cleanup rules)
|
|
11
|
-
|
|
12
|
-
Without a repeatable eval, it is impossible to tell whether recall actually improved.
|
|
13
|
-
|
|
14
|
-
## Core files
|
|
15
|
-
|
|
16
|
-
| File | Purpose |
|
|
17
|
-
|------|---------|
|
|
18
|
-
| `eval/cases.json` | real-world recall cases to protect |
|
|
19
|
-
| `src/eval.ts` | eval runner |
|
|
20
|
-
| `eval/reports/` | saved baselines to compare across upgrades |
|
|
21
|
-
|
|
22
|
-
## What to evaluate
|
|
23
|
-
|
|
24
|
-
Use queries that matter in real usage:
|
|
25
|
-
- bot / bridge maintenance
|
|
26
|
-
- OpenClaw memory architecture
|
|
27
|
-
- writing style and user preference recall
|
|
28
|
-
- visual style preference recall
|
|
29
|
-
- AWS / config operations
|
|
30
|
-
|
|
31
|
-
Important:
|
|
32
|
-
- prefer the wording the operator actually types
|
|
33
|
-
- do not invent a cleaner label if the real query is messier but more common
|
|
34
|
-
- if `aws ssh` is what gets used in practice, benchmark `aws ssh`, not `aws bot config`
|
|
35
|
-
- abstract, summarized queries are valid benchmarks if that is how the operator naturally searches
|
|
36
|
-
- protect both query styles: exact operational wording and high-level conceptual wording
|
|
37
|
-
|
|
38
|
-
Each case should define:
|
|
39
|
-
- `query`
|
|
40
|
-
- `profile`
|
|
41
|
-
- optional `scope`
|
|
42
|
-
- `expectAny`
|
|
43
|
-
- `expectAll`
|
|
44
|
-
- `expectScopePrefixes`
|
|
45
|
-
- optional `forbid`
|
|
46
|
-
|
|
47
|
-
## Recommended workflow
|
|
48
|
-
|
|
49
|
-
### Before changing retrieval
|
|
50
|
-
|
|
51
|
-
Run:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
bun run src/eval.ts --output eval/reports/latest.md
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
If the change is important, also save a dated snapshot:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
bun run src/eval.ts --output eval/reports/2026-03-06-baseline.md
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### After changing retrieval
|
|
64
|
-
|
|
65
|
-
Run the same eval again and compare:
|
|
66
|
-
- pass count
|
|
67
|
-
- average score
|
|
68
|
-
- top scopes
|
|
69
|
-
- top snippet quality
|
|
70
|
-
|
|
71
|
-
## What counts as a good change
|
|
72
|
-
|
|
73
|
-
Good:
|
|
74
|
-
- relevant source scopes move up
|
|
75
|
-
- user preference memories stay stable
|
|
76
|
-
- bridge / ops / config queries become easier to recover
|
|
77
|
-
- `pin` and `brief` behave differently on purpose
|
|
78
|
-
|
|
79
|
-
Bad:
|
|
80
|
-
- asset recursion comes back
|
|
81
|
-
- old noisy `brief` objects dominate retrieval
|
|
82
|
-
- exact operational queries stop surfacing recent config changes
|
|
83
|
-
- writing/style queries drift away from user preference memories
|
|
84
|
-
|
|
85
|
-
## Maintenance note
|
|
86
|
-
|
|
87
|
-
Whenever a new recurring workflow appears, add it to `eval/cases.json`.
|
|
88
|
-
|
|
89
|
-
That turns “I hope this still works” into “I can prove it still works.”
|
package/FAILURES.md
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# RecallNest Failure Notebook
|
|
2
|
-
|
|
3
|
-
Use this file to record misses, weak hits, and noisy hits.
|
|
4
|
-
|
|
5
|
-
Do not rely on memory when retrieval quality changes. Add an entry, then update `eval/cases.json` if the failure should become a permanent benchmark.
|
|
6
|
-
|
|
7
|
-
## How To Use
|
|
8
|
-
|
|
9
|
-
| Step | Action |
|
|
10
|
-
|------|------|
|
|
11
|
-
| 1 | Record the exact query you ran |
|
|
12
|
-
| 2 | Note the mode, scope, and surface (`UI`, `MCP`, or `CLI`) |
|
|
13
|
-
| 3 | Write what you expected to see |
|
|
14
|
-
| 4 | Write what actually happened |
|
|
15
|
-
| 5 | Make one concrete hypothesis, not five vague ones |
|
|
16
|
-
| 6 | After a fix, record whether the issue moved into `eval/cases.json` |
|
|
17
|
-
|
|
18
|
-
## Entry Template
|
|
19
|
-
|
|
20
|
-
```md
|
|
21
|
-
## YYYY-MM-DD - short_name
|
|
22
|
-
|
|
23
|
-
| Field | Value |
|
|
24
|
-
|------|------|
|
|
25
|
-
| Query | `...` |
|
|
26
|
-
| Profile | `default / writing / debug / fact-check` |
|
|
27
|
-
| Scope | `...` |
|
|
28
|
-
| Surface | `UI / MCP / CLI` |
|
|
29
|
-
| Expected | ... |
|
|
30
|
-
| Actual | ... |
|
|
31
|
-
| Failure Type | `miss / weak hit / noisy hit / asset pollution / bad ranking` |
|
|
32
|
-
| Hypothesis | ... |
|
|
33
|
-
| Fix | ... |
|
|
34
|
-
| Eval Case Added | `yes / no` |
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Current Known Weak Spots
|
|
38
|
-
|
|
39
|
-
| Query family | Current issue | Status |
|
|
40
|
-
|------|------|------|
|
|
41
|
-
| `aws ssh` | needs to stay strong because this is the real operator wording | watch |
|
|
42
|
-
| abstract relationship queries | must keep working without exact keywords | watch |
|
|
43
|
-
| asset-heavy topics | old briefs can pollute recall if asset hygiene is ignored | mitigated, keep watching |
|
|
44
|
-
|
|
45
|
-
## Entries
|
|
46
|
-
|
|
47
|
-
## 2026-03-06 - aws_query_wording
|
|
48
|
-
|
|
49
|
-
| Field | Value |
|
|
50
|
-
|------|------|
|
|
51
|
-
| Query | `aws bot config` vs `aws ssh` |
|
|
52
|
-
| Profile | `debug` |
|
|
53
|
-
| Scope | `cc / codex / gemini / memory` |
|
|
54
|
-
| Surface | `UI` |
|
|
55
|
-
| Expected | the AWS access path should be easy to recover using the wording the operator naturally types |
|
|
56
|
-
| Actual | `aws ssh` returns stronger and more directly useful hits than `aws bot config` |
|
|
57
|
-
| Failure Type | `bad ranking` |
|
|
58
|
-
| Hypothesis | the earlier eval case used an artificial wording closer to a label than a real operator query |
|
|
59
|
-
| Fix | replace the eval case with `aws ssh` and treat operator wording as the benchmark source of truth |
|
|
60
|
-
| Eval Case Added | `yes` |
|
|
61
|
-
|
|
62
|
-
## 2026-03-06 - working_relationship_positive
|
|
63
|
-
|
|
64
|
-
| Field | Value |
|
|
65
|
-
|------|------|
|
|
66
|
-
| Query | `我们相处态度` |
|
|
67
|
-
| Profile | `default` |
|
|
68
|
-
| Scope | `cc / codex / gemini / memory` |
|
|
69
|
-
| Surface | `UI` |
|
|
70
|
-
| Expected | abstract relationship and collaboration preferences should still surface the right context |
|
|
71
|
-
| Actual | user reported the result felt right; eval later passed at `73%`, which means it works but is still weaker than exact operational queries |
|
|
72
|
-
| Failure Type | `weak hit / positive signal` |
|
|
73
|
-
| Hypothesis | semantic recall is working for summarized wording, but abstract preference queries still need stronger ranking and cleaner memory prioritization |
|
|
74
|
-
| Fix | keep this query as a protected eval case and treat it as a primary target for future retrieval tuning |
|
|
75
|
-
| Eval Case Added | `yes` |
|
package/OPERATIONS.md
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# RecallNest Operations
|
|
2
|
-
|
|
3
|
-
This file is the short operator memo for common actions.
|
|
4
|
-
|
|
5
|
-
## Open The UI
|
|
6
|
-
|
|
7
|
-
### Manual
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
cd /Users/anxianjingya/recallnest
|
|
11
|
-
bun run src/ui-server.ts
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Then open:
|
|
15
|
-
|
|
16
|
-
```text
|
|
17
|
-
http://localhost:4317
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Ask Codex
|
|
21
|
-
|
|
22
|
-
Use either of these:
|
|
23
|
-
|
|
24
|
-
- `帮我启动 RecallNest UI`
|
|
25
|
-
- `帮我打开 RecallNest 记忆工作台`
|
|
26
|
-
- `帮我把 RecallNest 的本地界面跑起来`
|
|
27
|
-
|
|
28
|
-
Expected result:
|
|
29
|
-
- local UI server starts
|
|
30
|
-
- browser target is `http://localhost:4317`
|
|
31
|
-
|
|
32
|
-
## Quick Intent Phrases
|
|
33
|
-
|
|
34
|
-
### Search
|
|
35
|
-
- `帮我在 RecallNest 里搜 telegram bridge`
|
|
36
|
-
- `帮我查一下过去关于 OpenClaw memory 的记录`
|
|
37
|
-
|
|
38
|
-
### Distill
|
|
39
|
-
- `帮我把 OpenClaw 记忆系统蒸馏成 briefing`
|
|
40
|
-
|
|
41
|
-
### Brief
|
|
42
|
-
- `帮我把这个主题做成一个 brief asset`
|
|
43
|
-
|
|
44
|
-
### Assets
|
|
45
|
-
- `帮我打开 Assets 视图`
|
|
46
|
-
- `帮我看一下有哪些 memory assets`
|
|
47
|
-
|
|
48
|
-
### Cleanup
|
|
49
|
-
- `帮我检查有没有 dirty briefs`
|
|
50
|
-
- `帮我清理旧的脏 brief`
|
|
51
|
-
|
|
52
|
-
## Product Position
|
|
53
|
-
|
|
54
|
-
RecallNest should be operated primarily through:
|
|
55
|
-
|
|
56
|
-
1. MCP
|
|
57
|
-
2. UI
|
|
58
|
-
|
|
59
|
-
CLI is an implementation layer, not the main product surface.
|
package/ROADMAP.md
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
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
|