Mnemosyne dla agenta Hermesa: szybki start z lokalną pamięcią

Lokalna pamięć Hermesa z kontrolowanym zapisem.

Page content

Mnemosyne to lokalny dostawca pamięci dla Hermes Agent, przechowujący pamięć roboczą, strukturę faktów, dane czasowe oraz historię epizodyczną w lokalnym pliku SQLite — bez usługi hostowanej, bez obowiązkowych połączeń z siecią i z niezwykle szczegółową kontrolą nad zapisem.

Jego najbardziej przydatną właściwością nie jest surowa jakość odtwarzania. To stopień kontroli, jaką udostępnia nad ścieżką zapisu: automatyczne zapisywanie rozmów może być ograniczone do konkretnej roli lub całkowicie wyłączone, logowanie wyników narzędzi jest domyślnie wyłączone, jawne operacje zapamiętania i zapomnienia pozostają dostępne niezależnie od innych ustawień, a nowsze wydania dodają opcjonalne tłumienie samoodwzorowań (self-echo) wokół granic kompresji kontekstu. To połączenie czyni go rozsądnym wyborem, gdy chcesz trwałej pamięci, nie zamieniając automatycznie każdej rozmowy w trwałą wiedzę.

Ta dyscyplina ścieżki zapisu ma znaczenie, ponieważ pamięć agentów ma dobrze udokumentowany tryb awarii: wniosek samych agentów może zostać przechwycony, odzyskany później tak, jakby był obserwacją, i użyty do uzasadnienia jeszcze mocniejszej wersji samego siebie. Pętle samonakręcającej się pamięci w agentach AI omawia ten tryb awarii szczegółowo; ten przewodnik koncentruje się na konkretnych konfiguracjach Mnemosyne, które ograniczają go w praktyce. Aby dowiedzieć się, gdzie Mnemosyne plasuje się w stosunku do innych backendów pamięci Hermes, zobacz Porównanie dostawców pamięci agenta.

Przezroczysta lokalna skrzynka bazy danych połączona przez świetlisty zamek i filtr z małym, przyjaznym modułem agenta

Mnemosyne w minutę

Typowy dostawca pamięci wykonuje jakąś wersję przechwytywania, ekstrakcji, przechowywania, odzyskiwania, a następnie wstrzyknięcia do przyszłego promptu. Mnemosyne dodaje kilka odrębnych warstw wokół tej podstawowej pętli: pamięć roboczą, semantyczne i leksykalne odtwarzanie, strukturę faktów, informacje czasowe, linki encji, pamięć epizodyczną, konsolidację, kanoniczne fakty oraz weryfikację pamięci. Przechowywanie odbywa się w lokalnym pliku SQLite z FTS5 i opcjonalnym wyszukiwaniem wektorowym, co czyni go znacznie bardziej inspekcyjnym niż produkt pamięci oparty wyłącznie na chmurze i bardziej możliwości niż zwykły plik MEMORY.md.

Bardzo zwięźle, w stosunku do reszty ekosystemu dostawców Hermes: Holographic jest prostszy i celowo zorientowany na magazyn faktów; Hindsight kładzie nacisk na hybrydowe wyszukiwanie, grafy wiedzy i refleksję; Honcho kładzie nacisk na modelowanie kolegów i użytkowników z rozumowaniem dialektycznym; Mem0 kładzie nacisk na automatyczną ekstrakcję faktów opartą na LLM; a Mnemosyne łączy lokalne przechowywanie SQLite, hybrydowe odtwarzanie, konsolidację, strukturę faktów i niezwykle szczegółowe kontrole retencji. Pełne rozbicie, w tym wymagania infrastrukturalne i notatki dotyczące self-hostingu dla każdego dostawcy, znajduje się w Porównaniu dostawców pamięci agenta.

Aktualne wersje

Na wrzesień 2026 roku stabilne wydanie na PyPI to mnemosyne-memory 3.15.1, z gałęzią 4.0 dostępną jako przedpremiera. W przypadku produkcyjnej instalacji Hermes rozpocznij od wersji stabilnej, chyba że konkretnie potrzebujesz poprawki lub funkcji z wersji 4.0 i jesteś gotów przetestować migrację bazy danych oraz zmianę zachowania. Sprawdź zainstalowaną wersję za pomocą:

hermes mnemosyne version

Instalacja Mnemosyne w Hermes

Najpierw aktywuj własne środowisko wirtualne Hermes, jeśli korzystałeś ze standardowej lokalnej instalacji:

source ~/.hermes/hermes-agent/venv/bin/activate

Aby uzyskać wsparcie dla lokalnego osadzania (embedding), zainstaluj pakiet rdzeniowy z dodatkowym pakietem embeddings oraz opakowaniem wtyczki Hermes:

python -m pip install \
  "mnemosyne-memory[embeddings]" \
  mnemosyne-hermes

Następnie zarejestruj wtyczkę:

mnemosyne-hermes install

Jeśli zastępujesz istniejącą rejestrację wtyczki:

mnemosyne-hermes install --force

Aktywuj dostawcę i restartuj bramę:

hermes config set memory.provider mnemosyne
hermes gateway restart

Zweryfikuj za pomocą:

hermes memory status

Oczekiwany wynik wygląda podobnie do:

Provider: mnemosyne

Plugin: installed
Status: available

Instalacje Docker i serwerów trwałych

Jeśli Hermes działa wewnątrz trwałego wdrożenia Docker lub opartego na obrazie, zainstaluj go w bocznym środowisku wirtualnym na zamontowanym domu Hermes, a nie w odtwarzalnym środowisku Python kontenera, aby wtyczka przetrwała ponowne budowanie obrazu:

export HERMES_HOME=/opt/data
VENV="$HERMES_HOME/.mnemosyne/venv"
python3 -m venv "$VENV"
"$VENV/bin/python" -m pip install --upgrade "mnemosyne-memory[embeddings]" mnemosyne-hermes
"$VENV/bin/mnemosyne-hermes" install --mode wrapper --python "$VENV/bin/python"
hermes config set memory.provider mnemosyne

Boczne środowisko wirtualne musi używać tej samej wersji głównej/minorowej Pythona co działająca bramka Hermes — nie wskazuj na niezwiązane python3 z PATH. Następnie restartuj właściwy kontener lub usługę i zweryfikuj za pomocą "$VENV/bin/mnemosyne-hermes" status obok hermes memory status.

Nie wyłączaj całego zestawu narzędzi pamięci Hermes

Rozdziel dwa pojęcia: wbudowana pamięć samego Hermes (MEMORY.md / USER.md, w pełni omówiona w Systemie pamięci Agent Hermes) i zewnętrzny dostawca (Mnemosyne). Nie uruchamiaj przypadkowo hermes tools disable memory podczas konfigurowania zewnętrznego dostawcy — w zależności od wersji Hermes, ta komenda może również ukryć narzędzia zewnętrznych dostawców pamięci. Zamiast tego użyj konfiguracji dostawcy, jak pokazano poniżej.

Podstawowy status i inspekcja

hermes memory status
hermes mnemosyne stats
hermes mnemosyne stats --global
hermes mnemosyne inspect "query"

Wyeksportuj przenośną kopię zapasową:

hermes mnemosyne export \
  --output ~/mnemosyne-backup.json

Podstawowa baza danych normalnie znajduje się pod ~/.hermes/mnemosyne/data/mnemosyne.db. Ponieważ jest to SQLite, inspekcja i tworzenie kopii zapasowych są proste za pomocą standardowych narzędzi. Dla reszty komend bramki, sesji i diagnostyki odwołanych w tym przewodniku, ściągawka CLI Agent Hermes jest szybszym odniesieniem niż grzebanie w wyjściu --help.

Domyślna polityka retencji zasługuje na uwagę

Pierwszą kontrolą, którą warto zrozumieć, jest sync_roles. Domyślne ustawienia Mnemosyne są już bardziej konserwatywne niż w wczesnych wydaniach — automatyczna synchronizacja Hermes domyślnie obejmuje tury użytkownika, a nie zarówno tury użytkownika, jak i asystenta — ale dla ścisłej retencji tylko jawnej, całkowite wyłączenie automatycznego zapisu tur jest warte dodatkowego kroku. Edytuj ~/.hermes/config.yaml:

memory:
  provider: mnemosyne

  mnemosyne:
    sync_roles: []

Pusta lista oznacza, że zwykłe tury rozmowy nie są automatycznie zapisywane przez sync_turn(). Jawne operacje mnemosyne_remember nadal działają niezależnie od tego — zwykła rozmowa przestaje automatycznie spływać do pamięci, podczas gdy jawne „zapamiętaj to” nadal dociera do Mnemosyne.

Wyłącz automatyczne logowanie wyników narzędzi

Mnemosyne może również logować wykonania narzędzi jako pamięć. Dla konserwatywnego ustawienia pozostaw to wyłączone w ~/.hermes/.env:

MNEMOSYNE_LOG_TOOLS=0

To już jest domyślne, ale jawne ustawienie dokumentuje politykę zamiast polegać na założeniach dotyczących domyślnych wartości. Restartuj Hermes po tym:

hermes gateway restart

W połączeniu sync_roles: [] i MNEMOSYNE_LOG_TOOLS=0, obie główne automatyczne ścieżki zapisu — automatyczny zapis rozmów i automatyczny zapis wyników narzędzi — są wyłączone.

Zachowaj automatyczne odtwarzanie

Wyłączenie automatycznych zapisów nie wymaga wyłączenia odtwarzania. Przydatna polityka utrzymuje automatyczną retencję wyłączoną, podczas gdy automatyczne odtwarzanie, jawne zapamiętanie i jawne zapomnienie pozostają włączone — pamięć powinna być łatwa do odczytu i trudna do zapisu, co jest bliskie odwrotności domyślnej „złap wszystko i posortuj później”.

Dodaj trwałą instrukcję agenta

Konfiguracja dostawcy blokuje automatyczne przechwytywanie na poziomie dostawcy, ale model może nadal zdecydować się na wywołanie jawnego narzędzia zapisu z własnej inicjatywy. Dodaj jawną politykę do SOUL.md:

## Polityka pamięci długoterminowej

Mnemosyne jest dostawcą pamięci długoterminowej.

Nie zapisuj niczego do Mnemosyne, chyba że użytkownik jawnie prosi Cię o
zapamiętanie, zapisanie, zachowanie lub przechowanie tej informacji.

Jeśli informacja wydaje się przydatna dla przyszłych sesji, ale użytkownik
nie poprosił o to jawnie, zapytaj o zgodę przed wywołaniem
mnemosyne_remember lub innego narzędzia zapisu Mnemosyne.

Nie twórz trwałych pamięci z własnego rozumowania, założeń,
podsumowań, interpretacji, wniosków lub wywnioskowanych preferencji.

Nie twórz trwałych pamięci z wyjścia narzędzi, chyba że użytkownik jawnie
poprosi o zapamiętanie tego wyniku.

Przy przechowywaniu zatwierdzonej pamięci zachowaj to, co użytkownik
faktycznie stwierdził. Nie ulepszaj go wywnioskowanym kontekstem
lub wnioskami.

Odczyt i odtwarzanie pamięci Mnemosyne jest dozwolone bez proszenia
o zgodę.

Restartuj bramę i rozpocznij nową sesję po tym:

hermes gateway restart
/new

To jest polityka egzekwowana przez model, a nie twarda granica uprawnień — uzupełnia ona konfigurację na poziomie dostawcy powyżej, zamiast ją zastępować.

Co z memory.write_approval?

Hermes obsługuje memory.write_approval: true dla zapisów do wbudowanych MEMORY.md / USER.md, a Mnemosyne implementuje własne, specyficzne dla dostawcy stadium dla jawnych zapisów w nowszych wydaniach. Jest to obiecujące, ale jest tu zastrzeżenie architektoniczne warte poważnego traktowania: Hermes nie udostępnia jeszcze jednolitej, neutralnej dla dostawcy umowy zatwierdzania dla wszystkich zewnętrznych dostawców pamięci, a implementacja oczekujących/zastosowanych Mnemosyne jest specyficzna dla dostawcy, a nie stanowi części wspólnego standardu. Nie zakładaj, że zatwierdzanie działa poprawnie tylko dlatego, że klucz konfiguracyjny jest obecny — przetestuj go na swoich dokładnych wersjach Hermes i Mnemosyne. Dopóki niezależne od dostawcy zatwierdzanie się nie rozwinie, połączenie sync_roles: [], MNEMOSYNE_LOG_TOOLS=0 i jawnopisowej polityki SOUL.md powyżej daje Ci wiarygodną bazę, a ścieżka zatwierdzania powinna być testowana oddzielnie, jeśli zamierzasz na niej polegać.

Włącz tłumienie samoodwzorowań (self-echo)

Aktualne Mnemosyne oferuje również opcjonalne tłumienie samoodwzorowań:

MNEMOSYNE_SELF_ECHO_ENABLED=1

Umieść to w ~/.hermes/.env, a następnie restartuj:

hermes gateway restart

Tłumienie samoodwzorowań jest skierowane konkretnie na granice kompresji kontekstu — jego celem jest zmniejszenie przypadków, w których pamięć, którą dostawca właśnie stworzył, jest natychmiastowo podawana z powrotem agentowi tak, jakby był to niezależny kontekst. Jest to celowo na zasadzie „najlepszej staranności” i nie zastępuje filtrowania zapisu: kontrole zapisu zatrzymują wątpliwe pamięci przed wejściem w pierwszym miejscu, podczas gdy kontrole samoodwzorowań zatrzymują świeży output dostawcy przed odbiciem się z powrotem. Oba mają znaczenie i żaden nie zastępuje drugiego.

Konserwatywna konfiguracja Mnemosyne

Łącząc elementy, początkowa konfiguracja dla self-hostowanego agenta inżynieryjnego wygląda tak. W ~/.hermes/config.yaml:

memory:
  provider: mnemosyne

  mnemosyne:
    sync_roles: []

W ~/.hermes/.env:

MNEMOSYNE_LOG_TOOLS=0
MNEMOSYNE_SELF_ECHO_ENABLED=1

I w SOUL.md, co najmniej:

Przechowuj pamięć długoterminową tylko wtedy, gdy użytkownik jawnie o to
poprosi.
Nie promuj wniosków wygenerowanych przez model lub wyników narzędzi do
trwałej pamięci bez jawnej zgody.
flowchart LR U[User conversation] -.->|blocked| M[(Mnemosyne)] T[Tool results] -.->|blocked| M R["Explicit: remember this"] -->|mnemosyne_remember| M Q[Future question] -->|recall| M

Przetestuj, że zwykła rozmowa nie jest retencjonowana

Najpierw sprawdź bazową liczbę:

hermes mnemosyne stats

Rozpocznij nową sesję Hermes i powiedz zwykłe stwierdzenie faktów bez proszenia agenta o zapamiętanie, na przykład:

PurpleOtter uses port 48123.

Następnie wyszukaj je:

hermes mnemosyne inspect "PurpleOtter"

Oczekiwane: Results for 'PurpleOtter': 0. Sprawdź ponownie hermes mnemosyne stats — liczba pamięci roboczej nie powinna wzrosnąć z powodu tej zwykłej tury.

Przetestuj jawną pamięć

Teraz powiedz ten sam rodzaj stwierdzenia, ale jawnie poproś o retencję:

Remember that BlueKoala uses port 17321.

Zainspektuj go, a następnie rozpocznij nową sesję i poproś o niego:

hermes mnemosyne inspect "BlueKoala"
/new
What port does BlueKoala use?

Hermes powinien poprawnie odzyskać wartość — ta para testów izoluje politykę ścieżki zapisu (nic nie wchodzi bez pytania) od mechanizmu odzyskiwania (to, co wchodzi, wraca wiarygodnie).

Przetestuj logowanie narzędzi

Z ustawionym MNEMOSYNE_LOG_TOOLS=0, poproś Hermes o uruchomienie charakterystycznej, unikalnej komendy:

Use the terminal tool to run:
echo tool-canary-834729

Następnie wyszukaj ciąg canary:

hermes mnemosyne inspect "tool-canary-834729"

Oczekiwane: 0 results. To znacznie silniejszy test niż samo zaufanie, że zmienna środowiskowa jest respektowana wszędzie.

Inspekcja bazy danych

Ponieważ przechowywanie jest w SQLite, wewnętrzna struktura schematu jest bezpośrednio inspekcyjna:

sqlite3 ~/.hermes/mnemosyne/data/mnemosyne.db '.tables'

W zależności od wersji, możesz zobaczyć tabele takie jak working_memory, episodic_memory, facts, consolidated_facts, gists, graph_edges, memoria_facts oraz memory_embeddings. Ma to znaczenie przy testowaniu usuwania — system pamięci może pomyślnie usunąć wiersz pamięci roboczej, zostawiając za sobą wyprowadzony fakt, gist lub obiekt grafu. Mnemosyne miało prawdziwe bugi w tej dziedzinie dotyczące osieroconych rekordów wyprowadzonych, a nowsze wydania zaostrzyły zarówno usuwanie, jak i diagnostykę w odpowiedni sposób. Wolno preferować obsługiwane przez dostawcę ścieżki usuwania i doctor/repair przed ręcznym usuwaniem wierszy SQLite, chyba że w pełni rozumiesz aktualny schemat.

Usuwanie pamięci roboczej zakresu sesji

Jedna niuans: pamięci robocze Mnemosyne mogą mieć zakres sesji, więc wiersz z scope = session może nie być widoczny dla samodzielnego usuwania działającego w sesji default. Przy debugowaniu zainspektuj zakres bezpośrednio:

SELECT id, session_id, scope, content
FROM working_memory;

Dostawca lub API potrzebuje prawidłowego zakresu sesji, aby mutować rekordy lokalne sesji — kolejny powód, aby preferować obsługiwane narzędzia administracyjne przed edycjami surowego SQL.

Konsolidacja: nie spiesząc się z sleep()

Mnemosyne może konsolidować pamięć roboczą na reprezentacje o dłuższym żywocie, co jest przydatne, ale jest operacją mutującą. Przed włączeniem agresywnej automatycznej konsolidacji, zainspektuj, co jest faktycznie przechwytywane, zweryfikuj, że zwykłe tury nie wchodzą do pamięci nieoczekiwanie, zweryfikuj usuwanie od początku do końca i utwórz kopię zapasową bazy danych. Następnie eksperymentuj z:

hermes mnemosyne sleep

Ostatnie zmiany w Mnemosyne uczyniły obsługę konfliktów bardziej konserwatywną — sama podobieństwo semantyczne nie dowodzi już, że jedna pamięć powinna unieważnić drugą, co jest dokładnie kierunkiem, w którym system pamięci agenta o trwałym charakterze powinien iść, jak omówiono w Pętlach samonakręcającej się pamięci w agentach AI.

Kopia zapasowa przed aktualizacjami

Utwórz przenośny eksport przed każdą znaczącą zmianą:

hermes mnemosyne export \
  --output ~/mnemosyne-backup.json

Dla ważnych instalacji skopiuj też lokalną bazę danych lub katalog danych przed dużymi aktualizacjami. Mnemosyne 4.x to obecnie linia przedpremierowa, więc aktualizacja głównej wersji zasługuje na większą ostrożność niż rutynowa aktualizacja łatki.

Ostateczna rekomendowana konfiguracja

Dla długo działającej instalacji Hermes, gdzie dokładność pamięci jest ważniejsza niż zapamiętywanie wszystkiego, trwałą konfiguracją jest: lokalne przechowywanie Mnemosyne włączone, automatyczne odtwarzanie włączone, automatyczny zapis rozmów wyłączony, automatyczny zapis wiadomości asystenta wyłączony, logowanie wyników narzędzi wyłączone, jawne zapamiętanie i zapomnienie włączone, tłumienie samoodwzorowań włączone, wyszukiwanie sesji włączone, a przeglądanie ludzkie dla wrażliwych zapisów pożądane, gdy ścieżka zatwierdzania zostanie przetestowana. To sprawia, że Mnemosyne działa głównie jako zredagowany magazyn pamięci długoterminowej, a nie archiwum transkryptu — celem nie jest sprawienie, aby Hermes zapamiętywał wszystko, co kiedykolwiek powiedział, ale sprawienie, aby zapamiętywał te rzeczy, które nadal będą prawdziwe, gdy rozpocznie się następna sesja. Jeśli działasz z kilkoma profilami z różnymi dostawcami lub politykami retencji, Konfiguracja produkcyjna Agent Hermes omawia łączenie na poziomie profilu, aby zachować ich spójność.

Subskrybuj

Otrzymuj nowe wpisy o systemach, infrastrukturze i inżynierii AI.