Emil Shanaty 7501b429f0 feat: online-learning router persistence + auto-training via mome_store(query)
- MemoryRouter: save/load SGDClassifier state to disk (pickle + JSON)
- Router saves after every update(), loads on engine init
- MomeEngine.store_fact() accepts optional 'query' param → calls learn()
- extract_and_store() passes user query → trains router automatically
- mome_store tool schema: added optional 'query' parameter
- Router state persists across agent restarts in <store_dir>/_router/
- (router trained) indicator in mome_store response
2026-05-27 00:24:54 +03:00

MoME — Mixture of Memory Experts for Hermes Agent

Sparse-gated personal memory with an online-learning router. Replaces monolithic memory context with expert-routed retrieval — only relevant memory experts are activated per query.

Features

  • 4 Experts: identity, knowledge, projects, preferences
  • Sparse Activation: Only 12 experts are queried per turn (determined by the router)
  • Online Learning: SGD classifier router learns which expert to route to based on usage patterns
  • Local-Only: 100% offline, no API keys needed
  • Auto-Learning: Regex-based fact extraction from user queries
  • Persistent: JSON-based storage, survives restarts

Installation

# 1. Clone the plugin into Hermes plugins directory
git clone https://github.com/emil28092005/hermes-plugin-mome.git \
    ~/.hermes/hermes-agent/plugins/memory/mome

# 2. Install dependencies
pip install numpy scikit-learn

# 3. Activate via Hermes memory setup
hermes memory setup

Select mome from the list of available memory providers.

Usage

Once activated, MoME provides three tools:

Search memory across experts. The router automatically selects which experts to query.

mome_search(query="what projects am I working on?", top_k=3)
mome_search(query="Python skills", expert="knowledge", top_k=5)

mome_store

Store a fact directly into a specific expert.

mome_store(expert="identity", fact="I prefer dark mode")

mome_status

Show expert sizes and router training state.

mome_status()

Architecture

User Query
    │
    ▼
┌─────────────┐
│   Router    │ ← SGDClassifier (online learning)
│  (predict)  │
└──────┬──────┘
       │ top-2 experts selected
       ▼
┌──────┴──────┐
│   Experts   │
│  identity   │ ─── cosine similarity search
│  knowledge  │
│  projects   │
│ preferences │
└──────┬──────┘
       │ relevant memories
       ▼
┌─────────────┐
│   Context   │ → injected into system prompt
└─────────────┘

Fact Extraction (Auto-Learning)

On each turn, MoME automatically extracts facts from user queries via regex:

  • меня зовут X → identity
  • я живу в X → identity
  • работаю над X → projects
  • у меня проект X → projects
  • знаю/использую X → knowledge
  • нравится X → preferences

The router learns over time which experts to activate for which types of queries.

Dependencies

  • Python ≥ 3.10
  • numpy — vector operations
  • scikit-learn — SGD router classifier

Zero external API dependencies. Works fully offline.

Development

# Test the engine standalone
python -c "from plugins.memory.mome.engine import MomeEngine; e = MomeEngine('/tmp/test_mome'); e.store_fact('identity', 'Test fact'); print(e.query('test'))"

Author

Emil Shanatygithub.com/emil28092005

License

MIT

S
Description
No description provided
Readme
162 KiB
Languages
Python 100%