TgWitness / Dokumentacja

Co zostało przetestowane →

Odniesienie / Archiwum i integracje

Telegram · Wiersz poleceń

Wyszukiwanie, odczytywanie kontekstu, zliczanie aktywności oraz eksportowanie zapisanych wiadomości ze skryptów i agentów, z wyjściem w formacie --json, stabilnymi kodami zakończenia oraz tokenami o ograniczonym zakresie dostępu, przeznaczonymi wyłącznie do odczytu.

TgWitness / Dokumentacja

Integracje z archiwami

MCP tylko do odczytu · Wyszukiwanie pełnotekstowe · Wiki

Podgląd. tgwitness search, context, messages, stats oraz export odczytuj zapisane obserwacje dla skryptów i agentów AI. Nie mogą one wysyłać niczego do Telegramu, zmieniać ustawień ani modyfikować podpisanego dziennika.

Przy --json, stdout przekazuje dokładnie jeden dokument JSON (export zapisuje wiersze JSON). Postęp, podpowiedzi i błędy są kierowane do stderr. Kody wyjścia są stałe:

Kod Znaczenie
0 Pomyślny wynik, w tym wynik pusty
1 Błąd: niedostępny panel, nieczytelne dane, przerwany eksport
2 Błąd użytkowania lub nieprawidłowe żądanie: nieprawidłowa data, nieznana opcja, indeks wyszukiwania wyłączony
3 Obecnie niedostępne: obszar roboczy jest otwarty w uruchomionym panelu lub panel prosi o ponowną próbę później (limit częstotliwości, przekroczenie limitu czasu)
4 Odmowa dostępu: brakujący, wygasły lub unieważniony token, czat poza zakresem działania narzędzia, narzędzie, które tego nie zezwala

Dwa sposoby czytania#

Za pośrednictwem panelu (--url). Polecenie wykorzystuje ten sam API archiwum o ograniczonym zakresie, co MCP. Utwórz połączenie w sekcji Integracje → MCP: wybierz obszary robocze i czaty, narzędzia oraz okres ważności, a następnie skopiuj token jednorazowo. Połączenie ma charakter wyłącznie do odczytu, jest ograniczone do wybranych czatów, ma limit 60 żądań na minutę i może zostać cofnięte lub odnowione w dowolnym momencie. Tokeny logowania do panelu oraz dane uwierzytelniające do Telegrama nie działają w tym przypadku.

export TGWITNESS_URL=https://panel.example.org      # default http://127.0.0.1:8787
export TGWITNESS_MCP_TOKEN=tgw_mcp_...              # or --token-file path
tgwitness search 'перевод карта' --json

Panel zdalny wymaga protokołu HTTPS; zwykły protokół HTTP jest akceptowany wyłącznie w przypadku 127.0.0.1, localhost oraz ::1. Zmienne środowiskowe proxy są ignorowane, a przekierowania są odrzucane, dzięki czemu token dociera wyłącznie pod podany przez Ciebie adres.

Bezpośrednio z zatrzymanego obszaru roboczego (--data-dir). Odczytuje katalog danych z pełnym dostępem lokalnym, bez tokenu. Należy używać tej opcji na kopii katalogu danych lub gdy gromadzenie danych jest zatrzymane. Podpisane rekordy nigdy nie są modyfikowane; podobnie jak w przypadku panelu, otwarcie obszaru roboczego może spowodować aktualizację indeksów pochodnych. Gdy panel ma otwarty obszar roboczy, polecenie kończy działanie z kodem 3; należy zamiast tego odczytywać dane za pośrednictwem panelu. W przypadku braku --data-dir, TGWITNESS_DATA, ./data/live lub wykorzystywany jest katalog danych instalacji, w której uruchomiono polecenie.

--workspace ID wybiera obszar roboczy (domyślnie default). tgwitness messages --workspaces wyświetla listę tych, do których masz dostęp.

Polecenia#

Polecenie Wynik
tgwitness search QUERY [--chat ID] [--since] [--until] [--any] [--limit N] [--offset N] Najlepsze wyniki na początku, uwzględniając formy słów, dokładne frazy w cudzysłowie, domeny oraz @username (składnia)
tgwitness search QUERY --exact [--before SEQ] Dokładny tekst, najnowsze wpisy na początku, bez indeksu
tgwitness context CHAT_ID MESSAGE_ID Zapisane wiadomości w zakresie dziesięciu identyfikatorów wiadomości po obu stronach
tgwitness messages Czat, który można przeczytać
tgwitness messages CHAT_ID [--since] [--until] [--before SEQ] Zapisane wiadomości z czatu, najnowsze na początku
tgwitness messages CHAT_ID --message ID Każda zapisana wersja i zapis usunięcia jednej wiadomości
tgwitness stats [--chat ID] [--sender ID] [--since] [--until] [--top N] Statystyki aktywności poniżej
tgwitness export [--chat ID] [--since] [--until] [--output FILE] Zapisane obserwacje w formacie JSON Lines w kolejności zgodnej z dziennikiem

Daty podaje się jako 2026-10-01 (północ czasu UTC) lub w formacie ISO z podaniem strefy czasowej 2026-10-01T09:00+03:00. W przypadku search, messages i export wybierają czas obserwacji. Strony mieszczą do 50 rekordów: postępuj zgodnie z next_offset (--offset) w celu wyszukiwania według rankingu oraz next_before (--before) w innych miejscach.

Wyszukiwanie rankingowe zatrzymuje się na 1,000 wynikach. Ostatnia strona może być krótsza niż --limit; zawęź zapytanie, czat lub okres, jeśli istnieje więcej pasujących obserwacji.

Każdy wynik wiadomości zawiera untrusted_content: true, identyfikatory obszaru roboczego, czatu i wiadomości, numer sekwencyjny w dzienniku, skrót zapisanego rekordu oraz link do panelu. Edycje, powiadomienia o usunięciu oraz missing_on_recheck stanowią oddzielne zapisy. Brak zapisu nie dowodzi, że zdarzenie nigdy nie miało miejsca.

Statystyki aktywności#

stats zlicza zapisane obserwacje dla jednej rozmowy, jednego nadawcy lub wszystkich rozmów objętych zakresem:

  • wiadomości według godziny UTC i dnia tygodnia (z poniedziałkiem na początku), godziny i dni o największym natężeniu ruchu;
  • edytowane, usunięte i missing_on_recheck udostępnienia;
  • nadawców wraz z liczbą wiadomości oraz czasem wysłania pierwszej i ostatniej wiadomości;
  • najczęściej występujące domeny oraz @handles, zliczane raz na wiadomość we wszystkich jej zapisanych wersjach;
  • zakres: coverage.gap zapisy oraz, w celu uzyskania dostępu do całego obszaru roboczego, okresy bez sygnału kontrolnego z podłączonego kolektora (collector_liveness).

Okres określa czas wiadomości zgłoszony przez Telegram. Liczba godzin i dni tygodnia może pomóc w oszacowaniu strefy czasowej nadawcy; nie pozwala jednak jej jednoznacznie ustalić. Dane liczbowe są obliczane na żądanie na podstawie dziennika i nie są przechowywane. Każdy wynik wskazuje nagłówek dziennika, który obejmuje, gdy dostęp obejmuje cały obszar roboczy. Odczyt zatrzymuje się po upływie pięciu sekund od przejścia przez panel lub --timeout sekund lokalnie (domyślnie 30); wówczas complete ma wartość false, a partial wskazuje pierwszy rekord, który nie został odczytany. W takim przypadku liczone są tylko najnowsze rekordy.

Eksportuj#

export tworzy jeden obiekt JSON na każdą zapisaną obserwację (nowe wiadomości, zrzuty ekranu, edycje, odzyskane wiadomości, powiadomienia o usunięciu, missing_on_recheck oraz zapisanych plików multimedialnych ) w kolejności z dziennika. Każdy wiersz zawiera te same pola co pozostałe wyniki, wraz z pełnym tekstem. W przypadku --output, plik jest zapisywany pod .partial nazwą i jest przemianowywany dopiero po zapisaniu zakończenia działania panelu; przerwany eksport nie pozostawia żadnego pliku i kończy działanie z kodem 1. --output nigdy nie nadpisuje istniejącego pliku. Przy użyciu opcji --output i --json, stdout zawiera podsumowanie: liczbę rekordów, ostatnią sekwencję dziennika oraz, w przypadku dostępu do całego obszaru roboczego, nagłówek dziennika.

Eksport za pośrednictwem panelu wymaga połączenia umożliwiającego eksport wiadomości (tylko z wiersza poleceń); opcja ta nie jest domyślnie zaznaczona. Niniejszy plik stanowi kopię roboczą, a nie dowód: w celu weryfikowalnego przekazania danych należy skorzystać z podpisanego eksportu w sekcji „Eksporty”, który python -m tgwitness.verifysprawdza poprawność.

Panel ponownie sprawdza uprawnienia dostępu przed wysłaniem każdego rekordu, w tym rekordu zakończenia. Cofnięte lub wygasłe uprawnienia powodują niekompletny eksport. Odroczone odczyty stron dzielą limit procesów archiwizujących z innymi zapytaniami i mają ograniczony czas oczekiwania.

Umiejętności agenta#

.agents/skills/tgwitness-cli/SKILL.md informuje agenta, jak korzystać z tych poleceń, jak cytować zapisy oraz jak postępować z przechwyconym tekstem. Agenci, którzy .agents/skills pobierają go z repozytorium po wygenerowaniu kopii roboczej. W przypadku Claude Code należy skopiować tgwitness-cli folder do .claude/skills/ w swoim projekcie lub ~/.claude/skills/.

MCP i wiersz poleceń#

Oba korzystają z tych samych połączeń, kontroli zakresu i ograniczeń. Wyniki MCP są ograniczone do jednej strony o rozmiarze 64 KiB, więc MCP nie oferuje eksportu zbiorczego; wiersz poleceń przesyła dane strumieniowo. get_activity_stats jest dostępna dla obu.