Nox-Lumen MfgNox-Lumen Mfg

Memory system

Why Memory matters

Session context is short-lived, but users need to:

  • Keep cross-session facts (customer preferences, past decisions)
  • Attach domain knowledge bases (patent corpora, automotive standards, policies)
  • Let Agents retrieve relevant background on demand

Memory tiers

TierLifecycleTypical content
Session memoryCurrent sessionDialogue history, working variables
User memoryCross-session, per userPreferences, terminology
Tenant memoryCross-user, per orgPolicies, glossaries, templates
Knowledge baseExternalDomain docs, references, historical outputs

Retrieval

The system supports:

  • Semantic search — vector similarity
  • Keyword search — exact match
  • Structured queries — metadata (time, author, tags)

With the Graft skill, Agents can search and reference outputs across Sessions when the user authorizes it.

From KB to LTM

KB (Knowledge Base) and LTM (Long-Term Memory) serve different roles:

KBLTM
GranularityCoarse (whole doc / one Bug record)Fine (single fact / preference)
StorageOriginal text + vector indexStructured facts + provenance metadata
PurposePrecise RAG on raw contentRetrieve processed patterns and insights
Write pathUser import or system artifactsConversation or scheduled processors

They are not substitutes but layers — KB is raw material; LTM is patterns distilled from that material.

Two memory flows

LTM facts arrive through two parallel streams:

Rendering diagram…

Flow 1 (live): per-turn, fine-grained answers “how should the Agent talk to me”; carried by memory-sdk.

Flow 2 (KB batch): periodic batch, aggregated answers “what patterns emerged for this project / org”; carried by processor-class Skills.

Processor pattern (generic template)

Any Skill that turns structured KB rows into LTM facts follows the same shape:

StageContent
TriggerPlatform LTM cron (default ~6h), not real-time
IncrementalOnly rows without ltm_extracted_at
AggregationMulti-dimensional rollups (typically 2–4 dims)
confidenceBaseline + count weighting + severity cap at 0.95
Provenancesource_*_ids list source records
Update vs insertCompare source_*_ids
False-positive rollbackWhen source rows are invalidated, next cron recomputes
Capacity guardPer-run cap + max fact length + max provenance ids

Implemented processors

ProcessorInput (KB)Output (LTM)Consumer
bug-importHistorical Bug recordsfour-dimensional bug_pattern factsL2 code-review

Future processors (requirement-change, review comments, incident reports, …) can follow the same pattern—new processors are Skills; use skill-architect modeled on bug-import.

Why processing is scheduled

ReasonExplanation
Patterns need volumeSingle rows don’t show a pattern; need ≥N rows
Cost controlLLM + aggregation cost batches in cron windows, not blocking chat
Avoid half-baked factsReal-time processing on first row yields “one-piece evidence” noise
Match business rhythmBugs / requirement batches are naturally periodic

On this page