開源影像記憶

給 Agent 現場脈絡,不必搬走整段串流。

Sight Cache 將 RTSP 監視器歷史整理成精簡的縮圖總覽,再讓 AI Agent 透過受保護的 MCP 工具,只檢視真正需要的精確畫面。

自行部署於你的 Cloudflare 帳號

將一小時整理成六張可快速檢視的縮圖總覽。

從攝影機到脈絡

保留證據,減少逐格尋找。

Agent 先看精簡的小時總覽,再縮小到可疑的分鐘區間、比較值得細看的影格;只有在能補足證據時,才讀取原始影格。

  1. 01

    在攝影機附近擷取

    Node.js Collector 使用 FFmpeg 暫存帶有時間戳的 JPEG,再依序上傳。

  2. 02

    在邊緣儲存原始畫面

    Ingest Worker 驗證設備與影像內容,再將原始畫面寫入 R2。

  3. 03

    整理已完成的時間區間

    排程 Queue 建立每小時總覽;分鐘總覽則在五分鐘的完成等待後,於第一次查詢時建立。

  4. 04

    透過 MCP 檢視

    Image Worker 提供由 Cloudflare Access OAuth 保護、無狀態且唯讀的檢視路徑。

六項工具

從總覽一路找到精確證據。

檢視步驟保持明確:列出設備、掃過縮圖總覽、找到鄰近時間戳、比較值得細看的影格,最後只開啟重要的原始畫面。

  • list_devices找出啟用中的攝影機與時區
  • get_contact_sheet檢視一分鐘或一小時
  • list_frames找出精確拍攝時間
  • get_frame_comparison_sheet將 2–10 張影格並排比較
  • get_original_frame取得未修改的原始證據
  • create_original_frame_downloads啟用時可產生最多 20 張原始影格的下載連結
// 一張總覽,附帶每格的精確資訊
{
  "deviceName": "front-entry",
  "unit": "hour",
  "beginAt": "2026-09-13T10:00:00Z",
  "sheetNumber": 5,
  "sheetCount": 6,
  "slots": [
    {
      "slot": 3,
      "capturedAt": "2026-09-13T10:42:03Z",
      "capturedAtLocal": "2026-09-13T18:42:03+08:00",
      "deltaMs": 3000,
      "status": "captured"
    }
  ]
}

小而分工清楚的系統

每個服務只負責一件明確的事。

擷取留在攝影機附近,儲存與處理交給 Cloudflare,而檢視流程始終由你的 Access policy 保護。

攝影機端

輕量 Collector 擷取 RTSP 影格,不必持續將完整視訊串流送上雲端。

  • Node.js
  • FFmpeg
  • Docker

Cloudflare 上

三個 Worker 負責驗證、儲存、整理、排程,以及提供影像歷史。

  • Workers
  • D1
  • R2
  • Images
  • Queues
  • Cron

Agent 端

任何相容的 MCP Client 都能經由無狀態 endpoint 檢視已授權的歷史。

  • MCP
  • Managed OAuth
  • 唯讀

謹慎處理私人畫面

保護機制是管線的一部分。

Sight Cache 提供必要控制;Cloudflare 帳號、Access policy、儲存生命週期,以及每組攝影機憑證仍由你掌握。

  • 保護管理與 MCP 路由:分別設定相符的 Cloudflare Access Application。
  • 只儲存 Token 雜湊:完整 Collector Token 僅在核發時顯示一次。
  • 設定 R2 lifecycle rule:讓影像保留時間符合你的實際需求。
  • 影格下載連結預設為關閉:啟用後,連結將於 30 分鐘後過期。

讓第一台攝影機上線

從 repository 與明確的保留政策開始。

建立 Cloudflare 資源、部署三個 Worker,再於每台 RTSP 攝影機附近執行一個 Collector。文件已列出所有 binding 與環境變數。

  • Node.js 24.19+
  • FFmpeg 或 Docker
  • Cloudflare Workers Paid

Clone 專案

git clone https://github.com/catwithlover/sight-cache.git

  1. 1
    建立 D1、R2、Queues、Images,以及兩個 Access Application。
  2. 2
    設定並部署 Admin、Ingest 與 Image Worker。
  3. 3
    建立設備、保存只顯示一次的 Token,再啟動 Collector。