>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Go

Jak pobrać gigabajty historii wiadomości z chmury i zbudować lokalną wyszukiwarkę z DuckDB i SQLite

Pomyśl, ile razy próbowałeś znaleźć starą wiadomość z załącznikiem, dyskusję o błędzie w Slacku sprzed dwóch lat lub ważny pomysł z DM na Discordzie. Zazwyczaj wszystko kończy się otwarciem dziesięciu różnych kart w przeglądarce, przekopywaniem się przez niewygodne wyszukiwarki korporacyjnych komunikatorów i frustracją, że darmowa archiwa Slacka znów obcięły historię wiadomości.

Niedawno odkryłem msgvault. To aplikacja wiersza poleceń napisana w Go, która pobiera wszystkie konwersacje z kilkunastu źródeł na lokalny dysk, pakuje je do SQLite i Parquet, a na tym wszystkim udostępnia wygodny interfejs webowy, terminal TUI i serwer MCP dla sieci neuronowych.

msgvault logo

Po co pobierać historie wiadomości na własny dysk

Idea pobierania danych z usług zewnętrznych nie jest nowa. Jednak najczęściej kopie zapasowe zamieniają się w ogromne foldery z zrzutami JSON lub .eml, które zalegają na dysku twardym. Przeszukiwanie ich bez dedykowanej bazy danych to osobna udręka.

msgvault zastępuje tradycyjne podejście do pobierania archiwów. Narzędzie pobiera maile, czaty, kalendarze i transkrypcje spotkań, a następnie nakłada na nie pełnowymiarową warstwę analityki wyszukiwania. Dane pozostają u ciebie. Brak płatnych subskrypcji za przechowywanie starych wątków ani zewnętrznych procesorów chmurowych.

Oto co narzędzie może zgromadzić w jednolitej bazie danych:

  • Skrzynki Gmail (przez OAuth lub Konto Usługi) oraz dowolny standardowy serwer IMAP.
  • Kalendarz Google (wydarzenia, uczestnicy i organizatorzy są indeksowani obok maili).
  • Korporacyjne czaty Microsoft Teams i Slack, w tym reakcje, pliki i zagnieżdżone wątki.
  • Serwery Discord przez wbudowanego agenta-bota.
  • Komunikatory z Beeper Desktop (daje dostęp do iMessage, WhatsApp, Telegram, Signal i SMS).
  • Nagrania spotkań i transkrypcje z Granola i Circleback.
  • Lokalne zrzuty MBOX, archiwa Apple Mail (.emlx), pliki PST i kopie zapasowe SMS z Androida.

Jak działa archiwizacja pod maską

Architektura projektu została zaprojektowana z myślą o dużych wolumenach danych. Jeśli przez dziesięć lat nagromadziłeś pół miliona maili z obrazami i dokumentami, zwykły dysk twardy zacznie się zacinać już od samej liczby plików w jednym katalogu.

Autorzy rozwiązali to dzięki połączeniu SQLite, DuckDB i dopasowywaniu treści przez hashe.

Podstawowe wyszukiwanie tekstowe działa przez FTS5 w SQLite. Złożona analityka i filtrowanie przez ogromnym archiwum wiadomości działa na DuckDB na wierzchu kolumnowego formatu Parquet. Pozwala to na wykonywanie ciężkich zapytań agregujących w TUI w milisekundach.

Załączniki nie są przechowywane porozrzucane. msgvault deduplikuje je przez SHA-256 i pakuje do izolowanych binarnych paczek. To podejście oszczędza inode'y na Linuksie i nie spowalnia systemu plików na Windowsie ani NAS. W razie potrzeby te paczki zawsze można rozpakować z powrotem za pomocą poleceń konserwacyjnych.

Interfejs webowy, terminal i wyszukiwanie wektorowe

Po pobraniu danych możesz z nimi pracować na trzy sposoby.

Pierwsza opcja: wbudowany interfejs webowy. Demon uruchamia serwer HTTP z aplikacją, która nie potrzebuje zewnętrznych środowisk uruchomieniowych jak Node.js. Interfejs jest zoptymalizowany pod szybką nawigację klawiaturą. Jest wygodny do grupowania maili według domeny, śledzenia kontaktów i przeglądania plików.

Druga ścieżka: TUI prosto w konsoli. Wyświetla szczegółową analitykę całej historii wiadomości. Możesz filtrować konwersacje z konkretnego roku przez konkretnego odbiorcę zaledwie kilkoma naciśnięciami klawiszy.

Trzecia opcja jest dla tych, którzy chcą wyszukiwać wiadomości nie tylko po dokładnych słowach, ale po znaczeniu. msgvault może połączyć się z lokalnym serwerem embeddingów jak Ollama, LM Studio lub llama.cpp.

Po wygenerowaniu wektorów uruchamia się hybrydowe wyszukiwanie. Łączy klasyczne wyszukiwanie pełnotekstowe BM25 z wyszukiwaniem wektorowym przez Reciprocal Rank Fusion. Wpisujesz zapytanie jak „gdzie omawialiśmy zmianę architektury bazy danych

Powiązane projekty