Abstract concepts
Symbolic reasoning primitives
Memory that lives
Most harnesses remember with a flat log that only grows. Xihe’s memory is a graph that distils, reorganises, and forgets — so what surfaces is signal, not history.
One store, four inhabitants
Skills, genes, facts, and evolution events are usually four systems. Here they are four registers of one SQLite database — with bridges between them and a flywheel that mutates them. No embeddings, no GPU, no vector service.
$ cp substrate.db backup.db $ sqlite3 substrate.db \ "select layer, key, confidence from facts limit 5"
Most memory is an opaque vector index you take on faith. This is a table you can query in the tool you already have.
L6 → L0
Abstract concepts
Symbolic reasoning primitives
Strategic patterns
Cross-task reusable strategies
Behavioural genes
BM25-retrieved, idempotently migrated
Entity graph
Temporal knowledge graph with provenance
Structured facts
Validated, restraint-gated writes
Compressed episodes
Dream-pruned clusters
Raw logs
Ephemeral, uncurated
Lifecycle · three gates
Every fact must survive falsifiability checks before it persists. Hallucinations never become memory.
While the agent is idle, memory dedupes, compresses, and reorganises itself. Entropy reduction keeps retrieval sharp.
Recency, confidence, and relevance drive retirement. Intentional forgetting is a feature, not a leak.
You don’t curate the memory. The memory curates itself.
What may be written
Not everything an agent says deserves to be remembered. Every write passes validateFactWrite + restraint gates; only declared namespaces get through, and the gate stays shut unless a fact proves it belongs.
Hallucinations never become memory. The gate is the difference between a chat log and a knowledge base.
From tentative to trusted
A new fact enters tentative — remembered, but inert. It is promoted to confident only by corroboration: evidence seen across sessions. And only confident facts are injected back to steer behaviour.
remembered, never acts · expires ~30d
drives behaviour · re-injected each turn
Layer is one axis — how abstract. Trust is another — how earned. A fact can sit high and still be cold; only the hot, high-trust region touches behaviour.
The agent holds its opinions loosely until the evidence earns them. Circuit-breakers stop a fact flickering or stampeding into trust.
Genes
A behavioural gene is a reusable fragment of how-to. BM25 search finds the closest match to the task at hand and migrates it in idempotently — no retraining, no drift, no waste.
Reuse over recall. The best memory is the one you never have to look up twice.
Skills that learn themselves
The same store that remembers also improves itself. Runtime signals are mined into capability and written back — so the harness gets sharper every run instead of starting cold. The agent proposes; you approve. No silent self-modification.
route_hit + five producers fire from the run
an episodic miner distils confident + worked patterns
a new skill or gene is drafted
dedup · prune · shrink — the bundle never bloats
held-out gates · propose-only · you approve
↻It loops back: confident patterns become genes, genes become skills, skills feed the next run. A flywheel, not a fixed prompt.
The curated core
open any skill for its core points
no platform deps · no brand · no private keys
Domain grounding
The universal harness binds to no domain. But memory is built to take a domain pack: a set of namespaces, validators, and a grounding lexicon for your personal or professional field. Install one, and the model stops guessing where it matters — its answers carry provenance you can check.
A domain pack declares what may be remembered in your field, and what never can. The write-gate enforces it, reject-by-default.
The grounding gate watches for claims that need authority and binds them to your domain lexicon — statutory numbers, field terms, the facts that must not be hallucinated.
The domain pack carries your logic, your terms, your sources. The open substrate never absorbs them — swap fields without touching the core.
Universal core, domain on top. The model answers from your ground, not its guess.