Dynamic and Derived Data

Many fields on a fact are not typed in by the user — they are derived at runtime from the fact text, entity, config, or background jobs. This doc is an index to where each kind of derived data is defined and documented.


What is “dynamic” or “derived”?

When you store a fact (via memory_store, auto-capture, or CLI), the plugin often:

  • Assigns a category (heuristic or LLM).
  • Assigns tags (regex patterns or explicit).
  • Assigns a decay class (and thus TTL and refresh behaviour).
  • Extracts entity / key / value from the text.
  • Optionally runs classify-before-write (ADD/UPDATE/DELETE/NOOP) and supersession.

Categories can also be discovered over time from “other” facts (new category names created by the system). All of this is “dynamic” in the sense that it is computed or learned, not only read from config or user input.


Per-topic documentation

What How it’s derived Full doc
Tags Regex patterns over fact text (and optional entity). First match per tag; stored comma-separated. Optional explicit tags override. AUTO-TAGGING.md
Categories Stage 1: heuristic regex (detectCategory). Stage 2: LLM auto-classify for “other”. Stage 3: category discovery — LLM suggests topic labels; labels with ≥ N facts become new categories. FEATURES.md, AUTOMATIC-CATEGORIES.md
Decay class Heuristic (classifyDecay) from entity/key/text: permanent, durable, normal, short, ephemeral (plus legacy classes). Determines TTL and refresh-on-access. DECAY-AND-PRUNING.md
Entity / key / value Structured extraction (extractStructuredFields) from text: e.g. “X’s Y is Z”, “decided X because Y”, email/phone. FEATURES.md
Conflicting memories Classify-before-write (ADD/UPDATE/DELETE/NOOP); supersession (supersedes_id, valid_from, valid_until). CONFLICTING-MEMORIES.md
Dynamic salience Access boost (recall_count), time decay (last_accessed), Hebbian RELATED_TO links on co-recall. DYNAMIC-SALIENCE.md

Where each is used

  • Tags — Stored on the fact; used for tag-filtered search, lookup, and recall (e.g. memory_recall(tag="nibe")). See AUTO-TAGGING.md.
  • Categories — Stored on the fact; used for filtering, stats, and auto-classify. Discovered categories are persisted in .discovered-categories.json and merged with config. See AUTOMATIC-CATEGORIES.md.
  • Decay class — Stored on the fact; drives expiry and confidence decay. See DECAY-AND-PRUNING.md.
  • Entity/key/value — Stored on the fact; used for lookup (e.g. by entity or entity+key) and for decay heuristics. See FEATURES.md.
  • Supersession — Stored as supersedes_id / superseded_at / valid_from / valid_until; used to hide superseded facts in default search and to support point-in-time queries. See CONFLICTING-MEMORIES.md.
  • Dynamic salience — recall_count and last_accessed drive access boost and time decay in search/lookup scores; co-recalled facts get RELATED_TO links (Hebbian). See DYNAMIC-SALIENCE.md.


Back to top

OpenClaw Hybrid Memory — durable agent memory

This site uses Just the Docs, a documentation theme for Jekyll.