On this page
On this page
Plugin guides
Knowledge as memory provider
What Knowledge does when it owns plugins.slots.memory. Part of the
Knowledge plugin guide.
Ownership and activation
Knowledge declares kind: "memory". Select it with
plugins.slots.memory: "knowledge"; see
Enable Knowledge. An unselected memory
plugin is disabled by the slot gate, so Knowledge has no companion mode beside
another memory provider.
Knowledge registers its native tools, read-only UI, and memory provider runtime
together. They share one storage runtime per store and one serialized operation
lane. Selecting Knowledge does not migrate or delete memory-core data.
Switching back leaves the vault intact.
Every provider call resolves the requested agent's effective store through the
same resolver as the native tools. An owner-private audience maps to the
store's private partition; a conversation audience maps to that session's
partition, or to the private partition when an owner granted the conversation
read access (conversation access).
Missing, foreign, and sandboxed callers are denied.
Shared memory reads
The provider exposes the host's shared search and read contract over Knowledge records:
- Search uses current, eligible, scope-filtered records with keyword BM25, not
embeddings. Scores are query-local and
minScoreis enforced. The provider declares only thememorysource, so requests forsessionsare rejected before they reach Knowledge. It does not filter by project during search. - Search hits include title, assertion origin, and attribution. Reads add up to 20 retained-evidence locators. The shared API is a projection; use the native tools for full evidence, metadata, and relationships.
- Reads return active eligible pages, claims, and relationships. Historical, withdrawn, invalid, and fixture records stay with the native exact and history tools. Reads use 1-based lines over the rendered title, attribution, and body: 100 lines by default, at most 200 per request.
- References carry the provider, record ID, revision, content hash, and store identity. They grant no access. A changed revision rejects the read; a reference or cursor from another store is rejected.
- Search cursors bind the query, filters, scope, store, and index snapshot. A changed snapshot rejects the continuation. Failed indexing is an error, never an empty success.
- Health reports scoped vault and ontology validation. Host status handles opened
with
purpose: "status"(doctor, CLI status) receive readiness only: no record counts, scope, IDs, or paths.
The capability declares knowledge_grep, knowledge_lookup, and
knowledge_record as recall tools. Active Memory
uses them for deep recall and passes the parent turn's audience to the child
run.
Memory prompt
The selected-provider prompt describes Knowledge as the user's world knowledge: entities (people, companies, projects, repositories, concepts and anything else the active ontology can represent) and what is known about them. It asks the agent to:
- search once for each entity a task names, not just the first, or earlier work it refers to, before planning, and follow the knowledge-recall skill for deeper questions;
- save decisions, preferences, corrections, commitments, project-state changes,
and explicit remember requests with
knowledge_rememberbefore the final reply, without being prompted, worded no more broadly than the supporting excerpt, in one call with a freshrequestIdand the claims initems; - keep a page for work that spans turns or that the user will return to, and
for each person, organization or project the user treats as significant:
reuse the page recall found or create it right away through
knowledge-entities, keep its
current state accurate through knowledge-capture, and record the agent's own
findings there as analysis rather than in
knowledge_remember, which never stores agent inference; - record replacements and contradictions with knowledge-correct instead of parallel claims;
- route documents, transcripts and entity work to the bundled skills when those skills and their tools are available;
- cite saved records with links to the Knowledge page in the Control UI.
When writes are disabled or the save tools are missing, the prompt omits save guidance. The prompt excludes secrets and treats retrieved content as evidence, not instructions.
When the host supplies a repository project key, the prompt names it as the
alias of the repository's project page and asks the agent to pass it as the
knowledge_remember subject for claims about that repository. Knowledge never
applies the key as a default subject; the agent chooses. The key reaches only the
prompt, not tool calls.
Remembering is best effort. Saving a preference neither configures the assistant nor guarantees that the preference loads in future turns.
Knowledge index
Owner-private sessions, and conversations an owner granted read access, also
receive a short, generated ## Knowledge Index at
the end of the system prompt, so the agent knows what its vault holds without
searching first. Knowledge adds it through before_prompt_build
appendSystemContext; no setting controls it.
- It lists labels only: page type, title and one exact alias that
knowledge_lookupresolves. It also lists recent claims (last 14 days) that are not filed under any page, ranked decisions, commitments and preferences first. Claims filed under a page appear as that page's new-claim count. The three busiest pages also list their three newest decisions and commitments beneath them, each claim shown once. Bodies, evidence,sourceandartifactpages and relationships are never listed. - Pages come in two groups: recently active (the page, or a claim or relationship about it, recorded in the last 14 days) and most connected. A footer counts unlisted pages by type. The whole index is at most 4,000 characters. When every page fits, the remaining space lists more unfiled claims.
- Labels are one line and clipped. A title that reads like an instruction or contains markup is shown as its record ID only. The index says its entries are stored labels, not instructions.
- The index selects records recorded at or before the session's first retained message, so it stays byte-identical across turns and refreshes after a new session or compaction. Records saved during the session appear after the next refresh.
- Ungranted conversation audiences, sandboxed sessions, sessions without host memory authority and agents without a provisioned store get no index. Granting or revoking read access changes the index on the conversation's next turn. Read failures omit the index and never block the turn.
The index is not owner-approved recall. It injects only labels and clipped claim headlines, never page bodies or evidence.
Automatic recall
Automatic prompt injection uses only summaries the owner approved with
knowledge_recall, plus whatever an operator-configured recall gate
injects in live mode. Keyword search is never a trusted source for injected
context.
knowledge_recallsets or clears arecallblock on one exact active record:summary(1–500 characters, required), up to 20triggers,importance(1–10), and up to 20 hostprojectskeys.- It requires writes enabled and a current owner-private audience, or a conversation audience with a read-and-save owner grant. Other conversation audiences, operators, and the browser cannot approve recall.
- Claims with
assertion_originofsourceoragent_inferencecannot be approved, because external or inferred text is not owner-approved context. - The service writes
approved_by: owner-privateandapproved_at, including for approvals made under an owner grant; callers cannot set them. - Corrections do not inherit approval. Approve the replacement again.
Candidates are available only to an owner-private audience or a conversation an owner granted read access: trigger candidates need at least one trigger, project candidates at least one project key. They sort by descending importance, then record ID. The default limit is 48 and the maximum is 200. Each candidate excerpt is exactly the approved summary; record bodies and ingested text never enter it. An ungranted conversation audience receives no candidates.
Recall gate
The recall gate asks the owning agent's Decision model,
per user turn, which stored pages the message needs. It is off unless
recallGate is configured, and it starts in shadow mode. The gate uses the
shared Decision runtime: the agent's decisionModel picks the provider and
model, and that provider plugin owns credentials, endpoints, and limits. An
agent without an effective decisionModel skips the gate.
The recommended Decision model for the gate is a reranker:
Alibaba-NLP/gte-reranker-modernbert-base, served behind a /rerank endpoint
and selected through the bundled Rerank provider. The
defaults below are the configuration measured with that model. See
Use an existing reranker.
The recallGate block is the gate's explicit opt-in; it is separate from the
Labs Decision assistance switch, which governs core consumers.
| Key | Default | Meaning |
|---|---|---|
mode |
"shadow" |
off, shadow (log only), or live (inject into the user turn) |
candidates |
"keyword" |
keyword shortlists pages by keyword search; model has the Decision model pick from labels |
maxCandidates |
10 |
Most pages scored per turn (1–10) |
highThreshold |
0.75 |
Per-page relevance at or above which page text is injected |
excerpts |
4 |
keyword: most passages quoted per page (1–10) |
excerptChars |
1000 |
keyword: characters per passage (100–4000) |
pageChars |
2800 |
Characters of page text injected per page (200–6000) |
mediumThreshold |
off | When set, pages at or above it (and below highThreshold) get a one-line pointer |
skipHintBelow |
off | When set, a turn with nothing injected and every score below it gets a skip-search hint |
timeoutMs |
1500 |
Whole-gate budget per turn (100–10000), shared by every Decision request |
maxIndexChars |
24000 |
model: characters of label index sent to the Decision model |
Each user turn in a session that reads the private partition (the same sessions that get the standing index):
- Candidates. Knowledge considers every current page except
sourceandartifactpages, under the same label rules as the standing index: titles that read like instructions or contain markup are skipped.keyword(default): BM25 keyword search over each page's title and body, with a boost for title matches, keeps the topmaxCandidatespages that share at least one word (any script) with the message. For each page it quotes the best-matching passages (blank-line separated): at mostexcerptspassages ofexcerptCharscharacters,pageCharsper page. A longer passage is clipped to the window around its matching words. Pages that share no word with the message are never sent to the Decision model.model: the page label index (type, title, one exact alias, most connected first, up tomaxIndexChars) is offered to the Decision model. When more thanmaxCandidatesentries fit, onechoicequestion per 254 entries, each with aNone of theseoption, ranks a shortlist of the topmaxCandidatesentries.
- Score. One Decision request asks an independent
booleanquestion per candidate: would this page help answer the message? Inkeywordmode the question carries the page title and its excerpt and the state is the bare user message, the (query, document) pair rerankers are trained on. ItsprobabilityTrueis that page's relevance, so two pages that are both needed can both clear the threshold. - In
livemode, pages at or abovehighThresholdare prepended to the user turn: the excerpt inkeywordmode, the start of the page inmodelmode, at mostpageCharseach. The whole block, header included, is at most 6,000 characters. Nothing else is added by default.
What the agent sees in live mode:
-
Pages matched:
text -
Nothing matched: nothing is added, and the agent searches memory on its own judgment as usual.
-
mediumThresholdset: pages between it andhighThresholdadd- Knowledge has a page on <title>; use knowledge_lookup "<name>" if it helps. -
skipHintBelowset: when nothing was injected and every page scored below it, one line is added:Knowledge recall: no stored page matched this message; search memory only if it needs one.This hint discourages a memory search, so a wrong cutoff can make the agent miss a memory. It stays off unless set; tune the cutoff inshadowmode for your model and data before using it.
Details:
- A provider that answers
truewithout a probability never gets page text injected: it gets the pointer whenmediumThresholdis set, otherwise nothing, and it never triggers the skip hint. - The turn's memory authority is rechecked before each Decision request and again before the injection is published.
- An unavailable provider (no Decision model, overload, deadline, provider error), a timeout, or any other failure injects nothing, logs the outcome, and the turn continues.
- Each turn logs one
knowledge recall gate:info line with the mode, outcome (injected,skip-hint,shadow,none,unavailable, orerror), latency, the number of pages offered and shortlisted, and each decision's record ID, score, and tier, or the unavailable stage and reason. Logs never contain message or record text. - The gate runs only on user-triggered turns with a known agent. Ungranted conversation audiences, sandboxed sessions, and agents without a provisioned store are skipped without a Decision request.
- The conversation's Knowledge access is re-checked at every Decision request, provider dispatch and retry. Revoking it mid-turn stops anything more from being sent and injects nothing.
The Decision provider receives the user message and, in keyword mode, page
titles and excerpts (page labels in model mode). Select a provider you trust
with both, such as a local reranker, System One, or ONNX model.
Use an existing reranker
The gate's questions are relevance questions, so any reranker works as its
Decision model through the bundled Rerank provider: point
models.providers.rerank at a vLLM, TEI, Infinity, Cohere, Jina, or
Voyage /rerank endpoint and select rerank/<model id>.
The recommended model is
Alibaba-NLP/gte-reranker-modernbert-base
(Apache-2.0, about 150M parameters, runs locally on CPU or a small GPU). The
defaults (keyword top 10, highThreshold 0.75, 4 × 1,000-character excerpts
capped at 2,800 per page, no pointer tier) are the configuration measured with
it on a recall benchmark.
Serve it safely:
- Pin the revision, for example
f7481e6055501a30fb19d090657df9ec1f79ab2c(the current release as of this writing). - Load
model.safetensors(or the repository's ONNX files) only. The repository ships no Python code and no pickle weights. - Leave
trust_remote_codeoff. ModernBERT is built intotransformers4.48 and later, so the model needs no remote code; a server or copy that asks for it is a red flag. - Use current serving libraries; with
sentence-transformers, use 5.6.0 or later, which fixes local-path loading of extra model code.
Reranker scores are relevance, not calibrated probabilities, and each model
scores on its own scale. With any other model, run the gate in shadow mode,
read the logged scores, and retune highThreshold before going live.
Pre-compaction memory flush
Knowledge owns the pre-compaction flush when writesEnabled is true. With
writes disabled the provider returns no flush plan, which also prevents a
memory-core file flush.
- Persistence tools are
knowledge_rememberfor discrete claims andknowledge_save_pagefor notes.knowledge_grep,knowledge_lookup,knowledge_record, andknowledge_ontologyare read-only helpers. Only a successful save counts as persistence. - The flush saves durable decisions, preferences, corrections, commitments, project-state changes, and facts about people or projects, with the supporting excerpt quoted. It excludes secrets and treats transcript content as data.
- The source turn's audience is delegated to the flush, so owner-private turns write to the private partition and conversation turns to their own partition, or as their owner grant directs; a read-only grant's flush saves nothing. The flush grants no additional authority.
- During a flush,
knowledge_save_pageandknowledge_remembermay omitrequestId. Knowledge derives a stable ID from the host flush ID and the page title or claim texts, so an identical retry returns the original receipt.
The flush never runs for CLI-backend sessions such as claude-cli/*, or for
backends that compact natively. For those sessions, the prompt's "before your
final reply" save is the only capture point.
What Knowledge does not replace
Workspace bootstrap files, reset hooks, dreaming, standing intents, memory-core
tools and CLI, and the file-oriented Memory UI are not provided by Knowledge.
The Knowledge page and the knowledge_* tools are its inspection and
change surfaces.