The learning that needs no configuration — salience, reinforcement
(reinforce / confirm), per-query contextual ranking, and
conflict surfacing — is always on. The keys below gate only the
generative background jobs, which are off by default.
Each background job needs three switches all on: (1) the
LLM_* keys above, (2) the job’s *_ENABLED flag here, and
(3) the matching line uncommented in
src/main/backend/CronTasks/crontab (Consolidate for the
maintenance passes, ExtractRelations for the graph). Any one left
off keeps the job a cheap no-op. Cost is bounded: each pass makes at most
its *_MAX_* small LLM calls per run, and zero when there is nothing
to do.
CONSOLIDATION_ENABLEDDefault false. Enables the consolidation/dedup pass: merge
near-identical memories into one canonical fact and supersede the copies
(recoverable soft-delete).
CONSOLIDATION_THRESHOLDDefault 0.95. Cosine cutoff for the clusters the merge pass acts
on — high, so only near-identical rows merge unattended.
CONFLICT_RESOLUTION_ENABLEDDefault false. Enables the conflict-resolution pass: among
same-topic contradictory facts, keep the current one and supersede the
stale. A separate switch from consolidation because auto-picking a
winner is higher-stakes than merging duplicates.
CONFLICT_RESOLUTION_THRESHOLDDefault 0.80. Tag-gated cosine cutoff for the conflict pass.
CONSOLIDATION_MAX_GROUPSDefault 25. Per-pass cap on clusters processed (bounds LLM cost).
GRAPH_EXTRACTION_ENABLEDDefault false. Enables the relation-extraction pass that
populates the graph query_relations traverses.
GRAPH_EXTRACTION_MAX_MEMORIESDefault 25. Memories processed per run (one LLM call each); each
memory is extracted at most once.
GRAPH_MAX_HOPSDefault 2 (hard cap 5). Default/cap for query_relations.
GRAPH_MAX_RELATIONSDefault 200. Cap on relations returned by one
query_relations call.