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.
Files changed (233) hide show
  1. package/.env +4 -0
  2. package/CLAUDE.md +7 -3
  3. package/README.md +202 -130
  4. package/README_CN.md +263 -190
  5. package/bin/recallnest.mjs +62 -0
  6. package/config.json +55 -0
  7. package/daily-recall.sh +23 -0
  8. package/integrations/setup-all.sh +31 -0
  9. package/logs/daily-recall.error.log +0 -0
  10. package/logs/daily-recall.log +30 -0
  11. package/logs/ingest-2026-04-11.log +110 -0
  12. package/logs/ingest-2026-04-12.log +90 -0
  13. package/logs/launchagent-stderr.log +0 -0
  14. package/logs/launchagent-stdout.log +0 -0
  15. package/package.json +10 -3
  16. package/src/access-tracker.ts +3 -2
  17. package/src/activity-counter.ts +109 -0
  18. package/src/adaptive-retrieval.ts +6 -5
  19. package/src/admission-control.ts +163 -0
  20. package/src/anchor-generator.ts +80 -0
  21. package/src/api-server.ts +10 -0
  22. package/src/audit-log.ts +122 -0
  23. package/src/auto-gc.ts +98 -29
  24. package/src/auto-recall.ts +33 -4
  25. package/src/capture-engine.ts +372 -23
  26. package/src/cascade-forget.ts +3 -2
  27. package/src/cli.ts +107 -5
  28. package/src/compat.ts +22 -0
  29. package/src/confidence-tracker.ts +210 -47
  30. package/src/conflict-store.ts +12 -3
  31. package/src/consolidation-engine.ts +296 -8
  32. package/src/context-collapse-renderer.ts +222 -0
  33. package/src/context-composer-stable-selection.ts +5 -1
  34. package/src/context-composer.ts +239 -4
  35. package/src/context-reconstructor.ts +404 -0
  36. package/src/conversation-importer.ts +441 -0
  37. package/src/data-checkup.ts +232 -0
  38. package/src/decay-engine.ts +84 -0
  39. package/src/distill-lock.ts +122 -0
  40. package/src/doctor.ts +8 -10
  41. package/src/dream-pipeline.ts +227 -0
  42. package/src/emotion-detector.ts +90 -0
  43. package/src/eval.ts +3 -2
  44. package/src/forget-engine.ts +269 -0
  45. package/src/frequency-tracker.ts +175 -0
  46. package/src/graph-export.ts +644 -0
  47. package/src/ingest.ts +36 -6
  48. package/src/interference-detector.ts +187 -0
  49. package/src/kg-extractor.ts +15 -24
  50. package/src/kg-store.ts +2 -1
  51. package/src/language-hook.ts +67 -0
  52. package/src/llm-client.ts +289 -6
  53. package/src/mcp-server.ts +707 -80
  54. package/src/memory-assets.ts +22 -5
  55. package/src/memory-evolution.ts +365 -0
  56. package/src/memory-lint.ts +429 -0
  57. package/src/memory-output.ts +69 -0
  58. package/src/memory-schema.ts +74 -2
  59. package/src/narrative-schema.ts +79 -0
  60. package/src/narrative-tagger.ts +164 -0
  61. package/src/pii-detector.ts +98 -0
  62. package/src/post-retrieval-filter.ts +76 -0
  63. package/src/prediction-engine.ts +253 -0
  64. package/src/preference-slots.ts +65 -2
  65. package/src/prospective-memory.ts +215 -0
  66. package/src/query-expander.ts +67 -0
  67. package/src/recall-governor.ts +183 -0
  68. package/src/retention-policy.ts +90 -0
  69. package/src/retriever.ts +828 -55
  70. package/src/rif.ts +34 -8
  71. package/src/runtime-config.ts +23 -8
  72. package/src/scope-inventory.ts +4 -3
  73. package/src/scope-policy.ts +4 -0
  74. package/src/session-distiller.ts +307 -0
  75. package/src/session-output.ts +40 -0
  76. package/src/session-schema.ts +37 -0
  77. package/src/session-store.ts +7 -2
  78. package/src/skill-engine.ts +208 -0
  79. package/src/skill-promotion.ts +293 -0
  80. package/src/skill-schema.ts +39 -0
  81. package/src/store.ts +96 -10
  82. package/src/topic-tag.ts +66 -0
  83. package/src/tracker.ts +3 -1
  84. package/src/ui-server.ts +80 -8
  85. package/src/workflow-observation-scope-review.ts +2 -1
  86. package/src/workflow-observation-store.ts +2 -1
  87. package/src/write-verifier.ts +126 -0
  88. package/.claude-plugin/CLAUDE.md +0 -29
  89. package/.claude-plugin/marketplace.json +0 -18
  90. package/.github/workflows/ci.yml +0 -28
  91. package/.mcp.json +0 -9
  92. package/CHANGELOG.md +0 -51
  93. package/DEMO.md +0 -94
  94. package/EVAL.md +0 -89
  95. package/FAILURES.md +0 -75
  96. package/OPERATIONS.md +0 -59
  97. package/ROADMAP.md +0 -198
  98. package/assets/recallnest-workbench.png +0 -0
  99. package/assets/ui/app.js +0 -807
  100. package/assets/ui/index.html +0 -154
  101. package/assets/ui/styles.css +0 -605
  102. package/assets/wechat-qr.jpg +0 -0
  103. package/daily-reflections/2026-03-05.md +0 -15
  104. package/daily-reflections/2026-03-06.md +0 -15
  105. package/daily-reflections/2026-03-07.md +0 -7
  106. package/daily-reflections/2026-03-08.md +0 -34
  107. package/daily-reflections/2026-03-09.md +0 -35
  108. package/daily-reflections/2026-03-10.md +0 -36
  109. package/daily-reflections/2026-03-11.md +0 -35
  110. package/daily-reflections/2026-03-12.md +0 -36
  111. package/daily-reflections/2026-03-13.md +0 -35
  112. package/daily-reflections/2026-03-14.md +0 -35
  113. package/daily-reflections/2026-03-15.md +0 -35
  114. package/daily-reflections/2026-03-16.md +0 -41
  115. package/daily-reflections/2026-03-17.md +0 -10
  116. package/daily-reflections/2026-03-18.md +0 -10
  117. package/daily-reflections/2026-03-19.md +0 -10
  118. package/daily-reflections/2026-03-20.md +0 -10
  119. package/daily-reflections/2026-03-21.md +0 -10
  120. package/daily-reflections/2026-03-22.md +0 -10
  121. package/daily-reflections/2026-03-23.md +0 -10
  122. package/daily-reflections/2026-03-24.md +0 -10
  123. package/daily-reflections/2026-03-25.md +0 -32
  124. package/daily-reflections/2026-03-26.md +0 -37
  125. package/daily-reflections/2026-03-27.md +0 -35
  126. package/daily-reflections/2026-03-28.md +0 -35
  127. package/daily-reflections/2026-03-29.md +0 -35
  128. package/daily-reflections/2026-03-30.md +0 -36
  129. package/daily-reflections/2026-03-31.md +0 -35
  130. package/daily-reflections/2026-04-01.md +0 -35
  131. package/docs/api-reference.md +0 -1291
  132. package/docs/architecture.md +0 -168
  133. package/docs/memory-boundary-contract.md +0 -226
  134. package/docs/memory-categories.md +0 -119
  135. package/docs/pipeline-audit-ultramemory.md +0 -177
  136. package/docs/plans/2026-03-08-query-expansion.md +0 -270
  137. package/docs/plans/2026-03-16-continuity-layer.md +0 -196
  138. package/docs/plans/mcp-tiering-plan.md +0 -126
  139. package/docs/research/recall-quality-audit-2026-03-22.md +0 -153
  140. package/docs/self-evolution.md +0 -198
  141. package/docs/superpowers/plans/2026-03-19-ingest-pipeline-upgrade.md +0 -782
  142. package/docs/superpowers/specs/2026-03-19-ingest-pipeline-upgrade-design.md +0 -77
  143. package/docs/superpowers/specs/2026-03-23-pull-claude-desktop-design.md +0 -95
  144. package/eval/continuity/results-2026-03-16.md +0 -117
  145. package/eval/continuity/results-2026-03-19.md +0 -453
  146. package/eval/continuity/runbook.md +0 -110
  147. package/eval/continuity/seed-cases.md +0 -54
  148. package/eval/reports/2026-03-06-abstract-query-baseline.md +0 -96
  149. package/eval/reports/2026-03-06-aws-ssh-baseline.md +0 -82
  150. package/eval/reports/2026-03-06-baseline.md +0 -82
  151. package/eval/reports/query-expansion.md +0 -138
  152. package/lm +0 -19
  153. package/plan-v1.2-distributable.md +0 -105
  154. package/scripts/archive-distilled-junk.ts +0 -116
  155. package/scripts/backfill-l0l1l2.ts +0 -98
  156. package/scripts/blind-scan.ts +0 -588
  157. package/scripts/cleanup-step1-exact-dups.ts +0 -117
  158. package/scripts/cleanup-step2-template-dups.ts +0 -113
  159. package/scripts/cleanup-step3-stale-content.ts +0 -149
  160. package/scripts/cleanup-step4-orphan-scopes.ts +0 -131
  161. package/scripts/delete-distilled-junk.ts +0 -88
  162. package/scripts/distill-facts.ts +0 -305
  163. package/scripts/health-check.ts +0 -343
  164. package/scripts/incremental-ingest.sh +0 -71
  165. package/scripts/mlp-health-check.ts +0 -382
  166. package/scripts/pull-claude-desktop.ts +0 -515
  167. package/scripts/re-ingest-cc.sh +0 -66
  168. package/scripts/rebalance-memory-health.ts +0 -181
  169. package/scripts/run-desktop-ingest.sh +0 -11
  170. package/scripts/start-server.sh +0 -12
  171. package/scripts/viz-dashboard.html +0 -423
  172. package/scripts/viz-export.ts +0 -703
  173. package/src/__tests__/access-tracker-novelty.test.ts +0 -228
  174. package/src/__tests__/auto-consolidation.test.ts +0 -168
  175. package/src/__tests__/auto-recall.test.ts +0 -131
  176. package/src/__tests__/batch-dedup.test.ts +0 -65
  177. package/src/__tests__/capture-engine.test.ts +0 -1142
  178. package/src/__tests__/capture-heuristic.test.ts +0 -171
  179. package/src/__tests__/cascade-forget.test.ts +0 -210
  180. package/src/__tests__/category-min-scores.test.ts +0 -33
  181. package/src/__tests__/confidence-tracker.test.ts +0 -196
  182. package/src/__tests__/conflict-advisor.test.ts +0 -206
  183. package/src/__tests__/conflict-escalation.test.ts +0 -149
  184. package/src/__tests__/conflict-lifecycle.test.ts +0 -83
  185. package/src/__tests__/conflict-output.test.ts +0 -85
  186. package/src/__tests__/conflict-store.test.ts +0 -374
  187. package/src/__tests__/consolidation-engine.test.ts +0 -181
  188. package/src/__tests__/context-composer-pins.test.ts +0 -64
  189. package/src/__tests__/context-composer-task-selection.test.ts +0 -24
  190. package/src/__tests__/context-renderer.test.ts +0 -91
  191. package/src/__tests__/continuity-eval.test.ts +0 -275
  192. package/src/__tests__/continuity-schema.test.ts +0 -97
  193. package/src/__tests__/core-recall-eval.test.ts +0 -235
  194. package/src/__tests__/core-summary.test.ts +0 -109
  195. package/src/__tests__/dedup-actions.test.ts +0 -58
  196. package/src/__tests__/deterministic-id.test.ts +0 -39
  197. package/src/__tests__/doctor.test.ts +0 -303
  198. package/src/__tests__/drill-down.test.ts +0 -108
  199. package/src/__tests__/embedder.test.ts +0 -122
  200. package/src/__tests__/entity-resolver.test.ts +0 -58
  201. package/src/__tests__/event-segmenter.test.ts +0 -153
  202. package/src/__tests__/hotness-blend.test.ts +0 -76
  203. package/src/__tests__/ingest.test.ts +0 -360
  204. package/src/__tests__/kg-extractor.test.ts +0 -184
  205. package/src/__tests__/kg-store.test.ts +0 -198
  206. package/src/__tests__/llm-consolidation.test.ts +0 -226
  207. package/src/__tests__/memory-boundaries.test.ts +0 -237
  208. package/src/__tests__/memory-health-rebalance.test.ts +0 -144
  209. package/src/__tests__/memory-output.test.ts +0 -215
  210. package/src/__tests__/multi-vector.test.ts +0 -242
  211. package/src/__tests__/ppr-traversal.test.ts +0 -256
  212. package/src/__tests__/preference-guard-smoke.test.ts +0 -211
  213. package/src/__tests__/preference-matcher.test.ts +0 -230
  214. package/src/__tests__/preference-slots.test.ts +0 -106
  215. package/src/__tests__/prospective-memory.test.ts +0 -283
  216. package/src/__tests__/query-entity-detector.test.ts +0 -171
  217. package/src/__tests__/query-expander.test.ts +0 -34
  218. package/src/__tests__/recall-mode.test.ts +0 -64
  219. package/src/__tests__/result-synthesizer.test.ts +0 -198
  220. package/src/__tests__/resume-context.test.ts +0 -4743
  221. package/src/__tests__/retrieval-trace.test.ts +0 -213
  222. package/src/__tests__/retriever-boundary-weight.test.ts +0 -136
  223. package/src/__tests__/retroactive-boost.test.ts +0 -223
  224. package/src/__tests__/scope-inventory.test.ts +0 -200
  225. package/src/__tests__/scope-policy.test.ts +0 -69
  226. package/src/__tests__/session-checkpoint.test.ts +0 -259
  227. package/src/__tests__/session-gc.test.ts +0 -215
  228. package/src/__tests__/store-scope-audit.test.ts +0 -81
  229. package/src/__tests__/temporal-parser.test.ts +0 -241
  230. package/src/__tests__/term-registry.test.ts +0 -121
  231. package/src/__tests__/tool-output-compressor.test.ts +0 -133
  232. package/src/__tests__/version-manager.test.ts +0 -213
  233. package/src/__tests__/workflow-observation.test.ts +0 -400
@@ -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
@@ -1,9 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "recallnest": {
4
- "type": "stdio",
5
- "command": "bash",
6
- "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/start-server.sh"]
7
- }
8
- }
9
- }
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