Trwała pamięć dla agentów AI z Qwen i MCP

Większość asystentów AI resetuje się co sesję. To wystarcza przy jednorazowych pytaniach. Psuje się to, gdy chcesz współpracownika, który pamięta, jak pracujesz, co ustaliliście w zeszłym tygodniu i co wymaga follow-upu.

W John CEO pamięć nie jest dodatkiem. Każdy klient ma prywatną przestrzeń roboczą, w której kontekst powinien przetrwać restarty, a nie znikać po zamknięciu okna czatu. Ta wizja produktu skierowała nas na hackathon Qwen Cloud (Track 1: MemoryAgent): szansa, żeby sprawdzić, jak semantyczna pamięć może działać jako standardowe narzędzia agenta.

Poniżej opisujemy samodzielny eksperyment edukacyjny, a nie ogłoszenie produktu. Kod jest w osobnym repozytorium na licencji MIT (qwen-memory-mcp). John CEO nie używa tego dziś. W produkcji pamięć zostaje na indywidualnie odseparowanej przestrzeni roboczej każdego klienta, a nie na wspólnym serwisie zewnętrznym. Budowaliśmy to, żeby się uczyć, testować pomysły i podzielić się wnioskami.

Czego chcieliśmy się dowiedzieć

Szukaliśmy pamięci, która jest:

  • Trwała - przetrwa restarty i redeploy
  • Semantyczna - znajduje powiązane fakty, nie tylko słowa kluczowe
  • Odseparowana - per użytkownik, bez mieszania danych
  • Prosta w integracji - standardowe narzędzia MCP, bez własnego SDK

Regulamin hackathonu wymagał infrastruktury Alibaba Cloud i inteligencji Qwen. Naszą odpowiedzią był prosty serwer MCP: zapis wspomnień w zarządzanej bazie SQL, embeddingi przez Qwen i cztery narzędzia wywoływane przez HTTP.

Architektura

Architektura Qwen Memory MCP

Klient agenta woła publiczny endpoint HTTPS na Alibaba Function Compute. Serwis pamięci zapisuje wiersze w zarządzanej bazie SQL i woła Qwen Cloud (DashScope) po embeddingi i ranking. Projekt jest celowo prosty: standardowe MCP przez HTTP, baza SQL z tyłu i Qwen po stronie semantyki.

Eksperyment działa w ap-southeast-1 (Singapur), międzynarodowym regionie Alibaba Cloud. Endpoint Qwen API, compute i baza danych są w tym samym regionie, poza Chinami kontynentalnymi. Dla europejskiego zespołu budującego dla użytkowników globalnych ten wybór był świadomy: pasuje do międzynarodowego endpointu DashScope i do tego, jak myślimy o transgranicznym obiegu danych. To nie certyfikacja zgodności - to praktyczny wybór dla eksperymentu skierowanego na rynek międzynarodowy.

Cztery narzędzia MCP

Narzędzie Cel
memory_write Zapis nowego wspomnienia użytkownika
memory_search Wyszukiwanie semantyczne po pamięci
memory_recall_context Pakowanie najlepszych wspomnień w budżet tokenów
memory_forget Usunięcie wszystkich wspomnień użytkownika (prywatność / reset)

Cztery narzędzia wygrywają z rozbudowanym API. Agentom wystarczą zapis, wyszukiwanie, pakowanie kontekstu i zapomnienie - nie dwadzieścia wariantów CRUD o nakładających się znaczeniach.

Pamięć scentralizowana vs pamięć na przestrzeni roboczej

Porównaliśmy ten scentralizowany eksperyment MCP z pamięcią lokalną na przestrzeni roboczej, którą dostarczamy klientom John CEO. Oba podejścia celują w ten sam efekt - współpracownika, który pamięta - ale kształt systemu zmienia kompromisy.

  1. Model izolacji. Wspólny serwis pamięci z id per użytkownik szybko się demo-uje i łatwo podłącza przez MCP. Trzymanie pamięci na indywidualnie odseparowanej przestrzeni klienta mocniej chroni granice danych.

  2. Gdzie liczą się embeddingi. Embeddingi z chmury upraszczają start, ale dodają opóźnienie, koszt i pytania o transgraniczny przepływ danych. Retrieval na przestrzeni roboczej nie wysyła surowego tekstu do strony trzeciej.

  3. Recall świadomy odbiorców. Prawdziwi współpracownicy działają na kanałach i w wątkach, nie tylko pod jednym id użytkownika. Pamięć namespacowana wyłącznie po użytkowniku jest prostsza, ale pomija kontekst ważny w pracy zespołowej.

  4. Ranking przenosi się między modelami. Połączenie podobieństwa, salience, recency i reinforcement poprawiło recall w obu kształtach. Algorytm okazał się ważniejszy niż marka storage.

  5. Maintenance nie jest opcjonalny. Przebiegi forget i decay zapobiegają nieskończonemu wzrostowi pamięci. Oba projekty potrzebują jawnego cyklu życia.

  6. Powierzchnia narzędzi. Cztery jawne narzędzia MCP uczyniły integrację z agentem przewidywalną. Ukryta pamięć plikowa jest elastyczna, ale trudniejsza dla agentów.

Co nas zaskoczyło

  1. Cold start ma znaczenie. Pierwsze wywołanie MCP po bezczynności na serverless compute może trwać 10-20 sekund. Ta latencja jest częścią UX, nie przypisem.

  2. MCP przez HTTP to nie zwykły JSON. Odpowiedzi mogą przyjść jako Server-Sent Events. Nasze pierwsze skrypty smoke zakładały, że wystarczy curl | jq. Nie wystarczyło. Dodaliśmy mały parser Node, żeby weryfikacja obsłużyła oba formaty.

  3. Wyszukiwanie semantyczne zmienia odczucie produktu. Wyszukiwanie słów kluczowych zawodzi na pytaniu "jak lubię szkice do klientów?", gdy zapis brzmi "trzymać maile na zewnątrz w max trzech krótkich akapitach." Embeddingi łączą te znaczenia.

  4. Budżet tokenów jest tak samo ważny jak retrieval. memory_recall_context nie był dodatkiem. Prawdziwe agenty szybko uderzają w limity kontekstu. Pakowanie najlepszych wspomnień w budżet bije wrzucenie dziesięciu trafień wyszukiwania do promptu.

  5. Mały surface area wygrywa. Krótka lista narzędzi pomaga integracji z agentem i operatorom. Cztery narzędzia mieszczą się w pamięci roboczej.

Jak John mógłby to wykorzystać (hipotetycznie)

Wewnętrznie naszkicowaliśmy wzorzec podobny do połączeń aplikacji: przy starcie przestrzeni roboczej przekazać agentowi scoped URL MCP i token Bearer. Klucz Qwen API i dane SQL zostają tylko na Alibaba Cloud - nigdy na prywatnej przestrzeni klienta. Wspomnienia każdego użytkownika namespacują się po id klienta na wspólnym serwerze pamięci.

Ten blueprint jest udokumentowany, ale nie wdrożony i nie ma go w roadmapie. Produkcyjna pamięć Johna zostaje na indywidualnie odseparowanej przestrzeni każdego klienta. Eksperyment pomógł nam ustalić, czego chcemy algorytmicznie (ranking, pakowanie tokenów, scoped recall), bez zobowiązania do Qwen ani MCP w live produkcie.

Open source

Projekt jest na licencji MIT na GitHubie: qwen-memory-mcp

Sklonuj repozytorium i postępuj według README - lokalne uruchomienie, testy integracyjne i notatki deployu.

Zweryfikuj samodzielnie

git clone https://github.com/John-CEO-HQ/qwen-memory-mcp
cd qwen-memory-mcp
npm install
cp .env.integration.example .env.integration
# Skonfiguruj env według .env.integration.example
npm run verify:deployed

Na końcu powinno być All checks passed. Test obejmuje health, listę narzędzi, write, search, recall i forget względem endpointu skonfigurowanego w dokumentacji repozytorium.