uPtt — 讓 PTT 化身現代即時通訊
你有沒有過這種經驗:想用 PTT 站內信跟朋友聊個天,結果一來一回,每封信都要重新打招呼,對話脈絡根本串不起來,最後乾脆放棄,跑去 LINE 繼續聊?
PTT 的站內信系統從來就不是為「聊天」而設計的。它是信箱,不是聊天室。這個事實在 Telnet 的黑白畫面年代還算說得過去,但放到現在,就顯得有點格格不入。
uPtt 想做的,就是在不改變 PTT 底層的前提下,把這件事修好。
它是什麼?
uPtt 是一款桌面應用程式,用 Python 3.12 + PySide6 開發,目前提供 macOS 與 Windows 版本,資料存在本機 SQLite。它的核心概念很簡單:把 PTT 站內信的「寄信 / 收信」模式,在你眼前重新渲染成對話氣泡。
你不需要學任何鍵盤指令,也不需要熟悉 Telnet 的操作邏輯。打開 uPtt,看到的是一個跟 LINE 或 Telegram 長得差不多的聊天介面,只是底層走的是 PTT 的通訊協定。
目前 uPtt 仍在封閉測試階段,功能與介面可能隨時調整。
功能設計
對話氣泡與引用回覆
uPtt 在背景自動收發站內信,呈現給你的是一串連貫的對話紀錄。右鍵點擊任何一則訊息就能引用回覆,輸入框上方會顯示引用預覽,前後文一眼就清楚。
不影響非 uPtt 使用者
如果對方沒有裝 uPtt,照樣可以傳普通站內信。uPtt 會把這些信以「信件卡片」的形式顯示在對話紀錄裡,超過 5 行可以一鍵展開全文。你這邊看起來是整合在一起的,對方那邊完全不受影響。
聯絡人管理
常聯絡的人可以釘選置頂,也可以直接拖拉調整排列順序。不想繼續收到某人訊息,右鍵選單提供封鎖選項,清單維護起來不費力。
水球訊息也收得到
站內信之外,PTT 還有另一套即時訊息:水球。uPtt 會把捕獲到的水球以行內氣泡的形式,直接插進對話紀錄裡,跟站內信混在同一條時間軸上。
水球本身沒有唯一識別碼,同一則訊息在不同輪詢批次裡重複出現是常態。uPtt 對每個批次做指紋雜湊來去重,避免你看到一堆重複訊息。
背景通知
關閉視窗後 uPtt 還是在背景跑著。有新訊息進來,系統匣會彈出通知預覽,不會漏掉任何對話。
安全性
uPtt 的所有對話紀錄與帳號資訊只存在你自己的電腦上,不經過任何第三方伺服器。連線直接走 PTT 官方的 WebSocket 協定,中間沒有額外的中繼。
安裝
去 uptt.cc 或 GitHub Releases 下載對應平台的安裝檔:
- macOS:下載
.dmg,拖移至「應用程式」資料夾 - Windows:下載
.exe,直接執行
封測期間還沒上架 PyPI,pip install uPtt 目前裝不到,先以上述安裝檔為準。
有一點需要注意
uPtt 在成功接收並存入資料庫後,會自動刪除對應的 PTT 站內信,讓信箱保持乾淨。
使用 uPtt 時,請勿在其他 PTT 終端(如終端機或 APP)手動刪除信箱內容,以免造成同步邏輯錯誤。
普通站內信(系統公告、非 uPtt 使用者寄來的信)不在自動刪除的範圍內。如果你對這個機制有疑慮,可以在 PTT 系統設定開啟「外部信箱備份」。
結語
uPtt 底層基於 PyPtt 這個 PTT Python 函式庫,以 GPL-3.0 授權開放原始碼,發行版由 SignPath.io 簽署。
PTT 的站內信三十年來都是信箱,不是聊天室。uPtt 沒有改動 PTT 本身任何東西,只是讓你這一端的體驗,終於接上了現代通訊的節奏。如果你平常還是會用站內信跟朋友聊天,這個工具值得試試。