plur_learn
Record a reusable knowledge assertion—a learning, preference, or correction—with tags, scope, and commitment level for your AI agent's long-term memory.
Instructions
Create an engram — record a reusable learning, preference, or correction. Multi-agent note: in an orchestration that spawns subagents, have the PARENT session own plur_learn writes — spawned subagents should return their findings as text for the parent to persist, rather than each calling plur_learn (tool availability is not guaranteed in every subagent context). See plur-ai/plur#281.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Searchable keyword tags — contribute to BM25/embedding recall, so concrete keywords pay off | |
| type | No | Category of the engram | |
| scope | No | Namespace, e.g. global, project:myapp | |
| domain | No | Domain tag, e.g. software.deployment | |
| pinned | No | Always-load flag. If true, this engram bypasses the keyword-relevance gate at injection time. Use sparingly: meta-rules, safety conventions, core operating principles only. | |
| source | No | Origin of this knowledge (URL, conversation ref, etc.) | |
| rationale | No | Why this knowledge matters — also enters the search corpus, helps recall by intent not just statement | |
| statement | Yes | The knowledge assertion to store | |
| commitment | No | How firmly the user has committed to this belief (default: leaning) | |
| supersedes | No | Engram IDs this statement intentionally replaces (#240). Writes relations.supersedes on the new engram and the reverse superseded_by edge on each local target. Supersedes-linked pairs are skipped by tension scans — an intentional update is not a contradiction. Use when updating a standing fact (new version, changed rule) rather than contradicting it. | |
| valid_from | No | ISO date (YYYY-MM-DD) the knowledge becomes valid — inject/recall skip the engram before this date (#347) | |
| valid_until | No | ISO date (YYYY-MM-DD) the knowledge expires — inject/recall skip the engram after this date. Set this for any time-bound fact (offers, deadlines, temporary endpoints). When omitted, an explicit expiry phrase in the statement ("valid until 31 May 2026") is auto-parsed and echoed back (#347) | |
| locked_reason | No | Why this engram is locked (only meaningful when commitment=locked) |