TgWitness / 文件說明

已測試的內容 →

參考資料 / 存檔與整合功能

Telegram · 命令列

可透過腳本和代理程式進行搜尋、讀取上下文、統計活動次數,並匯出已儲存的訊息,具備 --json 輸出格式、穩定的退出代碼,以及範圍限定的唯讀憑證。

TgWitness / 文件說明

檔案庫整合

唯讀 MCP · 全文搜尋 · 維基

預覽。 tgwitness search, context, messages, stats 以及 export 讀取 已儲存的觀察記錄,供腳本及 AI 代理程式使用。該工具無法向 Telegram 發送任何內容、變更設定或修改簽名日誌。

當 --json,標準輸出(stdout)會傳輸精確一個 JSON 文件(export 寫入 JSON Lines)。 進度、提示與錯誤訊息將輸出至 stderr。退出代碼保持不變:

程式碼 含義
0 成功,包括空結果
1 失敗:無法存取面板、資料無法讀取、匯出中斷
2 使用錯誤或無效請求:日期格式錯誤、未知選項、搜尋索引未啟用
3 目前無法使用:工作區已在運行的面板中開啟,或面板要求稍後重試(速率限制、超時)
4 存取遭拒:代幣遺失、過期或遭撤銷、聊天室超出權限範圍,或該工具不允許執行此操作

兩種閱讀方式#

透過控制面板(--url)。此指令使用與 MCP 相同的範圍限定存檔 API。請在「整合」→「MCP」中建立連線:選擇工作區與聊天室、 工具及有效期限,然後複製一次權杖。此連線為唯讀模式,僅限 於所選的聊天室,每分鐘請求次數上限為 60 次,且可隨時撤銷或 輪替。控制面板的登入權杖及 Telegram 憑證在此處無法使用。

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

遠端控制面板需使用 HTTPS;僅在以下情況下接受明文 HTTP: 127.0.0.1, localhost 和 ::1。代理伺服器環境變數將被忽略,且不接受 重定向,因此令牌僅會傳送至您指定的地址。

直接從已停止的工作區(--data-dir)讀取。以 完全本地存取權限讀取資料目錄,無需憑證。請在資料目錄的副本上使用,或於 資料收集停止時使用。簽名記錄絕不會被更改;如同控制面板,開啟 工作區可能會將其衍生的索引更新至最新狀態。當控制面板已開啟該工作區時,此指令會以 代碼 3;請改透過面板進行讀取。若未指定 --data-dir, TGWITNESS_DATA, ./data/live ,則會使用執行該指令之安裝環境的資料目錄。

--workspace ID 選取工作區(預設 default). tgwitness messages --workspaces 列出您有權限閱讀的工作區。

指令#

指令 結果
tgwitness search QUERY [--chat ID] [--since] [--until] [--any] [--limit N] [--offset N] 優先顯示最符合的結果,包含詞形變化、加引號的完整短語、網域及 @username (語法)
tgwitness search QUERY --exact [--before SEQ] 精確文字,最新內容優先,不包含索引
tgwitness context CHAT_ID MESSAGE_ID 前後各十則訊息 ID 範圍內的已儲存訊息
tgwitness messages 可供閱讀的聊天紀錄
tgwitness messages CHAT_ID [--since] [--until] [--before SEQ] 聊天室中已儲存的訊息,最新訊息排在最前
tgwitness messages CHAT_ID --message ID 每則訊息的所有儲存版本及刪除紀錄
tgwitness stats [--chat ID] [--sender ID] [--since] [--until] [--top N] 活動統計資料如下
tgwitness export [--chat ID] [--since] [--until] [--output FILE] 將觀察記錄以 JSON Lines 格式依日誌順序儲存

日期格式為 2026-10-01 (UTC 午夜)或附有時區的 ISO 時間格式, 2026-10-01T09:00+03:00。關於 search, messages 及 export ,它們代表 觀察時間。每個頁面最多可容納 50 筆記錄:請遵循 next_offset (--offset) 進行 排序搜尋,並 next_before (--before) 其他功能。

排序搜尋結果上限為 1,000 筆。最後一頁的結果數量可能少於 --limit;若存在更多符合條件的觀察結果,請縮小查詢範圍、聊天室或時間範圍。

每則訊息結果皆包含 untrusted_content: true工作區、聊天室及 訊息 ID、日誌序號、儲存紀錄的雜湊值,以及一個面板連結。編輯、 刪除通知與 missing_on_recheck 均為獨立的記錄。若某項記錄缺失 ,並不代表該事件從未發生。

活動統計#

stats 統計特定聊天室、特定發送者或範圍內所有聊天室中已儲存的觀察記錄數量:

  • 按 UTC 小時及星期幾(以星期一為起點)分類的訊息;最繁忙的小時與日子;
  • 已編輯、刪除及 missing_on_recheck 分享;
  • 發訊者及其訊息數量,以及第一則與最後一則訊息的時間;
  • 最常出現的網域以及 @handles,在所有 儲存的版本中,每則訊息僅計數一次;
  • 涵蓋範圍: coverage.gap 記錄,以及(若要存取整個工作區) 未接收到收集器心跳訊號的期間(collector_liveness).

該時間段選取自 Telegram 回報的訊息時間。小時數與星期數可 協助估算發訊者的時區;但無法據此確定時區。相關數據是根據 請求從日誌中計算得出,並不會儲存。若您的存取範圍涵蓋整個工作區,每個結果會標示其 所涵蓋的日誌起始點。透過 控制面板瀏覽五秒後,或 --timeout 本地(預設 30 秒)後,讀取即停止;此時 complete 的值為 false,且 partial 會標示出第一筆尚未讀取的記錄。在此情況下,僅會 計算最新記錄的數量。

匯出#

export 每筆儲存的觀察記錄(新訊息、快照、 編輯、復原訊息、刪除通知、 missing_on_recheck 及已儲存的媒體 記錄),並依日誌順序排列。每行皆包含與其他結果相同的欄位,並附有 完整內容。若 --output,檔案將以 .partial 名稱下寫入, 並僅在面板完成記錄後才重新命名;若匯出過程中被中斷,則不會產生 檔案,並以代碼 1. --output 絕不會覆寫現有檔案。若使用 --output 和 --json,標準輸出將顯示摘要:記錄數、最後的日誌 序列,以及(若為整個工作區存取)日誌頭。

透過控制面板進行匯出時,需具備允許「匯出訊息」 (僅限命令列)的連線;此選項預設為未勾選狀態。此檔案僅為工作副本,並非證據:若需可驗證的 移交,請使用「匯出」區段中的簽名匯出檔,該檔 python -m tgwitness.verify會進行驗證。

該面板在輸出每筆記錄(包括完成 記錄)之前,會重新檢查存取權限。若存取權限已被撤銷或過期,將導致匯出不完整。延遲頁面讀取 會與其他查詢共享存檔工作程序的限制,且設有等待時間上限。

代理技能#

.agents/skills/tgwitness-cli/SKILL.md 說明代理程式如何使用這些指令、如何引用記錄,以及如何處理 擷取的文字。讀取 .agents/skills 需從儲存庫 的檢出版本中載入該檔案。若使用 Claude Code,請複製 tgwitness-cli 資料夾複製到 .claude/skills/ 您的專案中,或 ~/.claude/skills/.

MCP 與命令列介面#

兩者均採用相同的連線方式、範圍檢查及限制。MCP 的結果限制為 一個 64 KiB 的頁面,因此 MCP 不提供批量匯出功能;其透過命令列進行串流輸出。 get_activity_stats 兩者皆可使用此功能。