封測中・歡迎回報問題

讓 PTT 的溫柔, 在現代桌面 重新綻放

uPtt 把批踢踢的站內信變成聊天對話:水球、線上狀態、引用回覆,一個視窗全部到齊。直連 ptt.cc,沒有中繼伺服器,資料只存在你的電腦。

免費下載
  • macOS ・ Windows ・ Python 3.12+
  • GPL-3.0 開源
  • SignPath 程式碼簽章
往下捲動
01 運作方式

uPtt 如何把站內信變成對話

站內信,一封一封都長得一樣

在 PTT 的信箱裡,每則來自 uPtt 的訊息都只是一行標題。要讀,得一封一封點開;要回,得重新寫一封信。

uPtt 在背景,替你讀懂每一封

每 5 秒輪詢一次信箱,辨識 uPtt 格式、還原內嵌的 [uPtt-ts] 時間戳,再從 PTT 刪除已收下的訊息,信箱永遠乾淨。

然後,它們變成一段真正的對話

依發送者歸入各自的對話、依時間排序,未讀數字亮在聯絡人旁。一般站內信不會被刪,原封不動留在 PTT。

02 訊息類型

三種訊息,一個介面

PTT 上的訊息來源各不相同。uPtt 辨識每一種,用最適合的方式呈現,也用最安全的方式處理。

在 PTT 信箱裡raw
作者 catmayor
標題 你收到使用 uPtt 傳送的訊息
時間 Sun Oct  4 21:00:12 2026
────────────────────────────────────────
[re:@you|我裝了 uPtt,站內信直接變聊天室]
真的假的,介面長怎樣?
====================
[uPtt-ts:2026-10-04T21:00:09+08:00]
uPtt 解析 ・ 存入 SQLite ・ 從 PTT 刪除
@you 我裝了 uPtt,站內信直接變聊天室真的假的,介面長怎樣?
03 功能

像通訊軟體一樣好用,
骨子裡還是 PTT

不必再記 Telnet 的鍵盤指令。下面每一格都能動手試試看。

聯絡人管理

釘選、拖放、封鎖,照你的習慣排

重要的人釘在最上面。釘選區與一般區各自排序;右鍵可以關閉、刪除本地紀錄或封鎖。

  • diner_kai 深夜食堂◆ 釘選
  • catmayor 貓村長◆ 釘選
  • bcboss 板橋大魔王

↕ 拖拉試試看(鍵盤:聚焦後按 ↑ ↓)

線上狀態

誰在線上,一眼就知道

獨立的查詢連線定時更新;查不到時顯示灰色「未知」,不會誤報。

catmayor線上
bcboss離線
csnerd87未知
⌘K 搜尋

搜尋訊息與聯絡人

任何畫面按下 ⌘K / Ctrl+K,直接跳到那段對話。

拉麵
  • 週末要不要去吃拉麵?diner_kai
  • 那家拉麵排了一小時catmayor
背景通知

關掉視窗,也不會漏訊息

常駐系統匣持續收信;不在前景時,新訊息以桌面通知提醒。

catmayor酷,我也來裝一個
diner_kai週末要不要去吃拉麵?
★MoonCake 水球你也在看這場比賽嗎
多帳號

多個 PTT 帳號,各自獨立

每個帳號的對話、設定、聯絡人都以資料庫層級隔離,切換不會混在一起。

WwonderslabNnight_owl
WHERE account_id = 'wonderslab'
三套主題

Graphite、Bone、Kraft

跟 app 同一套色票。點一下,這個網站也會跟著換。

引用回覆

回覆哪一句,清清楚楚

右鍵任一則訊息即可引用,輸入框上方顯示預覽;對方用 PTT 直接讀信也看得懂。

那家拉麵排了一小時
@catmayor 那家拉麵排了一小時值得嗎?
04 架構

兩條連線,
互不等待

同一個 PTT 帳號,uPtt 同時開兩條連線:一條專心收發訊息,一條專門查詢線上狀態。查詢再慢,也拖不住你的訊息。

  • 主連線 登入、每 5 秒輪詢站內信與水球、送出訊息。
  • 查詢連線 主連線登入 10 秒後啟動,負責可能卡住數秒的使用者查詢;重連時絕不踢掉主連線。
  • 共用重連節流 兩條同時斷線時,以至少 5 秒的間隔排隊重連,避開 PTT 的「登入太頻繁」。
架構圖:uPtt 介面透過 PTTWorker 主連線與 QueryWorker 查詢連線,分別連到 ptt.cc。 KICK_OTHER_SESSION = TRUE KICK_ON_RECONNECT = FALSE QT SIGNAL / SLOT uPtt 介面Qt 主執行緒 PTTWorker主連線・收發訊息 QueryWorker查詢連線・線上狀態 ptt.cc批踢踢實業坊telnet / ws 重連節流 5s
05 安全與隱私

你的對話,只存在你的電腦裡。沒有中繼伺服器,沒有帳號系統,沒有追蹤。

  • 01

    本地 SQLite

    對話紀錄與設定只存在本機的資料庫,多帳號以 account_id 完全隔離。

  • 02

    只連兩個地方

    直連 PTT 官方伺服器 ptt.cc;另外只向 GitHub API 查詢有沒有新版本。

  • 03

    程式碼簽章

    發行版由 SignPath.io 簽署、SignPath Foundation 驗證,確保下載的檔案沒被竄改。

  • 04

    CI 防洩漏

    TruffleHog 秘密掃描、Bandit 靜態分析、pip-audit,以及攔截密碼外洩的金絲雀測試。

使用 uPtt 時,請勿在其他 PTT 終端手動刪除信箱內容。

uPtt 依信件順序同步,手動刪信可能造成同步錯誤或誤刪。uPtt 只會刪除自己格式的訊息;若仍有疑慮,可在 PTT 設定中開啟「外部信箱備份」。

06 快捷鍵

手不用離開鍵盤

⌘K搜尋訊息・聯絡人
⌘N新對話
⌘I個人資料
⌘,開啟設定
⌘W關閉目前對話
⇧↵換行(↵ 直接送出)

// 在這一頁按下 K、N、I、W 或逗號,試試手感。

07 下載

開始聊天

免費、開源。下載後用你的 PTT 帳號登入即可。

macOS

.app ・ zip 壓縮檔

Windows

安裝程式 ・ zip 壓縮檔

所有版本與更新紀錄都在 GitHub Releases。預覽版:pip install --pre uPtt

08 開發者

一起把它
做得更好

uPtt 以 Python 3.12 與 PySide6 (Qt 6) 開發,透過 PyPtt 與 PTT 溝通。歡迎回報問題、提出想法,或直接送 Pull Request。

~/uPtt-app — zsh
# 取得原始碼
❯ git clone https://github.com/uPtt-messenger/uPtt-app.git
❯ cd uPtt-app

# 安裝依賴並啟動(--debug 會開啟紀錄)
❯ pip install -r requirements.txt
❯ python src/run_app.py --debug

# 執行測試
❯ pip install -r requirements-dev.txt
❯ pytest
✓ passed