Skip to content
Hsiehting Lin edited this page Jul 19, 2026 · 6 revisions

team-plus-server Wiki

把你的 TeamPlus 訊息歷史掌握在自己手上 — 每一則訊息(含圖片、檔案)都寫進自己的雲端資料庫,隨處可查。不需要一直開著筆電。

這是什麼?

team-plus-server 是圍繞一個 TeamPlus 帳號打造的自架工具組,由兩個獨立的部分組成:

  1. 雲端封存(worker/) — 一個 always-on 的 Cloudflare Worker + Durable Object,把每一則訊息寫進你自己的 Turso(SQLite)資料庫,建立一份私有、可查詢的紀錄:誰、何時、在哪個聊天室、說了什麼 — 涵蓋 DM、群組與 bot。附件會下載存進 R2。部署後不需要任何本機程序。
  2. 從 CLI 讀與回(.claude/scripts/tui/) — Claude Code skills(dmsfetch-hx)、幾支小 Node 腳本,以及一個 curses 即時終端機客戶端(tui/),讓你直接讀歷史、擬回覆、發送訊息 — 走 TeamPlus 帶認證的 REST 端點,或透過 worker。

兩者都透過同一組帶認證的 WebSocket + REST 端點與 TeamPlus 溝通。TeamPlus 站台網址由 TEAMPLUS_BASE 設定,原始碼中不含任何特定組織的資訊。

⚠️ 注意: TeamPlus 沒有公開 API。本專案驅動的是網頁版客戶端使用的相同端點,以你自行更新的 session cookies 認證。請只用於自己的帳號,並遵守所屬組織的政策。

架構總覽

flowchart TB
    TP["TeamPlus 伺服器<br/>TEAMPLUS_BASE"]

    subgraph LOCAL["讀與回 · CLI / 本機 (scripts + .claude + tui)"]
        SKILLS["dms · fetch-hx skills"]
        TUI["tui · curses 即時客戶端"]
        SEND["send.mjs · 雲端發訊"]
        LOGS["logs.mjs · 讀取 API"]
        REFRESH["cookie 更新<br/>Patchright + OCR"]
    end

    subgraph CLOUD["雲端封存 · worker/ (Cloudflare Worker)"]
        DO["Durable Object<br/>持有 cookie + WS · 自我修復<br/>正規化 · 解析名稱 · 附件"]
    end

    TURSO[("Turso · SQLite<br/>誰 / 何時 / 何處 / 什麼")]
    R2[("R2 · 附件")]
    GHA["GitHub Actions cron<br/>每 12h 更新 cookie"]

    SKILLS <-->|"REST · session cookies"| TP
    TUI <-->|"WebSocket + REST"| TP
    DO <-->|"WebSocket + REST · session cookies"| TP
    DO --> TURSO
    DO --> R2
    SEND -->|"經 worker 發送"| DO
    LOGS -->|"GET /v1/logs"| DO
    GHA -->|"簽章上傳新 cookie"| DO
Loading

兩半各自獨立 — 可以只跑其中一個,也可以都跑。雲端封存部署後不需要任何本機程序;唯一的例行工作是重新上傳新的 cookies(TSSID 約一天過期),由 GitHub Actions cron 代勞。

已退役: 早期有一個 TeamPlus → Telegram 橋接 daemon(channel/,Bun 行程,把訊息鏡射到 Telegram bot 並代擬回覆)。它已被退役,程式碼保留在 archive/telegram-bridge/ 供參考,現行架構不依賴它。

主要功能

  • 🗄️ 雲端訊息封存 — Durable Object 持有 TeamPlus WebSocket,把每則訊息寫入 Turso
  • 🏷️ 名稱解析 — 數字 ID 透過 TeamPlus REST API 解析為真實姓名(session 內快取)
  • 🖼️ 附件封存 — 圖片與檔案下載後存入 R2;flex 卡片保留為 JSON
  • 🔗 限時檢視連結 — 帶簽章、可在瀏覽器開啟的附件網址,一週內強制過期
  • 🔑 讀取 APIGET /v1/logs 以 JSON 回傳近期訊息(預設 24h,最長 7 天),另有 logs.mjs CLI
  • ✉️ 隨處發訊./scripts/send.mjs 透過 worker 發送 TeamPlus DM/群組訊息,不需本機 daemon
  • 🤖 Claude Code skillsdms 做收件匣分流(讀、擬、發、忽略清單);fetch-hx 用名字直接跳到某人/某群的近期對話
  • 🖥️ 即時終端機客戶端make tui:瀏覽對話、看回覆即時到達、直接回覆
  • ♻️ 自我修復 — Durable Object 斷線自動重連,另有 cron keepalive 保底
  • ☁️ 不需要筆電 — cookie 更新交給 GitHub Actions cron

Wiki 頁面導覽

入門與概念

頁面 內容
[[簡介 Introduction]]
[[快速開始 Getting-Started]]
[[名詞解釋 Glossary]]

雲端封存(worker)

頁面 內容
[[雲端封存 Worker Cloud-Archive-Worker]]
[[資料模型 Data-Model]]
[[讀取 API Read-API]]

讀與回(CLI / skills / TUI)

頁面 內容
[[CLI Skills CLI-Skills]]
[[發送訊息 Sending-Messages]]
[[即時 TUI 客戶端 Live-TUI-Client]]

維運與治理

頁面 內容
[[維運指南 Maintenance]]
[[Cookie 與認證 Cookies-and-Auth]]
[[GitHub Actions 自動更新 Cookie Cookie-Refresh-with-GitHub-Actions]]
[[安全性與密鑰 Security-and-Secrets]]
[[常見問題 FAQ]]

觀點與規劃

頁面 內容
[[發展藍圖 Roadmap]]
[[計畫與技術債 Plan-and-Tech-Debt]]
[[架構觀 Head-First-Software-Architecture]]
[[架構觀・進階篇 Head-First-Software-Architecture-II]]

Clone this wiki locally