Files
agent-estate-wiki/systems/mnemosyne.md
T

85 lines
4.1 KiB
Markdown

---
title: Mnemosyne
type: system
status: active
created: 2026-07-22
updated: 2026-08-02
verified_on: 2026-08-02
confidence: high
tags: [memory, mnemosyne, backend]
sources: [live-probe, mnemosyne-db, config, ops-profile-config]
---
# Mnemosyne
## Purpose
Primary agent memory store for Hermes.
## Current Configuration
- **Provider:** `mnemosyne`
- **Enabled:** true
- **Auto sleep:** true
- **Default scope:** `session`
- **Memory char limit:** 5000
- **User char limit:** 3000
- **Vector type:** int8
- **Profile isolation:** true
- **Shared surface read:** true
- **Shared surface path:** `data/shared/mnemosyne.db`
- **Skip contexts:** cron, flush, subagent, background, skill_loop
- **Reflect max calls per session:** 3
- **Sync roles:** user
- **Flush every:** 6 turns
- **Embedding model:** `BAAI/bge-small-en-v1.5` (384 dims)
- **Embeddings via API:** false (local fastembed)
## Database Stats (2026-08-02)
| Table | Rows | Notes |
|---|---|---|
| `working_memory` | 1,476 | Active memories |
| `episodic_memory` | 458 | Consolidated summaries |
| `memory_embeddings` | 158 | Only working memories — **0 episodic** |
| `memory` (legacy) | 2,181 | Old table, not migrated |
| `vec_working` | 159 | Vector index rows |
| Shared surface | 0 | Empty — cross-agent sharing not functional |
## Known Issues
### Vector embedding coverage gap
- **Only 159/1,476 working memories (10.8%)** have vector embeddings
- **0/458 episodic memories** have embeddings
- Semantic search (`mnemosyne_recall`) falls back to FTS5 keyword matching for ~90% of working and 100% of episodic memories
- This means recall quality is degraded — vector similarity can only search a tiny fraction of the memory store
- **Root cause:** The embedding pipeline (fastembed) never processed the bulk of memories. The `vec_working` table was rebuilt once (Jul 18) but only captured 159 rows.
- **Fix needed:** Backfill embeddings for all working and episodic memories. This requires running the embedding pipeline across the full dataset.
### Profile isolation chosen over shared surface
|- The ops profile was enabled with mnemosyne on 2026-08-02
|- **Decision:** `profile_isolation: true` was set on ops, giving each profile its own independent memory bank — zero cross-contamination
|- `data/shared/mnemosyne.db` exists with 0 rows; cross-profile sharing is intentionally unused
|- This means Tusk (ops) and Rhino (default) do not share memories, which is the desired behaviour
|- Config in `~/.hermes/profiles/ops/config.yaml`: `memory.mnemosyne.profile_isolation: true`, `allow_tool_override: false`, `shared_surface_read: false`
|- Verified end-to-end on 2026-08-02: memory writes land correctly in both profiles independently
### Legacy table not migrated
- 2,181 rows in the old `memory` table are not in the new `working_memory`/`episodic_memory` system
- These are only accessible via the legacy `memory` tool, not via `mnemosyne_recall`
## Known Management Jobs
- Mnemosyne Auto-Consolidate every 30m — script: `consolidate_mnemosyne.sh`, mode: no-agent
- Mnemosyne DB Backup weekly Sunday 03:00 — script: `mnemosyne-backup.sh`, mode: no-agent
- Mnemosyne Health Monitor every 12h — skill: `mnemosyne-operations`, reports only on exception
- Mnemosyne Watchdog every 15m — script: `mnemosyne-watchdog.py`, mode: no-agent
## History and Evidence
- **2026-08-01 incident:** Automatic conversational capture was broken by stringified structured YAML, especially `sync_roles: "['user']"`. Fixed by rewriting with native YAML types. See [[incidents/2026-08-01-mnemosyne-capture-failure]].
- **2026-08-01 cleanup:** Legacy always-injected memory reduced from 8,013 bytes to 4,998 bytes (memory) and 2,958 bytes (user).
- **2026-07-29 incident:** `memory.mnemosyne.tools: None` caused schema loading warnings. Fixed by removing the line. See [[incidents/2026-07-29-mnemosyne-relay]].
- **2026-07-29 relay scope corruption:** `RuntimeError: scope handle is not at the top of the stack` — 3 occurrences, self-resolved.
## Related
- [[concepts/agent-memory]]
- [[comparisons/memory-backends]]
- [[incidents/2026-08-01-mnemosyne-capture-failure]]
- [[incidents/2026-07-29-mnemosyne-relay]]