marm_distill
Extract durable facts from raw conversation transcripts, checking each against stored memories to flag new, duplicate, or near-match candidates for review before any write.
Instructions
Propose durable memories from raw conversation, resolved against the store.
Pass a transcript as `text` and this returns the sentences in it that read
like durable facts, each already checked against what is stored: `new`
(nothing close), `duplicate` (already recorded), or `near` (close to
something stored -- worth your judgement, because an encoder cannot tell
"refines it" from "contradicts it").
With `use_llm=True`, once the operator has enabled local generation, it
composes a self-contained fact, and every generated proposal cites a
VERBATIM span from the transcript, checked against the source before it is
offered.
By default, and whenever no model is enabled and reachable, it SELECTS
sentences: a fact spread over three turns, or implied but never said
plainly, will not be proposed.
By default NOTHING IS WRITTEN BY `propose`. Proposals are staged for
review, and only `apply` writes one -- the same contract as
marm_compaction, for the same reason: a similarity score is not evidence
enough to change memory unattended. The one exception is
review_mode="guardrails" with auto-apply switched on, where `propose`
also applies each proposal that passes every deterministic check.
Parameters:
- action: propose | review | apply | discard (default propose)
- text: the conversation to distil (required for propose)
- session_name: session the proposals belong to (required for propose;
optional filter for review)
- proposal_id: which proposal to act on (required for apply/discard)
- project: scope name recorded on the memory that `apply` writes
- context_type: memory context type for the write (default general)
- threshold: shape-score floor, default 0.20. Excludes chatter and little
else; measured against the live store, a higher floor discards real
memories long before it meaningfully reduces the count
- limit: most proposals to return (default 20). THIS is the volume control
- include_duplicates: also stage what the store already holds (default off,
because a queue of known facts does not get read)
- use_llm: write facts with the local model (default off; needs the
operator to have enabled generation, and falls back to selection)
- review_mode: "manual" (default) stages everything for review;
"guardrails" also applies a proposal that passes every deterministic
check, only when the operator has switched auto-apply on
Returns: status plus `proposals` (propose) or `pending` (review), each
carrying content, score, the reasons it scored, verdict, cosine, and the
neighbouring memory when there is one.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| limit | No | ||
| action | No | propose | |
| project | No | ||
| use_llm | No | ||
| threshold | No | ||
| proposal_id | No | ||
| review_mode | No | ||
| context_type | No | general | |
| session_name | No | ||
| include_duplicates | No |