@remnic/plugin-openclaw 1.0.3 → 1.0.4
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/LICENSE +21 -0
- package/README.md +211 -4
- package/dist/{calibration-WZXRJMVP.js → calibration-3JHF25QT.js} +2 -2
- package/dist/{causal-chain-LA3IQNL6.js → causal-chain-OKDZSDEB.js} +3 -3
- package/dist/{causal-consolidation-YZLBOC7J.js → causal-consolidation-62IFBWHC.js} +22 -7
- package/dist/{causal-retrieval-ITNQBUQM.js → causal-retrieval-5UPIKZ4I.js} +4 -4
- package/dist/{causal-trajectory-graph-7Z5DD66L.js → causal-trajectory-graph-RQIT37DN.js} +1 -1
- package/dist/{chunk-BIBYVWVY.js → chunk-3SA5F4WT.js} +1 -1
- package/dist/{chunk-Y7JG2Q3V.js → chunk-5VTGFKKU.js} +2001 -275
- package/dist/{chunk-HSBPDYF4.js → chunk-BXTMZDRT.js} +2 -2
- package/dist/chunk-J2FCINY7.js +960 -0
- package/dist/{chunk-L46G4NGI.js → chunk-J7VGZNH4.js} +15 -4
- package/dist/chunk-NJG4HPAL.js +7099 -0
- package/dist/{chunk-BZ27H3BL.js → chunk-RMFPW4VK.js} +1 -1
- package/dist/{chunk-DMGIUDBO.js → chunk-UFU5GGGA.js} +8 -2
- package/dist/{chunk-JGEKL3WH.js → chunk-YHH3SXKD.js} +1 -1
- package/dist/{chunk-H3SKMYPU.js → chunk-Z7GRLVK3.js} +2 -2
- package/dist/{engine-GPDZXAXN.js → engine-BEV4BHEH.js} +3 -3
- package/dist/{fallback-llm-7UTWU27F.js → fallback-llm-HJRCHKSA.js} +2 -2
- package/dist/index.js +14018 -13908
- package/dist/{logger-NZE2OBVA.js → logger-TNOKCH7X.js} +1 -1
- package/dist/openai-53ZQ46RZ.js +44 -0
- package/dist/storage-HW6SRQCK.js +24 -0
- package/openclaw.plugin.json +807 -10
- package/package.json +8 -11
- package/dist/storage-AGYBIME4.js +0 -16
package/openclaw.plugin.json
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"id": "openclaw-
|
|
2
|
+
"id": "openclaw-remnic",
|
|
3
3
|
"kind": "memory",
|
|
4
|
+
"description": "Local semantic memory for OpenClaw. Requires plugins.slots.memory set to this plugin id for hooks to fire.",
|
|
5
|
+
"supports": {
|
|
6
|
+
"memorySlot": true,
|
|
7
|
+
"dreamingSlot": true,
|
|
8
|
+
"activeMemory": true,
|
|
9
|
+
"heartbeat": true,
|
|
10
|
+
"commandsList": true,
|
|
11
|
+
"beforeReset": true
|
|
12
|
+
},
|
|
4
13
|
"configSchema": {
|
|
5
14
|
"type": "object",
|
|
6
15
|
"additionalProperties": false,
|
|
@@ -165,6 +174,551 @@
|
|
|
165
174
|
"type": "string",
|
|
166
175
|
"description": "Override memory storage directory"
|
|
167
176
|
},
|
|
177
|
+
"entitySchemas": {
|
|
178
|
+
"type": "object",
|
|
179
|
+
"description": "Optional per-entity-type structured section schema overrides.",
|
|
180
|
+
"additionalProperties": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"additionalProperties": false,
|
|
183
|
+
"properties": {
|
|
184
|
+
"sections": {
|
|
185
|
+
"type": "array",
|
|
186
|
+
"items": {
|
|
187
|
+
"type": "object",
|
|
188
|
+
"additionalProperties": false,
|
|
189
|
+
"properties": {
|
|
190
|
+
"key": {
|
|
191
|
+
"type": "string"
|
|
192
|
+
},
|
|
193
|
+
"title": {
|
|
194
|
+
"type": "string"
|
|
195
|
+
},
|
|
196
|
+
"description": {
|
|
197
|
+
"type": "string"
|
|
198
|
+
},
|
|
199
|
+
"aliases": {
|
|
200
|
+
"type": "array",
|
|
201
|
+
"items": {
|
|
202
|
+
"type": "string"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"anyOf": [
|
|
207
|
+
{
|
|
208
|
+
"required": [
|
|
209
|
+
"key"
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"required": [
|
|
214
|
+
"title"
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"required": [
|
|
222
|
+
"sections"
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"dreaming": {
|
|
227
|
+
"type": "object",
|
|
228
|
+
"additionalProperties": false,
|
|
229
|
+
"default": {},
|
|
230
|
+
"properties": {
|
|
231
|
+
"enabled": {
|
|
232
|
+
"type": "boolean",
|
|
233
|
+
"default": false
|
|
234
|
+
},
|
|
235
|
+
"journalPath": {
|
|
236
|
+
"type": "string",
|
|
237
|
+
"default": "DREAMS.md"
|
|
238
|
+
},
|
|
239
|
+
"maxEntries": {
|
|
240
|
+
"anyOf": [
|
|
241
|
+
{
|
|
242
|
+
"type": "integer",
|
|
243
|
+
"const": 0
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"type": "integer",
|
|
247
|
+
"minimum": 10,
|
|
248
|
+
"maximum": 10000
|
|
249
|
+
}
|
|
250
|
+
],
|
|
251
|
+
"default": 500
|
|
252
|
+
},
|
|
253
|
+
"injectRecentCount": {
|
|
254
|
+
"type": "integer",
|
|
255
|
+
"minimum": 0,
|
|
256
|
+
"maximum": 20,
|
|
257
|
+
"default": 3
|
|
258
|
+
},
|
|
259
|
+
"minIntervalMinutes": {
|
|
260
|
+
"type": "integer",
|
|
261
|
+
"minimum": 1,
|
|
262
|
+
"default": 120
|
|
263
|
+
},
|
|
264
|
+
"narrativeModel": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"default": ""
|
|
267
|
+
},
|
|
268
|
+
"narrativePromptStyle": {
|
|
269
|
+
"type": "string",
|
|
270
|
+
"enum": [
|
|
271
|
+
"reflective",
|
|
272
|
+
"diary",
|
|
273
|
+
"analytical"
|
|
274
|
+
],
|
|
275
|
+
"default": "reflective"
|
|
276
|
+
},
|
|
277
|
+
"watchFile": {
|
|
278
|
+
"type": "boolean",
|
|
279
|
+
"default": true
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"heartbeat": {
|
|
284
|
+
"type": "object",
|
|
285
|
+
"additionalProperties": false,
|
|
286
|
+
"default": {},
|
|
287
|
+
"properties": {
|
|
288
|
+
"enabled": {
|
|
289
|
+
"type": "boolean",
|
|
290
|
+
"default": false
|
|
291
|
+
},
|
|
292
|
+
"journalPath": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"default": "HEARTBEAT.md"
|
|
295
|
+
},
|
|
296
|
+
"maxPreviousRuns": {
|
|
297
|
+
"type": "integer",
|
|
298
|
+
"minimum": 0,
|
|
299
|
+
"maximum": 20,
|
|
300
|
+
"default": 5
|
|
301
|
+
},
|
|
302
|
+
"watchFile": {
|
|
303
|
+
"type": "boolean",
|
|
304
|
+
"default": true
|
|
305
|
+
},
|
|
306
|
+
"detectionMode": {
|
|
307
|
+
"type": "string",
|
|
308
|
+
"enum": [
|
|
309
|
+
"runtime-signal",
|
|
310
|
+
"heuristic",
|
|
311
|
+
"auto"
|
|
312
|
+
],
|
|
313
|
+
"default": "auto"
|
|
314
|
+
},
|
|
315
|
+
"gateExtractionDuringHeartbeat": {
|
|
316
|
+
"type": "boolean",
|
|
317
|
+
"default": true
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"slotBehavior": {
|
|
322
|
+
"type": "object",
|
|
323
|
+
"additionalProperties": false,
|
|
324
|
+
"default": {},
|
|
325
|
+
"properties": {
|
|
326
|
+
"requireExclusiveMemorySlot": {
|
|
327
|
+
"type": "boolean",
|
|
328
|
+
"default": true
|
|
329
|
+
},
|
|
330
|
+
"onSlotMismatch": {
|
|
331
|
+
"type": "string",
|
|
332
|
+
"enum": [
|
|
333
|
+
"error",
|
|
334
|
+
"warn",
|
|
335
|
+
"silent"
|
|
336
|
+
],
|
|
337
|
+
"default": "error"
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
"beforeResetTimeoutMs": {
|
|
342
|
+
"type": "integer",
|
|
343
|
+
"minimum": 100,
|
|
344
|
+
"maximum": 30000,
|
|
345
|
+
"default": 2000,
|
|
346
|
+
"description": "Maximum time to wait for a reset-triggered flush before returning control to OpenClaw."
|
|
347
|
+
},
|
|
348
|
+
"flushOnResetEnabled": {
|
|
349
|
+
"type": "boolean",
|
|
350
|
+
"default": true,
|
|
351
|
+
"description": "Flush buffered turns through extraction when OpenClaw resets a session."
|
|
352
|
+
},
|
|
353
|
+
"commandsListEnabled": {
|
|
354
|
+
"type": "boolean",
|
|
355
|
+
"default": true,
|
|
356
|
+
"description": "Advertise Remnic slash-command descriptors through the commands.list runtime surface."
|
|
357
|
+
},
|
|
358
|
+
"openclawToolsEnabled": {
|
|
359
|
+
"type": "boolean",
|
|
360
|
+
"default": true,
|
|
361
|
+
"description": "Register the OpenClaw memory.search and memory.get tool adapters."
|
|
362
|
+
},
|
|
363
|
+
"openclawToolSnippetMaxChars": {
|
|
364
|
+
"type": "integer",
|
|
365
|
+
"minimum": 80,
|
|
366
|
+
"maximum": 4000,
|
|
367
|
+
"default": 600,
|
|
368
|
+
"description": "Maximum snippet size returned by the OpenClaw memory tool adapters."
|
|
369
|
+
},
|
|
370
|
+
"sessionTogglesEnabled": {
|
|
371
|
+
"type": "boolean",
|
|
372
|
+
"default": true,
|
|
373
|
+
"description": "Enable per-session recall toggle state for OpenClaw runtime surfaces."
|
|
374
|
+
},
|
|
375
|
+
"verboseRecallVisibility": {
|
|
376
|
+
"type": "boolean",
|
|
377
|
+
"default": true,
|
|
378
|
+
"description": "Allow verbose recall headers to surface runtime recall diagnostics in prompts."
|
|
379
|
+
},
|
|
380
|
+
"recallTranscriptsEnabled": {
|
|
381
|
+
"type": "boolean",
|
|
382
|
+
"default": false,
|
|
383
|
+
"description": "Write JSONL recall audit transcripts for runtime-surface injections."
|
|
384
|
+
},
|
|
385
|
+
"recallTranscriptRetentionDays": {
|
|
386
|
+
"type": "integer",
|
|
387
|
+
"minimum": 1,
|
|
388
|
+
"maximum": 365,
|
|
389
|
+
"default": 30,
|
|
390
|
+
"description": "Days of runtime recall audit transcripts to retain before pruning."
|
|
391
|
+
},
|
|
392
|
+
"respectBundledActiveMemoryToggle": {
|
|
393
|
+
"type": "boolean",
|
|
394
|
+
"default": true,
|
|
395
|
+
"description": "Honor the bundled active-memory session toggle file when resolving Remnic recall toggles."
|
|
396
|
+
},
|
|
397
|
+
"activeRecallEnabled": {
|
|
398
|
+
"type": "boolean",
|
|
399
|
+
"default": false,
|
|
400
|
+
"description": "Enable the OpenClaw active-recall prompt surface."
|
|
401
|
+
},
|
|
402
|
+
"activeRecallAgents": {
|
|
403
|
+
"type": "array",
|
|
404
|
+
"items": {
|
|
405
|
+
"type": "string"
|
|
406
|
+
},
|
|
407
|
+
"description": "Optional allowlist of OpenClaw agent ids that may use active recall."
|
|
408
|
+
},
|
|
409
|
+
"activeRecallAllowedChatTypes": {
|
|
410
|
+
"type": "array",
|
|
411
|
+
"items": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"enum": [
|
|
414
|
+
"direct",
|
|
415
|
+
"group",
|
|
416
|
+
"channel"
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
"default": [
|
|
420
|
+
"direct",
|
|
421
|
+
"group",
|
|
422
|
+
"channel"
|
|
423
|
+
],
|
|
424
|
+
"description": "OpenClaw chat types eligible for active recall."
|
|
425
|
+
},
|
|
426
|
+
"activeRecallQueryMode": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"enum": [
|
|
429
|
+
"recent",
|
|
430
|
+
"message",
|
|
431
|
+
"full"
|
|
432
|
+
],
|
|
433
|
+
"default": "recent",
|
|
434
|
+
"description": "How much recent OpenClaw conversation context is fed into the active-recall query builder."
|
|
435
|
+
},
|
|
436
|
+
"activeRecallPromptStyle": {
|
|
437
|
+
"type": "string",
|
|
438
|
+
"enum": [
|
|
439
|
+
"balanced",
|
|
440
|
+
"strict",
|
|
441
|
+
"contextual",
|
|
442
|
+
"recall-heavy",
|
|
443
|
+
"precision-heavy",
|
|
444
|
+
"preference-only"
|
|
445
|
+
],
|
|
446
|
+
"default": "balanced",
|
|
447
|
+
"description": "Prompt assembly style for the active-recall surface."
|
|
448
|
+
},
|
|
449
|
+
"activeRecallPromptOverride": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"description": "Optional full prompt override for the active-recall surface."
|
|
452
|
+
},
|
|
453
|
+
"activeRecallPromptAppend": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"description": "Optional prompt suffix appended to the active-recall system prompt."
|
|
456
|
+
},
|
|
457
|
+
"activeRecallMaxSummaryChars": {
|
|
458
|
+
"type": "integer",
|
|
459
|
+
"minimum": 40,
|
|
460
|
+
"maximum": 1000,
|
|
461
|
+
"default": 220,
|
|
462
|
+
"description": "Maximum summary size produced by the active-recall surface."
|
|
463
|
+
},
|
|
464
|
+
"activeRecallRecentUserTurns": {
|
|
465
|
+
"type": "integer",
|
|
466
|
+
"minimum": 0,
|
|
467
|
+
"maximum": 4,
|
|
468
|
+
"default": 2,
|
|
469
|
+
"description": "How many recent user turns to include in the active-recall query context."
|
|
470
|
+
},
|
|
471
|
+
"activeRecallRecentAssistantTurns": {
|
|
472
|
+
"type": "integer",
|
|
473
|
+
"minimum": 0,
|
|
474
|
+
"maximum": 3,
|
|
475
|
+
"default": 1,
|
|
476
|
+
"description": "How many recent assistant turns to include in the active-recall query context."
|
|
477
|
+
},
|
|
478
|
+
"activeRecallRecentUserChars": {
|
|
479
|
+
"type": "integer",
|
|
480
|
+
"minimum": 40,
|
|
481
|
+
"maximum": 1000,
|
|
482
|
+
"default": 600,
|
|
483
|
+
"description": "Per-user-turn character cap for active-recall context assembly."
|
|
484
|
+
},
|
|
485
|
+
"activeRecallRecentAssistantChars": {
|
|
486
|
+
"type": "integer",
|
|
487
|
+
"minimum": 40,
|
|
488
|
+
"maximum": 1000,
|
|
489
|
+
"default": 400,
|
|
490
|
+
"description": "Per-assistant-turn character cap for active-recall context assembly."
|
|
491
|
+
},
|
|
492
|
+
"activeRecallThinking": {
|
|
493
|
+
"type": "string",
|
|
494
|
+
"enum": [
|
|
495
|
+
"off",
|
|
496
|
+
"minimal",
|
|
497
|
+
"low",
|
|
498
|
+
"medium",
|
|
499
|
+
"high",
|
|
500
|
+
"xhigh",
|
|
501
|
+
"adaptive"
|
|
502
|
+
],
|
|
503
|
+
"default": "low",
|
|
504
|
+
"description": "Reasoning effort used by the active-recall engine."
|
|
505
|
+
},
|
|
506
|
+
"activeRecallTimeoutMs": {
|
|
507
|
+
"type": "integer",
|
|
508
|
+
"minimum": 250,
|
|
509
|
+
"default": 15000,
|
|
510
|
+
"description": "Timeout for an active-recall run."
|
|
511
|
+
},
|
|
512
|
+
"activeRecallCacheTtlMs": {
|
|
513
|
+
"type": "integer",
|
|
514
|
+
"minimum": 0,
|
|
515
|
+
"maximum": 120000,
|
|
516
|
+
"default": 15000,
|
|
517
|
+
"description": "Cache TTL for active-recall summaries; 0 disables the cache."
|
|
518
|
+
},
|
|
519
|
+
"activeRecallModel": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"description": "Optional model override for active recall."
|
|
522
|
+
},
|
|
523
|
+
"activeRecallModelFallbackPolicy": {
|
|
524
|
+
"type": "string",
|
|
525
|
+
"enum": [
|
|
526
|
+
"default-remote",
|
|
527
|
+
"resolved-only"
|
|
528
|
+
],
|
|
529
|
+
"default": "default-remote",
|
|
530
|
+
"description": "How active recall falls back when an explicit model cannot be resolved."
|
|
531
|
+
},
|
|
532
|
+
"activeRecallPersistTranscripts": {
|
|
533
|
+
"type": "boolean",
|
|
534
|
+
"default": false,
|
|
535
|
+
"description": "Persist full active-recall request and response transcripts."
|
|
536
|
+
},
|
|
537
|
+
"activeRecallTranscriptDir": {
|
|
538
|
+
"type": "string",
|
|
539
|
+
"default": "active-recall",
|
|
540
|
+
"description": "Memory-relative directory for active-recall transcripts."
|
|
541
|
+
},
|
|
542
|
+
"activeRecallEntityGraphDepth": {
|
|
543
|
+
"type": "integer",
|
|
544
|
+
"minimum": 0,
|
|
545
|
+
"maximum": 3,
|
|
546
|
+
"default": 1,
|
|
547
|
+
"description": "Entity-graph traversal depth used by active recall."
|
|
548
|
+
},
|
|
549
|
+
"activeRecallIncludeCausalTrajectories": {
|
|
550
|
+
"type": "boolean",
|
|
551
|
+
"default": false,
|
|
552
|
+
"description": "Include causal trajectory recall evidence in active-recall summaries."
|
|
553
|
+
},
|
|
554
|
+
"activeRecallIncludeDaySummary": {
|
|
555
|
+
"type": "boolean",
|
|
556
|
+
"default": false,
|
|
557
|
+
"description": "Include the latest day summary in active-recall context."
|
|
558
|
+
},
|
|
559
|
+
"activeRecallAttachRecallExplain": {
|
|
560
|
+
"type": "boolean",
|
|
561
|
+
"default": false,
|
|
562
|
+
"description": "Attach recall explain output to active-recall diagnostics."
|
|
563
|
+
},
|
|
564
|
+
"activeRecallAllowChainedActiveMemory": {
|
|
565
|
+
"type": "boolean",
|
|
566
|
+
"default": false,
|
|
567
|
+
"description": "Allow active recall to chain into the bundled active-memory surface."
|
|
568
|
+
},
|
|
569
|
+
"codex": {
|
|
570
|
+
"type": "object",
|
|
571
|
+
"additionalProperties": false,
|
|
572
|
+
"default": {},
|
|
573
|
+
"properties": {
|
|
574
|
+
"installExtension": {
|
|
575
|
+
"type": "boolean",
|
|
576
|
+
"default": true,
|
|
577
|
+
"description": "Install the Remnic Codex memory extension during Codex connector setup."
|
|
578
|
+
},
|
|
579
|
+
"codexHome": {
|
|
580
|
+
"type": [
|
|
581
|
+
"string",
|
|
582
|
+
"null"
|
|
583
|
+
],
|
|
584
|
+
"default": null,
|
|
585
|
+
"description": "Optional Codex home directory override used for connector install and materialization."
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
"codexMaterializeMemories": {
|
|
590
|
+
"type": "boolean",
|
|
591
|
+
"default": true,
|
|
592
|
+
"description": "Enable Codex native memory materialization into the Codex memories directory."
|
|
593
|
+
},
|
|
594
|
+
"codexMaterializeNamespace": {
|
|
595
|
+
"type": "string",
|
|
596
|
+
"default": "auto",
|
|
597
|
+
"description": "Namespace to materialize for Codex. \"auto\" derives the namespace from the active connector context."
|
|
598
|
+
},
|
|
599
|
+
"codexMaterializeMaxSummaryTokens": {
|
|
600
|
+
"type": "number",
|
|
601
|
+
"minimum": 0,
|
|
602
|
+
"default": 4500,
|
|
603
|
+
"description": "Whitespace-token cap for Codex memory summary materialization."
|
|
604
|
+
},
|
|
605
|
+
"codexMaterializeRolloutRetentionDays": {
|
|
606
|
+
"type": "number",
|
|
607
|
+
"minimum": 0,
|
|
608
|
+
"default": 30,
|
|
609
|
+
"description": "Retention window in days for Codex rollout materialization artifacts."
|
|
610
|
+
},
|
|
611
|
+
"codexMaterializeOnConsolidation": {
|
|
612
|
+
"type": "boolean",
|
|
613
|
+
"default": true,
|
|
614
|
+
"description": "Run Codex memory materialization after semantic or causal consolidation completes."
|
|
615
|
+
},
|
|
616
|
+
"codexMaterializeOnSessionEnd": {
|
|
617
|
+
"type": "boolean",
|
|
618
|
+
"default": true,
|
|
619
|
+
"description": "Run Codex memory materialization from the Codex session-end hook."
|
|
620
|
+
},
|
|
621
|
+
"codexMarketplaceEnabled": {
|
|
622
|
+
"type": "boolean",
|
|
623
|
+
"default": true,
|
|
624
|
+
"description": "Enable Codex marketplace integration for plugin discovery and installation."
|
|
625
|
+
},
|
|
626
|
+
"versioningEnabled": {
|
|
627
|
+
"type": "boolean",
|
|
628
|
+
"default": false,
|
|
629
|
+
"description": "Enable page-level versioning with sidecar snapshots."
|
|
630
|
+
},
|
|
631
|
+
"versioningMaxPerPage": {
|
|
632
|
+
"type": "integer",
|
|
633
|
+
"default": 50,
|
|
634
|
+
"minimum": 0,
|
|
635
|
+
"description": "Maximum number of version snapshots per page. Set to 0 to disable pruning."
|
|
636
|
+
},
|
|
637
|
+
"versioningSidecarDir": {
|
|
638
|
+
"type": "string",
|
|
639
|
+
"default": ".versions",
|
|
640
|
+
"description": "Name of the sidecar directory inside memoryDir for version snapshots."
|
|
641
|
+
},
|
|
642
|
+
"taxonomyEnabled": {
|
|
643
|
+
"type": "boolean",
|
|
644
|
+
"default": false,
|
|
645
|
+
"description": "Enable the MECE taxonomy knowledge directory for categorizing memories."
|
|
646
|
+
},
|
|
647
|
+
"taxonomyAutoGenResolver": {
|
|
648
|
+
"type": "boolean",
|
|
649
|
+
"default": true,
|
|
650
|
+
"description": "Auto-regenerate RESOLVER.md when the taxonomy changes."
|
|
651
|
+
},
|
|
652
|
+
"citationsEnabled": {
|
|
653
|
+
"type": "boolean",
|
|
654
|
+
"default": false,
|
|
655
|
+
"description": "Enable oai-mem-citation blocks in recall responses for Codex citation parity."
|
|
656
|
+
},
|
|
657
|
+
"citationsAutoDetect": {
|
|
658
|
+
"type": "boolean",
|
|
659
|
+
"default": true,
|
|
660
|
+
"description": "Auto-enable citations when the Codex adapter is detected."
|
|
661
|
+
},
|
|
662
|
+
"memoryExtensionsEnabled": {
|
|
663
|
+
"type": "boolean",
|
|
664
|
+
"default": true,
|
|
665
|
+
"description": "Whether third-party memory extensions are discovered and injected into consolidation prompts."
|
|
666
|
+
},
|
|
667
|
+
"memoryExtensionsRoot": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"default": "",
|
|
670
|
+
"description": "Root directory for memory extensions. Empty string derives from memoryDir (go up to Remnic home and append memory_extensions)."
|
|
671
|
+
},
|
|
672
|
+
"binaryLifecycleEnabled": {
|
|
673
|
+
"type": "boolean",
|
|
674
|
+
"default": false,
|
|
675
|
+
"description": "Enable binary file lifecycle management. When true, binary files in the memory directory are mirrored, redirected, and cleaned."
|
|
676
|
+
},
|
|
677
|
+
"binaryLifecycleGracePeriodDays": {
|
|
678
|
+
"type": "number",
|
|
679
|
+
"default": 7,
|
|
680
|
+
"minimum": 0,
|
|
681
|
+
"description": "Days to wait before cleaning local copies of mirrored binary files."
|
|
682
|
+
},
|
|
683
|
+
"binaryLifecycleBackendType": {
|
|
684
|
+
"type": "string",
|
|
685
|
+
"enum": ["none", "filesystem", "s3"],
|
|
686
|
+
"default": "none",
|
|
687
|
+
"description": "Storage backend for binary lifecycle mirror stage."
|
|
688
|
+
},
|
|
689
|
+
"binaryLifecycleBackendPath": {
|
|
690
|
+
"type": "string",
|
|
691
|
+
"default": "",
|
|
692
|
+
"description": "Base path for the filesystem storage backend."
|
|
693
|
+
},
|
|
694
|
+
"codexCompat": {
|
|
695
|
+
"type": "object",
|
|
696
|
+
"additionalProperties": false,
|
|
697
|
+
"default": {},
|
|
698
|
+
"properties": {
|
|
699
|
+
"enabled": {
|
|
700
|
+
"type": "boolean",
|
|
701
|
+
"default": false
|
|
702
|
+
},
|
|
703
|
+
"threadIdBufferKeying": {
|
|
704
|
+
"type": "boolean",
|
|
705
|
+
"default": true
|
|
706
|
+
},
|
|
707
|
+
"compactionFlushMode": {
|
|
708
|
+
"type": "string",
|
|
709
|
+
"enum": [
|
|
710
|
+
"signal",
|
|
711
|
+
"heuristic",
|
|
712
|
+
"auto"
|
|
713
|
+
],
|
|
714
|
+
"default": "auto"
|
|
715
|
+
},
|
|
716
|
+
"fingerprintDedup": {
|
|
717
|
+
"type": "boolean",
|
|
718
|
+
"default": true
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
},
|
|
168
722
|
"debug": {
|
|
169
723
|
"type": "boolean",
|
|
170
724
|
"default": false,
|
|
@@ -685,7 +1239,7 @@
|
|
|
685
1239
|
"recallPlannerShadowMode": {
|
|
686
1240
|
"type": "boolean",
|
|
687
1241
|
"default": false,
|
|
688
|
-
"description": "Run recall planner in shadow mode
|
|
1242
|
+
"description": "Run recall planner in shadow mode — evaluate but do not apply results."
|
|
689
1243
|
},
|
|
690
1244
|
"recallPlannerTelemetryEnabled": {
|
|
691
1245
|
"type": "boolean",
|
|
@@ -760,7 +1314,7 @@
|
|
|
760
1314
|
"boxTopicShiftThreshold": {
|
|
761
1315
|
"type": "number",
|
|
762
1316
|
"default": 0.35,
|
|
763
|
-
"description": "Jaccard overlap threshold below which a topic shift seals the current box (0
|
|
1317
|
+
"description": "Jaccard overlap threshold below which a topic shift seals the current box (0–1)."
|
|
764
1318
|
},
|
|
765
1319
|
"boxTimeGapMs": {
|
|
766
1320
|
"type": "number",
|
|
@@ -785,7 +1339,7 @@
|
|
|
785
1339
|
"traceWeaverOverlapThreshold": {
|
|
786
1340
|
"type": "number",
|
|
787
1341
|
"default": 0.4,
|
|
788
|
-
"description": "Minimum Jaccard topic overlap to assign the same traceId (0
|
|
1342
|
+
"description": "Minimum Jaccard topic overlap to assign the same traceId (0–1)."
|
|
789
1343
|
},
|
|
790
1344
|
"boxRecallDays": {
|
|
791
1345
|
"type": "number",
|
|
@@ -885,7 +1439,7 @@
|
|
|
885
1439
|
"graphRecallShadowEnabled": {
|
|
886
1440
|
"type": "boolean",
|
|
887
1441
|
"default": false,
|
|
888
|
-
"description": "Run graph recall in shadow mode
|
|
1442
|
+
"description": "Run graph recall in shadow mode — evaluate but do not inject results."
|
|
889
1443
|
},
|
|
890
1444
|
"graphRecallSnapshotEnabled": {
|
|
891
1445
|
"type": "boolean",
|
|
@@ -1239,6 +1793,53 @@
|
|
|
1239
1793
|
"default": 2,
|
|
1240
1794
|
"description": "Number of sentences to overlap between chunks"
|
|
1241
1795
|
},
|
|
1796
|
+
"semanticChunkingEnabled": {
|
|
1797
|
+
"type": "boolean",
|
|
1798
|
+
"default": false,
|
|
1799
|
+
"description": "Enable semantic chunking with embedding-based topic boundary detection (requires embedding provider)"
|
|
1800
|
+
},
|
|
1801
|
+
"semanticChunkingConfig": {
|
|
1802
|
+
"type": "object",
|
|
1803
|
+
"default": {},
|
|
1804
|
+
"description": "Optional overrides for the semantic chunking algorithm",
|
|
1805
|
+
"properties": {
|
|
1806
|
+
"targetTokens": {
|
|
1807
|
+
"type": "number",
|
|
1808
|
+
"default": 200,
|
|
1809
|
+
"description": "Target tokens per chunk"
|
|
1810
|
+
},
|
|
1811
|
+
"minTokens": {
|
|
1812
|
+
"type": "number",
|
|
1813
|
+
"default": 100,
|
|
1814
|
+
"description": "Minimum tokens for a segment before merging with neighbor"
|
|
1815
|
+
},
|
|
1816
|
+
"maxTokens": {
|
|
1817
|
+
"type": "number",
|
|
1818
|
+
"default": 400,
|
|
1819
|
+
"description": "Maximum tokens for a segment before recursive splitting"
|
|
1820
|
+
},
|
|
1821
|
+
"smoothingWindowSize": {
|
|
1822
|
+
"type": "number",
|
|
1823
|
+
"default": 3,
|
|
1824
|
+
"description": "Window size for the moving-average smoothing filter (auto-rounded to odd)"
|
|
1825
|
+
},
|
|
1826
|
+
"boundaryThresholdStdDevs": {
|
|
1827
|
+
"type": "number",
|
|
1828
|
+
"default": 1,
|
|
1829
|
+
"description": "Standard deviations below mean for boundary detection"
|
|
1830
|
+
},
|
|
1831
|
+
"embeddingBatchSize": {
|
|
1832
|
+
"type": "number",
|
|
1833
|
+
"default": 32,
|
|
1834
|
+
"description": "Batch size for embedding requests"
|
|
1835
|
+
},
|
|
1836
|
+
"fallbackToRecursive": {
|
|
1837
|
+
"type": "boolean",
|
|
1838
|
+
"default": true,
|
|
1839
|
+
"description": "Fall back to recursive chunking when embeddings are unavailable"
|
|
1840
|
+
}
|
|
1841
|
+
}
|
|
1842
|
+
},
|
|
1242
1843
|
"contradictionDetectionEnabled": {
|
|
1243
1844
|
"type": "boolean",
|
|
1244
1845
|
"default": false,
|
|
@@ -1259,6 +1860,16 @@
|
|
|
1259
1860
|
"default": true,
|
|
1260
1861
|
"description": "Automatically supersede contradicted memories"
|
|
1261
1862
|
},
|
|
1863
|
+
"temporalSupersessionEnabled": {
|
|
1864
|
+
"type": "boolean",
|
|
1865
|
+
"default": true,
|
|
1866
|
+
"description": "Mark older facts superseded when a new fact writes a conflicting value for the same entityRef + structuredAttribute key (issue #375)"
|
|
1867
|
+
},
|
|
1868
|
+
"temporalSupersessionIncludeInRecall": {
|
|
1869
|
+
"type": "boolean",
|
|
1870
|
+
"default": false,
|
|
1871
|
+
"description": "If true, include temporally-superseded facts in recall results (for audit/history). Default: exclude."
|
|
1872
|
+
},
|
|
1262
1873
|
"memoryLinkingEnabled": {
|
|
1263
1874
|
"type": "boolean",
|
|
1264
1875
|
"default": false,
|
|
@@ -1403,7 +2014,10 @@
|
|
|
1403
2014
|
},
|
|
1404
2015
|
"modelSource": {
|
|
1405
2016
|
"type": "string",
|
|
1406
|
-
"enum": [
|
|
2017
|
+
"enum": [
|
|
2018
|
+
"plugin",
|
|
2019
|
+
"gateway"
|
|
2020
|
+
],
|
|
1407
2021
|
"default": "plugin",
|
|
1408
2022
|
"description": "LLM source: 'plugin' uses Engram's own openai/localLlm config; 'gateway' delegates to a gateway agent's model chain (agents.list[])."
|
|
1409
2023
|
},
|
|
@@ -1483,7 +2097,7 @@
|
|
|
1483
2097
|
"traceRecallContent": {
|
|
1484
2098
|
"type": "boolean",
|
|
1485
2099
|
"default": false,
|
|
1486
|
-
"description": "If true, include the full recalled memory text in RecallTraceEvent.recalledContent emitted to __openclawEngramTrace subscribers (e.g. Langfuse). Disabled by default
|
|
2100
|
+
"description": "If true, include the full recalled memory text in RecallTraceEvent.recalledContent emitted to __openclawEngramTrace subscribers (e.g. Langfuse). Disabled by default — only enable when you want external trace collectors to capture injected memory context."
|
|
1487
2101
|
},
|
|
1488
2102
|
"profilingEnabled": {
|
|
1489
2103
|
"type": "boolean",
|
|
@@ -1515,6 +2129,49 @@
|
|
|
1515
2129
|
"default": 40,
|
|
1516
2130
|
"description": "Minimum combined user/assistant characters required before extraction runs."
|
|
1517
2131
|
},
|
|
2132
|
+
"extractionMinImportanceLevel": {
|
|
2133
|
+
"type": "string",
|
|
2134
|
+
"enum": [
|
|
2135
|
+
"trivial",
|
|
2136
|
+
"low",
|
|
2137
|
+
"normal",
|
|
2138
|
+
"high",
|
|
2139
|
+
"critical"
|
|
2140
|
+
],
|
|
2141
|
+
"default": "low",
|
|
2142
|
+
"description": "Minimum locally-scored importance level required to persist an extracted fact. Facts below this level are dropped before write and counted toward the importance_gated metric. Default \"low\" drops only trivial turn-level chatter (greetings, single-word replies); raise to \"normal\" or higher for a stricter gate."
|
|
2143
|
+
},
|
|
2144
|
+
"extractionJudgeEnabled": {
|
|
2145
|
+
"type": "boolean",
|
|
2146
|
+
"default": false,
|
|
2147
|
+
"description": "Enable the LLM-as-judge fact-worthiness gate. When enabled, extracted facts are evaluated for durability before being persisted. Off by default (opt-in)."
|
|
2148
|
+
},
|
|
2149
|
+
"extractionJudgeModel": {
|
|
2150
|
+
"type": "string",
|
|
2151
|
+
"default": "",
|
|
2152
|
+
"description": "Model override for the extraction judge LLM. Empty string uses the configured local model."
|
|
2153
|
+
},
|
|
2154
|
+
"extractionJudgeBatchSize": {
|
|
2155
|
+
"type": "number",
|
|
2156
|
+
"default": 20,
|
|
2157
|
+
"minimum": 1,
|
|
2158
|
+
"description": "Maximum number of candidate facts sent to the judge LLM in a single batch call."
|
|
2159
|
+
},
|
|
2160
|
+
"extractionJudgeShadow": {
|
|
2161
|
+
"type": "boolean",
|
|
2162
|
+
"default": false,
|
|
2163
|
+
"description": "Shadow mode for the extraction judge. When true, judge verdicts are logged but all facts are still persisted regardless of the verdict."
|
|
2164
|
+
},
|
|
2165
|
+
"inlineSourceAttributionEnabled": {
|
|
2166
|
+
"type": "boolean",
|
|
2167
|
+
"default": false,
|
|
2168
|
+
"description": "Enable inline source attribution markers on persisted facts for downstream provenance tracking."
|
|
2169
|
+
},
|
|
2170
|
+
"inlineSourceAttributionFormat": {
|
|
2171
|
+
"type": "string",
|
|
2172
|
+
"default": "[Source: agent={agent}, session={sessionId}, ts={ts}]",
|
|
2173
|
+
"description": "Template used when inline source attribution is enabled."
|
|
2174
|
+
},
|
|
1518
2175
|
"extractionMinUserTurns": {
|
|
1519
2176
|
"type": "number",
|
|
1520
2177
|
"default": 1,
|
|
@@ -1894,8 +2551,13 @@
|
|
|
1894
2551
|
},
|
|
1895
2552
|
"semanticConsolidationExcludeCategories": {
|
|
1896
2553
|
"type": "array",
|
|
1897
|
-
"items": {
|
|
1898
|
-
|
|
2554
|
+
"items": {
|
|
2555
|
+
"type": "string"
|
|
2556
|
+
},
|
|
2557
|
+
"default": [
|
|
2558
|
+
"correction",
|
|
2559
|
+
"commitment"
|
|
2560
|
+
],
|
|
1899
2561
|
"description": "Memory categories excluded from semantic consolidation."
|
|
1900
2562
|
},
|
|
1901
2563
|
"semanticConsolidationIntervalHours": {
|
|
@@ -2260,6 +2922,24 @@
|
|
|
2260
2922
|
"default": true,
|
|
2261
2923
|
"description": "Enable content-hash deduplication to prevent storing semantically identical facts."
|
|
2262
2924
|
},
|
|
2925
|
+
"semanticDedupEnabled": {
|
|
2926
|
+
"type": "boolean",
|
|
2927
|
+
"default": true,
|
|
2928
|
+
"description": "Issue #373 — enable write-time semantic similarity guard that skips near-duplicate facts by comparing embeddings to existing memories. Fails open when the embedding backend is unavailable."
|
|
2929
|
+
},
|
|
2930
|
+
"semanticDedupThreshold": {
|
|
2931
|
+
"type": "number",
|
|
2932
|
+
"default": 0.92,
|
|
2933
|
+
"minimum": 0,
|
|
2934
|
+
"maximum": 1,
|
|
2935
|
+
"description": "Cosine similarity threshold in [0, 1]. Candidate facts whose nearest neighbor scores at or above this value are treated as duplicates and skipped."
|
|
2936
|
+
},
|
|
2937
|
+
"semanticDedupCandidates": {
|
|
2938
|
+
"type": "number",
|
|
2939
|
+
"default": 5,
|
|
2940
|
+
"minimum": 0,
|
|
2941
|
+
"description": "Number of nearest-neighbor candidates to inspect during the write-time semantic dedup check. Set to 0 to disable the embedding lookup entirely (equivalent to semanticDedupEnabled=false)."
|
|
2942
|
+
},
|
|
2263
2943
|
"factArchivalEnabled": {
|
|
2264
2944
|
"type": "boolean",
|
|
2265
2945
|
"default": false,
|
|
@@ -2615,6 +3295,20 @@
|
|
|
2615
3295
|
"default": true,
|
|
2616
3296
|
"description": "Generate LLM summaries for entities during consolidation"
|
|
2617
3297
|
},
|
|
3298
|
+
"entitySynthesisMaxTokens": {
|
|
3299
|
+
"anyOf": [
|
|
3300
|
+
{
|
|
3301
|
+
"type": "integer",
|
|
3302
|
+
"const": 0
|
|
3303
|
+
},
|
|
3304
|
+
{
|
|
3305
|
+
"type": "integer",
|
|
3306
|
+
"minimum": 10
|
|
3307
|
+
}
|
|
3308
|
+
],
|
|
3309
|
+
"default": 500,
|
|
3310
|
+
"description": "Max tokens used when refreshing an entity synthesis from its timeline."
|
|
3311
|
+
},
|
|
2618
3312
|
"recallBudgetChars": {
|
|
2619
3313
|
"type": "number",
|
|
2620
3314
|
"description": "Hard character cap for total recall injection. Defaults to maxMemoryTokens * 4."
|
|
@@ -2634,6 +3328,24 @@
|
|
|
2634
3328
|
"default": 25000,
|
|
2635
3329
|
"description": "Default deadline in ms recorded for enrichment recall sections."
|
|
2636
3330
|
},
|
|
3331
|
+
"recallMmrEnabled": {
|
|
3332
|
+
"type": "boolean",
|
|
3333
|
+
"default": true,
|
|
3334
|
+
"description": "Apply Maximal Marginal Relevance to the final recall selection per-section so one redundant cluster cannot dominate the injected context."
|
|
3335
|
+
},
|
|
3336
|
+
"recallMmrLambda": {
|
|
3337
|
+
"type": "number",
|
|
3338
|
+
"default": 0.7,
|
|
3339
|
+
"minimum": 0,
|
|
3340
|
+
"maximum": 1,
|
|
3341
|
+
"description": "MMR lambda parameter. 1.0 = pure relevance, 0.0 = pure diversity. Default 0.7 tilts toward relevance with meaningful diversity."
|
|
3342
|
+
},
|
|
3343
|
+
"recallMmrTopN": {
|
|
3344
|
+
"type": "number",
|
|
3345
|
+
"default": 40,
|
|
3346
|
+
"minimum": 0,
|
|
3347
|
+
"description": "Number of top candidates per section to run MMR over. Candidates past this remain in original order."
|
|
3348
|
+
},
|
|
2637
3349
|
"recallPipeline": {
|
|
2638
3350
|
"type": "array",
|
|
2639
3351
|
"description": "Ordered recall sections with per-section budgets and feature knobs.",
|
|
@@ -2860,7 +3572,7 @@
|
|
|
2860
3572
|
"parallelAgentWeights": {
|
|
2861
3573
|
"type": "object",
|
|
2862
3574
|
"default": {
|
|
2863
|
-
"direct": 1
|
|
3575
|
+
"direct": 1,
|
|
2864
3576
|
"contextual": 0.7,
|
|
2865
3577
|
"temporal": 0.85
|
|
2866
3578
|
},
|
|
@@ -2870,6 +3582,36 @@
|
|
|
2870
3582
|
"type": "number",
|
|
2871
3583
|
"default": 20,
|
|
2872
3584
|
"description": "Maximum results fetched per agent before merge."
|
|
3585
|
+
},
|
|
3586
|
+
"briefing": {
|
|
3587
|
+
"type": "object",
|
|
3588
|
+
"default": {
|
|
3589
|
+
"enabled": true,
|
|
3590
|
+
"defaultWindow": "yesterday",
|
|
3591
|
+
"defaultFormat": "markdown",
|
|
3592
|
+
"maxFollowups": 5,
|
|
3593
|
+
"calendarSource": null,
|
|
3594
|
+
"saveByDefault": false,
|
|
3595
|
+
"saveDir": null,
|
|
3596
|
+
"llmFollowups": true
|
|
3597
|
+
},
|
|
3598
|
+
"description": "Daily Context Briefing (#370). Knobs: enabled, defaultWindow ('yesterday', '3d', '1w', '24h', ...), defaultFormat (markdown|json), maxFollowups (0-10), calendarSource (path to ICS/JSON file, null = off), saveByDefault, saveDir (null = $REMNIC_HOME/briefings/), llmFollowups (disable to skip Responses API calls)."
|
|
3599
|
+
},
|
|
3600
|
+
"enrichmentEnabled": {
|
|
3601
|
+
"type": "boolean",
|
|
3602
|
+
"default": false,
|
|
3603
|
+
"description": "Enable the external enrichment pipeline (#365). When true, entities can be enriched via registered providers."
|
|
3604
|
+
},
|
|
3605
|
+
"enrichmentAutoOnCreate": {
|
|
3606
|
+
"type": "boolean",
|
|
3607
|
+
"default": false,
|
|
3608
|
+
"description": "Automatically enrich newly created entities when the enrichment pipeline is enabled."
|
|
3609
|
+
},
|
|
3610
|
+
"enrichmentMaxCandidatesPerEntity": {
|
|
3611
|
+
"type": "integer",
|
|
3612
|
+
"default": 20,
|
|
3613
|
+
"minimum": 0,
|
|
3614
|
+
"description": "Maximum enrichment candidates accepted per entity per run. Set to 0 to accept none."
|
|
2873
3615
|
}
|
|
2874
3616
|
}
|
|
2875
3617
|
},
|
|
@@ -3128,6 +3870,15 @@
|
|
|
3128
3870
|
"advanced": true,
|
|
3129
3871
|
"placeholder": "2"
|
|
3130
3872
|
},
|
|
3873
|
+
"semanticChunkingEnabled": {
|
|
3874
|
+
"label": "Semantic Chunking",
|
|
3875
|
+
"help": "Use embedding-based topic detection for more coherent chunks (requires chunking enabled)"
|
|
3876
|
+
},
|
|
3877
|
+
"semanticChunkingConfig": {
|
|
3878
|
+
"label": "Semantic Chunking Config",
|
|
3879
|
+
"advanced": true,
|
|
3880
|
+
"help": "Override defaults for semantic chunking algorithm parameters"
|
|
3881
|
+
},
|
|
3131
3882
|
"contradictionDetectionEnabled": {
|
|
3132
3883
|
"label": "Contradiction Detection",
|
|
3133
3884
|
"help": "Detect and resolve conflicting memories using LLM verification"
|
|
@@ -3146,6 +3897,15 @@
|
|
|
3146
3897
|
"label": "Auto-Resolve Contradictions",
|
|
3147
3898
|
"help": "Automatically supersede old memories when contradiction is confirmed"
|
|
3148
3899
|
},
|
|
3900
|
+
"temporalSupersessionEnabled": {
|
|
3901
|
+
"label": "Temporal Supersession",
|
|
3902
|
+
"help": "Mark older facts superseded when a newer fact writes a conflicting value for the same entityRef + structured attribute (issue #375)"
|
|
3903
|
+
},
|
|
3904
|
+
"temporalSupersessionIncludeInRecall": {
|
|
3905
|
+
"label": "Include Superseded Facts In Recall",
|
|
3906
|
+
"advanced": true,
|
|
3907
|
+
"help": "If enabled, superseded facts still surface in recall (audit/history mode)."
|
|
3908
|
+
},
|
|
3149
3909
|
"memoryLinkingEnabled": {
|
|
3150
3910
|
"label": "Memory Linking",
|
|
3151
3911
|
"help": "Build knowledge graph by linking related memories"
|
|
@@ -3567,6 +4327,20 @@
|
|
|
3567
4327
|
"label": "Fact Deduplication",
|
|
3568
4328
|
"help": "Prevent storing semantically identical facts using content hashing"
|
|
3569
4329
|
},
|
|
4330
|
+
"semanticDedupEnabled": {
|
|
4331
|
+
"label": "Semantic Dedup (write-time)",
|
|
4332
|
+
"help": "Skip near-duplicate facts at write time by comparing embeddings to existing memories (issue #373)."
|
|
4333
|
+
},
|
|
4334
|
+
"semanticDedupThreshold": {
|
|
4335
|
+
"label": "Semantic Dedup Threshold",
|
|
4336
|
+
"advanced": true,
|
|
4337
|
+
"placeholder": "0.92"
|
|
4338
|
+
},
|
|
4339
|
+
"semanticDedupCandidates": {
|
|
4340
|
+
"label": "Semantic Dedup Candidates",
|
|
4341
|
+
"advanced": true,
|
|
4342
|
+
"placeholder": "5"
|
|
4343
|
+
},
|
|
3570
4344
|
"factArchivalEnabled": {
|
|
3571
4345
|
"label": "Fact Archival",
|
|
3572
4346
|
"help": "Automatically archive old, low-importance, rarely-accessed facts during consolidation"
|
|
@@ -3765,6 +4539,12 @@
|
|
|
3765
4539
|
"label": "Entity Summaries",
|
|
3766
4540
|
"help": "Generate LLM summaries for entities during consolidation"
|
|
3767
4541
|
},
|
|
4542
|
+
"entitySynthesisMaxTokens": {
|
|
4543
|
+
"label": "Entity Synthesis Max Tokens",
|
|
4544
|
+
"advanced": true,
|
|
4545
|
+
"placeholder": "500",
|
|
4546
|
+
"help": "Max tokens used when refreshing an entity synthesis from its timeline."
|
|
4547
|
+
},
|
|
3768
4548
|
"recallBudgetChars": {
|
|
3769
4549
|
"label": "Recall Budget (Chars)",
|
|
3770
4550
|
"advanced": true,
|
|
@@ -3774,6 +4554,23 @@
|
|
|
3774
4554
|
"label": "Recall Pipeline",
|
|
3775
4555
|
"advanced": true,
|
|
3776
4556
|
"help": "Ordered section configuration for recall assembly and per-section limits"
|
|
4557
|
+
},
|
|
4558
|
+
"recallMmrEnabled": {
|
|
4559
|
+
"label": "Recall MMR (Diversity)",
|
|
4560
|
+
"advanced": true,
|
|
4561
|
+
"help": "Apply Maximal Marginal Relevance per-section so duplicate clusters cannot dominate the recall budget"
|
|
4562
|
+
},
|
|
4563
|
+
"recallMmrLambda": {
|
|
4564
|
+
"label": "MMR Lambda",
|
|
4565
|
+
"advanced": true,
|
|
4566
|
+
"placeholder": "0.7",
|
|
4567
|
+
"help": "1.0 = pure relevance, 0.0 = pure diversity. Default 0.7."
|
|
4568
|
+
},
|
|
4569
|
+
"recallMmrTopN": {
|
|
4570
|
+
"label": "MMR Top-N",
|
|
4571
|
+
"advanced": true,
|
|
4572
|
+
"placeholder": "40",
|
|
4573
|
+
"help": "Number of top candidates per section over which MMR is applied"
|
|
3777
4574
|
}
|
|
3778
4575
|
}
|
|
3779
4576
|
}
|