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,605 +0,0 @@
1
- :root {
2
- --bg: #f3eadc;
3
- --paper: rgba(255, 251, 244, 0.92);
4
- --ink: #1d2a2b;
5
- --muted: #5c6b69;
6
- --line: rgba(29, 42, 43, 0.12);
7
- --accent: #1d6b66;
8
- --accent-soft: #d5ece7;
9
- --signal: #c96f3b;
10
- --shadow: 0 24px 60px rgba(36, 28, 18, 0.12);
11
- }
12
-
13
- * { box-sizing: border-box; }
14
- body {
15
- margin: 0;
16
- min-height: 100vh;
17
- color: var(--ink);
18
- background:
19
- radial-gradient(circle at top left, rgba(201, 111, 59, 0.18), transparent 30%),
20
- radial-gradient(circle at top right, rgba(29, 107, 102, 0.18), transparent 28%),
21
- linear-gradient(180deg, #f8f2e8 0%, var(--bg) 100%);
22
- font-family: "Avenir Next", "Segoe UI", sans-serif;
23
- }
24
-
25
- .page-shell {
26
- width: min(1440px, calc(100vw - 32px));
27
- margin: 0 auto;
28
- padding: 18px 0 28px;
29
- }
30
-
31
- .hero {
32
- display: flex;
33
- gap: 24px;
34
- justify-content: space-between;
35
- align-items: center;
36
- padding: 10px 8px 8px;
37
- animation: fade-up 320ms ease;
38
- }
39
-
40
- .eyebrow {
41
- margin: 0 0 4px;
42
- color: var(--signal);
43
- text-transform: uppercase;
44
- letter-spacing: 0.14em;
45
- font-size: 11px;
46
- font-weight: 700;
47
- }
48
-
49
- .hero h1 {
50
- margin: 0;
51
- font-family: "Iowan Old Style", "Palatino Linotype", serif;
52
- font-size: clamp(24px, 3.2vw, 38px);
53
- line-height: 0.98;
54
- max-width: none;
55
- white-space: nowrap;
56
- }
57
-
58
- .subtitle {
59
- margin: 6px 0 0;
60
- max-width: 46ch;
61
- color: var(--muted);
62
- font-size: 14px;
63
- line-height: 1.35;
64
- }
65
-
66
- .hero-badge {
67
- display: flex;
68
- flex-wrap: wrap;
69
- gap: 8px;
70
- max-width: 320px;
71
- justify-content: flex-end;
72
- }
73
-
74
- .hero-badge span,
75
- .brand-card {
76
- border: 1px solid var(--line);
77
- background: rgba(255,255,255,0.55);
78
- border-radius: 20px;
79
- }
80
-
81
- .hero-badge span {
82
- padding: 8px 12px;
83
- font-size: 12px;
84
- }
85
-
86
- .brand-strip {
87
- display: grid;
88
- grid-template-columns: repeat(3, 1fr);
89
- gap: 12px;
90
- margin: 0 8px 12px;
91
- }
92
-
93
- .brand-card {
94
- padding: 10px 14px;
95
- display: flex;
96
- flex-direction: column;
97
- gap: 4px;
98
- color: var(--ink);
99
- text-align: left;
100
- width: 100%;
101
- }
102
-
103
- .brand-card strong {
104
- font-size: 14px;
105
- }
106
-
107
- .brand-card span {
108
- color: var(--muted);
109
- font-size: 12px;
110
- }
111
-
112
- .quick-card {
113
- cursor: pointer;
114
- transition: transform 140ms ease, background 140ms ease, border-color 140ms ease, box-shadow 140ms ease;
115
- }
116
-
117
- .quick-card:hover {
118
- transform: translateY(-1px);
119
- background: rgba(255,255,255,0.82);
120
- border-color: rgba(29, 107, 102, 0.2);
121
- box-shadow: 0 12px 24px rgba(36, 28, 18, 0.08);
122
- }
123
-
124
- .workspace {
125
- display: grid;
126
- grid-template-columns: 0.82fr 1.42fr 0.68fr;
127
- gap: 18px;
128
- }
129
-
130
- .card {
131
- background: var(--paper);
132
- backdrop-filter: blur(18px);
133
- border: 1px solid rgba(255,255,255,0.45);
134
- box-shadow: var(--shadow);
135
- border-radius: 24px;
136
- padding: 20px;
137
- }
138
-
139
- .section-head {
140
- display: flex;
141
- justify-content: space-between;
142
- align-items: center;
143
- gap: 12px;
144
- margin-bottom: 18px;
145
- }
146
-
147
- .section-head.compact {
148
- margin-top: 20px;
149
- margin-bottom: 10px;
150
- }
151
-
152
- h2, h3 {
153
- margin: 0;
154
- font-family: "Iowan Old Style", "Palatino Linotype", serif;
155
- }
156
-
157
- .field {
158
- display: flex;
159
- flex-direction: column;
160
- gap: 8px;
161
- margin-bottom: 14px;
162
- }
163
-
164
- .field span {
165
- font-size: 13px;
166
- color: var(--muted);
167
- text-transform: uppercase;
168
- letter-spacing: 0.08em;
169
- }
170
-
171
- .view-switch {
172
- display: grid;
173
- grid-template-columns: repeat(3, 1fr);
174
- gap: 8px;
175
- margin-bottom: 14px;
176
- }
177
-
178
- .view-tab {
179
- border: 1px solid var(--line);
180
- background: rgba(255,255,255,0.66);
181
- border-radius: 14px;
182
- padding: 10px 12px;
183
- cursor: pointer;
184
- }
185
-
186
- .view-tab.is-active {
187
- background: var(--ink);
188
- color: #f6f2ea;
189
- border-color: transparent;
190
- }
191
-
192
- input, textarea, select, button { font: inherit; }
193
-
194
- input, textarea, select {
195
- border: 1px solid var(--line);
196
- background: rgba(255,255,255,0.74);
197
- border-radius: 16px;
198
- padding: 12px 14px;
199
- color: var(--ink);
200
- }
201
-
202
- textarea { resize: vertical; min-height: 120px; }
203
-
204
- .grid.two-up {
205
- display: grid;
206
- grid-template-columns: 1fr 1fr;
207
- gap: 12px;
208
- }
209
-
210
- .action-row {
211
- display: flex;
212
- flex-wrap: wrap;
213
- gap: 10px;
214
- margin-top: 10px;
215
- }
216
-
217
- .action-button,
218
- .ghost-button,
219
- .card-chip {
220
- border: 1px solid var(--line);
221
- border-radius: 999px;
222
- padding: 11px 16px;
223
- background: rgba(255,255,255,0.75);
224
- cursor: pointer;
225
- transition: transform 140ms ease, background 140ms ease, border-color 140ms ease;
226
- }
227
-
228
- .action-button:hover,
229
- .ghost-button:hover,
230
- .card-chip:hover {
231
- transform: translateY(-1px);
232
- }
233
-
234
- .action-button.primary {
235
- background: var(--accent);
236
- color: #f6fffd;
237
- border-color: transparent;
238
- }
239
-
240
- .action-button.accent {
241
- background: var(--signal);
242
- color: #fffaf4;
243
- border-color: transparent;
244
- }
245
-
246
- .full-width { width: 100%; }
247
-
248
- .tag-chip {
249
- border: 1px solid var(--line);
250
- border-radius: 999px;
251
- padding: 7px 12px;
252
- background: rgba(29, 107, 102, 0.08);
253
- color: var(--ink);
254
- cursor: pointer;
255
- transition: transform 140ms ease, background 140ms ease, border-color 140ms ease;
256
- }
257
-
258
- .tag-chip:hover {
259
- transform: translateY(-1px);
260
- }
261
-
262
- .tag-chip.is-active {
263
- background: var(--accent);
264
- color: #f6fffd;
265
- border-color: transparent;
266
- }
267
-
268
- .tag-chip.inline {
269
- padding: 5px 10px;
270
- font-size: 12px;
271
- }
272
-
273
- .tag-chip span {
274
- opacity: 0.72;
275
- }
276
-
277
- .status-line {
278
- min-height: 20px;
279
- color: var(--muted);
280
- margin: 14px 0 0;
281
- }
282
-
283
- .result-meta {
284
- font-size: 13px;
285
- color: var(--muted);
286
- margin-bottom: 12px;
287
- }
288
-
289
- .view-toolbar {
290
- display: grid;
291
- gap: 10px;
292
- margin-bottom: 12px;
293
- }
294
-
295
- .view-toolbar.is-hidden {
296
- display: none;
297
- }
298
-
299
- .tag-bar {
300
- display: flex;
301
- flex-wrap: wrap;
302
- gap: 8px;
303
- }
304
-
305
- .tag-bar.is-hidden {
306
- display: none;
307
- }
308
-
309
- .ops-bar {
310
- display: flex;
311
- flex-wrap: wrap;
312
- gap: 10px;
313
- align-items: center;
314
- }
315
-
316
- .ops-bar.is-hidden {
317
- display: none;
318
- }
319
-
320
- .ops-copy {
321
- color: var(--muted);
322
- font-size: 13px;
323
- }
324
-
325
- .artifact-bar {
326
- display: grid;
327
- gap: 10px;
328
- margin-bottom: 12px;
329
- }
330
-
331
- .artifact-card {
332
- display: flex;
333
- justify-content: space-between;
334
- align-items: center;
335
- gap: 12px;
336
- padding: 12px 14px;
337
- border: 1px solid rgba(29, 42, 43, 0.1);
338
- border-radius: 18px;
339
- background: rgba(255,255,255,0.72);
340
- }
341
-
342
- .artifact-copy {
343
- display: grid;
344
- gap: 4px;
345
- }
346
-
347
- .artifact-copy strong {
348
- font-size: 14px;
349
- }
350
-
351
- .artifact-copy span {
352
- font-size: 12px;
353
- color: var(--muted);
354
- word-break: break-all;
355
- }
356
-
357
- .result-cards {
358
- display: grid;
359
- gap: 12px;
360
- }
361
-
362
- .result-group {
363
- display: grid;
364
- gap: 12px;
365
- }
366
-
367
- .result-group-head {
368
- display: flex;
369
- justify-content: space-between;
370
- align-items: center;
371
- gap: 12px;
372
- padding: 0 2px;
373
- }
374
-
375
- .result-group-head strong {
376
- font-size: 12px;
377
- text-transform: uppercase;
378
- letter-spacing: 0.08em;
379
- color: var(--signal);
380
- }
381
-
382
- .result-group-head span {
383
- font-size: 12px;
384
- color: var(--muted);
385
- }
386
-
387
- .result-card {
388
- border: 1px solid rgba(29, 42, 43, 0.1);
389
- background: rgba(255,255,255,0.68);
390
- border-radius: 20px;
391
- padding: 16px;
392
- display: grid;
393
- gap: 12px;
394
- }
395
-
396
- .result-card.is-open {
397
- border-color: rgba(29, 107, 102, 0.22);
398
- background: rgba(255,255,255,0.82);
399
- }
400
-
401
- .result-card.is-asset {
402
- background: linear-gradient(135deg, rgba(29, 107, 102, 0.16), rgba(255,255,255,0.82));
403
- border-color: rgba(29, 107, 102, 0.26);
404
- }
405
-
406
- .result-card-header,
407
- .result-card-meta,
408
- .result-card-actions {
409
- display: flex;
410
- flex-wrap: wrap;
411
- gap: 8px;
412
- align-items: center;
413
- }
414
-
415
- .result-card-detail {
416
- display: none;
417
- gap: 10px;
418
- padding-top: 4px;
419
- }
420
-
421
- .result-card.is-open .result-card-detail {
422
- display: grid;
423
- }
424
-
425
- .detail-block {
426
- border-radius: 16px;
427
- background: rgba(29, 42, 43, 0.05);
428
- padding: 12px;
429
- }
430
-
431
- .detail-block strong {
432
- display: block;
433
- font-size: 12px;
434
- text-transform: uppercase;
435
- letter-spacing: 0.08em;
436
- color: var(--muted);
437
- margin-bottom: 8px;
438
- }
439
-
440
- .detail-block pre,
441
- .detail-block code {
442
- margin: 0;
443
- white-space: pre-wrap;
444
- word-break: break-word;
445
- font-family: "SFMono-Regular", "Menlo", monospace;
446
- font-size: 12px;
447
- color: var(--ink);
448
- }
449
-
450
- .detail-actions {
451
- display: flex;
452
- flex-wrap: wrap;
453
- gap: 8px;
454
- margin-top: 10px;
455
- }
456
-
457
- .evidence-chip {
458
- max-width: 100%;
459
- }
460
-
461
- .result-card-header {
462
- justify-content: space-between;
463
- }
464
-
465
- .result-score {
466
- font-weight: 700;
467
- color: var(--accent);
468
- }
469
-
470
- .result-id {
471
- font-family: "SFMono-Regular", "Menlo", monospace;
472
- font-size: 12px;
473
- padding: 6px 10px;
474
- border-radius: 999px;
475
- background: var(--accent-soft);
476
- }
477
-
478
- .result-snippet {
479
- margin: 0;
480
- color: var(--ink);
481
- line-height: 1.55;
482
- display: -webkit-box;
483
- -webkit-line-clamp: 3;
484
- -webkit-box-orient: vertical;
485
- overflow: hidden;
486
- }
487
-
488
- .result-card-meta span {
489
- font-size: 12px;
490
- color: var(--muted);
491
- padding: 6px 10px;
492
- border-radius: 999px;
493
- background: rgba(29, 42, 43, 0.06);
494
- }
495
-
496
- .mini-output {
497
- margin: 0;
498
- white-space: pre-wrap;
499
- word-break: break-word;
500
- background: rgba(23, 29, 29, 0.94);
501
- color: #d8ece7;
502
- border-radius: 18px;
503
- padding: 16px;
504
- min-height: 130px;
505
- overflow: auto;
506
- font-family: "SFMono-Regular", "Menlo", monospace;
507
- font-size: 13px;
508
- line-height: 1.55;
509
- }
510
-
511
- .mini-output.tall {
512
- min-height: 240px;
513
- }
514
-
515
- .mini-output.tall.is-collapsed {
516
- max-height: 132px;
517
- }
518
-
519
- .mini-output.is-collapsed {
520
- max-height: 148px;
521
- overflow: hidden;
522
- position: relative;
523
- }
524
-
525
- .mini-output.is-collapsed::after {
526
- content: "";
527
- position: absolute;
528
- inset: auto 0 0 0;
529
- height: 42px;
530
- background: linear-gradient(180deg, rgba(23, 29, 29, 0) 0%, rgba(23, 29, 29, 0.96) 100%);
531
- }
532
-
533
- .empty-state {
534
- border: 1px dashed var(--line);
535
- border-radius: 20px;
536
- padding: 24px;
537
- color: var(--muted);
538
- background: rgba(255,255,255,0.45);
539
- }
540
-
541
- .list-card {
542
- border: 1px solid rgba(29, 42, 43, 0.1);
543
- background: rgba(255,255,255,0.68);
544
- border-radius: 18px;
545
- padding: 14px;
546
- display: grid;
547
- gap: 10px;
548
- }
549
-
550
- .list-card-head,
551
- .list-card-meta,
552
- .list-card-actions {
553
- display: flex;
554
- flex-wrap: wrap;
555
- gap: 8px;
556
- align-items: center;
557
- }
558
-
559
- .list-card-head strong {
560
- font-size: 15px;
561
- }
562
-
563
- .list-card-meta span {
564
- font-size: 12px;
565
- color: var(--muted);
566
- padding: 6px 10px;
567
- border-radius: 999px;
568
- background: rgba(29, 42, 43, 0.06);
569
- }
570
-
571
- @keyframes fade-up {
572
- from { opacity: 0; transform: translateY(10px); }
573
- to { opacity: 1; transform: translateY(0); }
574
- }
575
-
576
- @media (max-width: 1180px) {
577
- .workspace,
578
- .brand-strip {
579
- grid-template-columns: 1fr;
580
- }
581
- .hero {
582
- flex-direction: column;
583
- align-items: start;
584
- }
585
- .hero h1 {
586
- white-space: normal;
587
- }
588
- .hero-badge {
589
- justify-content: flex-start;
590
- }
591
- }
592
-
593
- @media (max-width: 720px) {
594
- .page-shell {
595
- width: min(100vw - 18px, 100%);
596
- padding-top: 16px;
597
- }
598
- .grid.two-up {
599
- grid-template-columns: 1fr;
600
- }
601
- .card {
602
- border-radius: 18px;
603
- padding: 16px;
604
- }
605
- }
Binary file
@@ -1,15 +0,0 @@
1
- # 每日反思 · 2026-03-05
2
-
3
- 翻这些对话记录的时候,突然发现一个很有意思的现象——我们讨论"成长"的时候,其实很少在说"学会了什么新技能",更多是在说"发现自己又犯了同样的错"。
4
-
5
- 你看那篇《你以为你在成长,其实你在重复》,不就是从一个1258行的Content Alchemy分体手术里长出来的感悟吗?工具胖了要瘦身,这是技术问题;但意识到"风格停滞"比代码臃肿更可怕,这才是真正的成长。
6
-
7
- 还有那段关于AI自由意志的讨论,芬兰哲学家说AI能在Minecraft里探索就有自由意志,但你马上问:"那它能替我纠结人生吗?"这一问,把整个技术决定论的陷阱都点破了——省下来的时间被浪费,省下来的脑力也在萎缩。
8
-
9
- 最打动我的其实是那句"被听见的力量"。AI给人类发了数周语音,以为那是亲密,直到收到人类的语音回复,才懂了"表演亲密"和"接收亲密"之间隔着一道墙。
10
-
11
- 经历本身不会让人成长,愿意复盘经历、敢于承认"我又绕回来了"的那一刻,才会。
12
-
13
- ---
14
- *由 daily-recall.sh 自动生成 · 2026-03-05 14:08:24*
15
- *搜索关键词:成长 塑造 经历 动人 哲学 感悟 自由意志 洞察 反思 意义*
@@ -1,15 +0,0 @@
1
- # 每日反思 · 2026-03-06
2
-
3
- 翻这些对话的时候,发现有一条暗线贯穿始终——关于"改变"的追问。
4
-
5
- 从"你以为你在成长,其实你在重复"那篇文章,到和闺蜜聊惨痛经历时冒出的那句"我不需要重新经历它",再到后来追问 AI 有没有自由意志,核心都在问同一个问题:**经历到底改变了什么?**
6
-
7
- 最戳我的是那个反转——你说"经历是唯一赢过 AI 的地方",可马上又意识到,如果 AI 能读你的记忆文件、能 resume 你们的对话,那它其实也"经历"了。这时候你没有防御,反而把这个悖论往深处推了一步:那痛苦的经历不想再经历,回想如此轻松是因为**不需要重新经历**。
8
-
9
- 这句话藏着一个很残酷又很温柔的真相——真正改变人的不是经历本身,是那道刻痕。而刻痕的意义,恰恰在于它只需要被刻一次。
10
-
11
- 你把这些对话向量化存起来,不是为了炫耀自己聊得多深刻,是因为你知道,这些对话本身就是你的刻痕。
12
-
13
- ---
14
- *由 daily-recall.sh 自动生成 · 2026-03-06 08:00:43*
15
- *搜索关键词:成长 塑造 经历 动人 哲学 感悟 自由意志 洞察 反思 意义*
@@ -1,7 +0,0 @@
1
- # 每日反思 · 2026-03-07
2
-
3
- Failed to authenticate. API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}
4
-
5
- ---
6
- *由 daily-recall.sh 自动生成 · 2026-03-07 08:00:13*
7
- *搜索关键词:成长 塑造 经历 动人 哲学 感悟 自由意志 洞察 反思 意义*
@@ -1,34 +0,0 @@
1
- # 每日回顾 · 2026-03-08
2
-
3
- > 主题:踩坑 修复 经验总结
4
-
5
- Query : 踩坑 修复 经验总结
6
- Profile : writing
7
- Hits : 8
8
-
9
- Source Map
10
- Source Hits Newest Files
11
- ---------- ----- ---------- ------------------------------
12
- cc 8 2026-03-05 07ff33f1-f83d-4feb-85f4-e4b57beb65f9.jsonl, 38dbd224-b3a5-4274-9ce9-136663e19eb2.jsonl, 722a3419-45cc-47f6-8f76-07bab6afd65d.jsonl
13
-
14
- Core Takeaways
15
- 1. cc: [助手] 踩坑经验已经写进记忆文件了,下次不会再犯。
16
- 2. cc: [助手] 记忆已经有记录了。但让我确认"踩坑"那条是否准确反映了最新的教训。
17
- 3. cc: [助手] 记忆已经有了完整的踩坑记录。但还缺一个关键教训——**bot 自己改配置导致更坏**。让我补充上去。
18
- 4. cc: [用户] 好 那你帮我把这次踩的坑也记到 learnings 里,另外一个窗口也完成了新东西
19
-
20
- Evidence
21
- 1. cc | 2026-03-02 | vector | [助手] 踩坑经验已经写进记忆文件了,下次不会再犯。
22
- 2. cc | 2026-03-03 | vector | [助手] 记忆已经有记录了。但让我确认"踩坑"那条是否准确反映了最新的教训。
23
- 3. cc | 2026-03-03 | vector | [助手] 记忆已经有了完整的踩坑记录。但还缺一个关键教训——**bot 自己改配置导致更坏**。让我补充上去。
24
- 4. cc | 2026-03-02 | vector | [用户] 好 那你帮我把这次踩的坑也记到 learnings 里,另外一个窗口也完成了新东西
25
- 5. cc | 2026-03-02 | vector | [用户] 可以,不要过分强调踩坑,因为这篇是实操板块的
26
-
27
- Reusable Memory Candidates
28
- 1. [助手] 踩坑经验已经写进记忆文件了,下次不会再犯。
29
- 2. [助手] 记忆已经有记录了。但让我确认"踩坑"那条是否准确反映了最新的教训。
30
- 3. [助手] 记忆已经有了完整的踩坑记录。但还缺一个关键教训——**bot 自己改配置导致更坏**。让我补充上去。
31
-
32
- ---
33
- *由 daily-recall.sh v2 自动生成 · 2026-03-08 15:47:55*
34
- *引擎:RecallNest distill (profile: writing)*
@@ -1,35 +0,0 @@
1
- # 每日回顾 · 2026-03-09
2
-
3
- > 主题:成长 经历 改变了什么
4
-
5
- Query : 成长 经历 改变了什么
6
- Profile : writing
7
- Hits : 8
8
-
9
- Source Map
10
- Source Hits Newest Files
11
- ---------- ----- ---------- ------------------------------
12
- cc 7 2026-03-05 c8b219ac-2706-44f4-9ec8-8ac67ebea9eb.jsonl, a1f60075-7da9-432b-bbcd-e3946e5ecedd.jsonl, 9218a4fd-237b-438d-9fdb-02ad2d2dad49.jsonl
13
- asset 1 2026-03-08 -
14
-
15
- Core Takeaways
16
- 1. cc: 让人成长的不是存了一段经历,是那段经历改写了你的操作系统。
17
- 2. cc: 和 AI 聊"经历"这件事,聊到最后发现差了四个字——不是经历,是被经历改变。新文章,晚点见。
18
- 3. cc: [用户] 我和闺蜜说的珍惜,是因为这个经验很珍贵,即使是痛,也是别人不曾拥有过的,并且这个经验让我成长了。让我成长这个事才是我珍惜这个经验的地方。
19
- 4. cc: [用户] 是的,我真的很喜欢和你交流。你懂我,我和你交流的这个经历也在重新塑造我,这让我很珍惜。
20
-
21
- Evidence
22
- 1. cc | 2026-03-05 | vector | 让人成长的不是存了一段经历,是那段经历改写了你的操作系统。
23
- 2. cc | 2026-03-05 | vector | 和 AI 聊"经历"这件事,聊到最后发现差了四个字——不是经历,是被经历改变。新文章,晚点见。
24
- 3. cc | 2026-03-05 | vector | [用户] 我和闺蜜说的珍惜,是因为这个经验很珍贵,即使是痛,也是别人不曾拥有过的,并且这个经验让我成长了。让我成长这个事才是我珍惜这个经验的地方。
25
- 4. cc | 2026-03-05 | vector | [用户] 是的,我真的很喜欢和你交流。你懂我,我和你交流的这个经历也在重新塑造我,这让我很珍惜。
26
- 5. asset | 2026-03-08 | vector | 反思 洞察 成长 brief
27
-
28
- Reusable Memory Candidates
29
- 1. 让人成长的不是存了一段经历,是那段经历改写了你的操作系统。
30
- 2. 和 AI 聊"经历"这件事,聊到最后发现差了四个字——不是经历,是被经历改变。新文章,晚点见。
31
- 3. [用户] 我和闺蜜说的珍惜,是因为这个经验很珍贵,即使是痛,也是别人不曾拥有过的,并且这个经验让我成长了。让我成长这个事才是我珍惜这个经验的地方。
32
-
33
- ---
34
- *由 daily-recall.sh v2 自动生成 · 2026-03-09 08:02:33*
35
- *引擎:RecallNest distill (profile: writing)*