Use when the user asks to audit, clean up, or check Mnemosyne memory for effectiveness. This is about semantic hygiene โ catching conflicting, stale, or misleading entries that reduce recall quality โ NOT about space/vacuuming.
mnemosyne-semantic-cleanup cron)mnemosyne_stats()
Note total working/episodic/canonical counts. High unconsolidated count may indicate noise.
Use mnemosyne_recall with these queries (adapt to user's actual topics):
| Cluster | Query | What to check |
|---|---|---|
| Family/People | "Jerry age sons" | Age conflicts, name spelling |
| Work role | "[client] CTO role" | Overlapping role descriptions |
| File paths | "blog draft path directory" | Path conflicts between canonical and working |
| Stale snapshots | "wiki pages count" | Point-in-time tool outputs still in working memory |
| Methodology | "consulting methodology" | Overlapping consulting prefs |
| Life domains | "Joseph domains" | Flat lists vs framework hierarchy |
For each cluster, compare:
mnemosyne_recall_canonical) โ source of truthmnemosyne_recall) โ active memoriesmnemosyne_recall) โ session snapshotsFlag:
1. Conflicts: Canonical contradicts working/episodic
2. Redundancies: Working memory duplicates canonical content
3. Stale snapshots: Point-in-time tool outputs (page counts, file lists) still in working memory
4. Misplaced entries: CTO-specific items in life-domains list, or vice versa
mnemosyne_recall(query="*", sort="newest", limit=20)
Catch any emerging conflicts not covered by the topic clusters.
Present findings as a table:
| # | Type | Memory ID | Content preview | Recommended action |
|---|---|---|---|---|
| 1 | Conflict | abc123 | "Jerry age 14" vs canonical "age 16" | Invalidate working |
| 2 | Redundancy | def456 | "Alan Weiss style" duplicates canonical | Invalidate working |
| 3 | Stale | ghi789 | "Wiki: 63 pages" (Jul 31) | Leave to decay |
mnemosyne_batch(operations=[
{"action": "invalidate", "memory_id": "<id>"}
])
mnemosyne_forget_canonical(category="<cat>", name="<name>")
mnemosyne_batch(operations=[
{"action": "remember", "content": "<text>", "importance": 0.9,
"scope": "global", "source": "preference", "veracity": "stated"}
])
mnemosyne_update(memory_id="<id>", content="<new text>")
If a canonical entry says "no need to do X" and the user later asks for X, the canonical is stale. Retire it with mnemosyne_forget_canonical.
If a master framework canonical (e.g., framework:operating-system) contains all sub-frameworks, and individual canonicals exist for each sub-framework (e.g., framework:action-opes, framework:insights-loop), retire the individual ones โ they're strict subsets.
If a working memory lists domains as a flat list (e.g., "AI/ML, Software, CTO, Faith, Health, Finance") but the canonical framework organizes them into buckets (WINS), invalidate the flat list โ it's redundant and doesn't reflect the hierarchy.
Tool outputs like "Wiki at /opt/data/wiki: 63 pages" are snapshots from a specific date. Multiple versions accumulate (63, 125, 182, 257...). Only the latest is accurate. Leave older ones to decay naturally โ they'll lose recall priority as newer ones get recalled more.
If a methodology entry is tied to a specific role (e.g., "Alan Weiss style at [client]") but applies broadly, create a standalone canonical (e.g., preference:consulting-methodology) and invalidate the role-specific working memory.
$HERMES_HOME/memories/USER.md, not from Mnemosyne canonicalsThe system prompt's "USER PROFILE" section is loaded from $HERMES_HOME/memories/USER.md (plain text, ยง-delimited). This is separate from Mnemosyne canonical entries. To fix stale info in the system prompt (like wrong ages), edit USER.md directly โ the snapshot is frozen at session load time.
For podman users: exec into the container or edit the mounted volume on the host.