跳轉到

運作原理

流程一圖概覽

公開新聞來源(RSS、Yahoo Finance……)
        │ 每 20 分鐘共用爬取一次(Celery Beat)
┌─────────────────────────────────────────────────────────┐
│  Per-user fanout(每使用者扇出)                          │
│                                                          │
│   對每位活躍使用者:                                     │
│     1. 用該使用者自選股的別名過濾原始項目                │
│        (本地關鍵字比對,成本低)。                      │
│     2. 合成引擎針對每篇通過的項目                        │
│        並行跑 5 個智慧代理。                             │
│     3. Aggregate + Reflexion 產出 top signal。          │
│     4. 寫入 Signal 列(Postgres,RLS 範圍內)。         │
│     5. Embed 到使用者的 ChromaDB 集合。*(規劃中——      │
│        截至 2026-04-22,`embedding_worker` 仍是 stub;   │
│        Claw chat 目前只透過 BM25 檢索。)*              │
│     6. Publish 到 Redis 頻道 signals:<user_id>。         │
│     7. 把 FLASH + ALERT 推送到 Telegram(若已綁定)。    │
│     8. 把 FLASH + ALERT 推送到 Web Push(若已訂閱)。    │
└─────────────────────────────────────────────────────────┘
您的儀表板(透過 WebSocket 即時更新)、您的手機、您的桌機。

核心概念

共用爬取、每使用者合成

公開新聞爬取在全域做一次——否則十個人同時關注 NVDA,就得打 Yahoo 十次。但 LLM 密集的合成步驟是每 (user, news-item) pair 跑一次,所以評分和 ticker 影響反映的是自選股的情境,而不是一體適用的單一分數。

五個專職智慧代理,而不是一個

我們不用一個大 prompt 問「這則新聞重不重要、為什麼」,而是並行跑五個更小、更聚焦的智慧代理——每個有自己的通道(ticker 事實、總經情境、產業動態、散戶情緒、法規)。它們的輸出以加權平均彙整成最終訊號。詳見 智慧代理

低信心草稿跑 Reflexion

當彙整分數落在邊界,引擎會跑一次 reflexion:第二次 LLM 呼叫會批判並改寫草稿。您可以在每條訊號的 Agent breakdown 面板看到它觸發的頻率。

資料庫層的列級安全

每張使用者資料表(signalswatchlistsuser_settingsrag_query_logs……)都有一條 PostgreSQL RLS 策略:user_id = current_setting('app.current_user')。FastAPI session 以 Postgres authenticated 角色執行——不是超級使用者——所以 RLS 實際強制執行。跨使用者資料外洩由 Postgres 本身擋下,而不是靠應用層程式碼。

下一步

  • 智慧代理 —— 五個智慧代理各自做什麼
  • 評分機制 —— 緊急程度分層、impact / confidence、以及 link type
  • Claw chat(RAG) —— 自由提問如何從您自己的訊號得到答案