WePush 開源批次推送工具,把大批通知搬進自己的電腦

WePush 是九年的開源批次推播工具,2026 年夏天從二十個月的沉寂醒來,三十七天內連發十五個版本並推出全新 Next 自架產品線。本文在 Mac 上實測 Next 1.1.0:解壓即跑、測試發送全程零對外連線,並整理九個內建通道裡台灣環境實際可用的選擇、Classic 與 Next 的分工,以及未簽名發行與單人維護該注意的事。

用 AI 摘要這篇文章:

一個連續安靜了二十個月的開源專案,多半會被當成已經死了。WePush 不是。這個以 MIT 授權開源、做了九年的批次推播工具,上一個版本停在 2024 年 11 月,然後在 2026 年 7 月 25 日突然復活,到 8 月 30 日為止的三十七天裡連發十五個版本,中間還塞進一條全新的產品線 WePush Next,同一週裡就從 alpha 一路走到穩定版。我把 Next 1.1.0 的 macOS 完整包下載回來,在自己的電腦上跑完了一輪官方文件建議的測試流程,結論先講:它真的能用,工程細節的成熟度超出我對個人開源專案的預期,但九個內建發送通道裡,台灣環境不必另外申請中國平台帳號就能直接用的是 HTTP 與電子郵件兩條,其餘都預設你本來就在操作微信、釘釘或阿里雲這類服務。

先把這個工具講成一句話。WePush 解決的是「一次把同一批訊息發給一大串收件人」這件事:你準備一份名單、一份訊息範本,它負責逐筆套用變數、控制併發、處理失敗重送。監控警報要通知整個值班群、活動通知要發給數千個會員、測試環境要批次打 webhook,這類需求過去常見的解法是買雲端發送服務,而它的立場是把引擎搬進你自己的電腦,帳號與額度也你自己出。

先看它現在的樣子:解壓縮就會跑的本地控制台

Next 1.1.0 的發行附件把我需要顧的雜事先處理掉了。完整包 183MB,內含一份 Java 執行環境,所以機器上不用預先裝 Java;因為發行物沒有商業程式碼簽章,官方文件堅持要你下載同一版 Release 附的 SHA256SUMS 對雜湊,我照做了一遍,本機算出的 SHA-256 與清單完全一致。解壓縮後執行服務腳本,三秒多一點服務就起來了,過程包含十七個資料庫遷移一次跑完,瀏覽器打開 127.0.0.1:18990 就是管理介面。

預設的網路姿態收得很緊。服務只聽本機回環位址,另外開了一個 19090 埠給 Agent 元件用,同樣只綁本機;文件特別警告不要把 127.0.0.1 直接改成 0.0.0.0,要對外開就必須同時啟用鑑權與 TLS。這不是那種裝完就把自己暴露在區網裡的工具。

介面本身是簡體中文,用語也是中國慣用詞,受眾、任務與調度這些選單名字,台灣讀者需要一點適應期,好在流程不複雜。總覽頁把服務版本、通道數、執行歷史攤在一頁,側邊欄底部隨時顯示服務連線狀態。

WePush Next 1.1.0 網頁管理介面總覽頁,顯示服務運行中、九個通道與最近執行紀錄Pin
WePush Next 1.1.0 的總覽儀表板,服務在本機 127.0.0.1:18990 上運行,內建通道數顯示為九個。

我跑的那輪測試:兩筆假名單從 CSV 到測試發送

照官方使用指南的路徑,我建了一個指向 example.com 的 HTTP 通道帳號(私有位址存取保持關閉),建了一份 POST 範本,內容用姓名與手機號兩個變數,然後匯入一份兩列的 CSV 假名單。匯入這步的回報比我預期仔細:總行數、接受、拒絕、重複各有計數,每一列的原始內容會先進預覽讓你核對,格式有問題的行可以單獨下載一份錯誤清單回去改,重複的識別碼只保留第一次出現。確認後名單會凍結成一份不可變快照,之後改範本或改名單都不會影響已建立的任務,要更新名單就再匯入一次、產生新快照。

真正執行前有兩道我沒料到的關卡。第一道是執行確認:按官方文件的說法,畫面會攤開通道、帳號、名單數量、併發與速率設定,產生一枚五分鐘有效的確認令牌,資源一變就得重新確認;我在 API 端拿到的就是這枚令牌與名單數量。第二道更直接,我第一次用 API 發起測試執行時被擋下來,回應說少了 Idempotency-Key 標頭;補上這個冪等鍵之後才放行。連測試執行都要求冪等鍵,這個態度在免費工具裡不常見。

結果是兩筆全部成功,狀態 SUCCEEDED,提供者代碼標著 DRY_RUN,整輪執行十一毫秒收尾。測試模式會完成範本、名單與設定的全部驗證,但不解析金鑰、不發任何對外請求。這一點我沒有只信文件:整輪操作結束後直接查這個 Java 程序的連線狀態,對外連線是零,服務日誌裡也沒有任何對外網址。執行歷史會記事件流,結果可以匯出,產出檔案放在本機儲存區,預設保留二十四小時、附 SHA-256 校驗。

WePush Next 執行中心畫面,測試執行兩筆全數成功,提供者代碼為 DRY_RUNPin
執行中心的測試執行結果:兩筆收件項目狀態 SUCCEEDED,提供者欄位標記 DRY_RUN,全程沒有對外連線。

九個內建通道,台灣直接能用的是兩條

通道清單是我從服務的通道目錄 API 直接取回的,九個都在,各自有併發上限。

通道併發上限台灣環境的可用性
通用 HTTP256直接可用,我實測的就是它
SMTP 電子郵件1直接可用,走自己的信箱
飛書/Lark 機器人5有國際版 Lark 可用
釘釘機器人2需要釘釘群
企業微信群機器人2需要企業微信
阿里雲簡訊10需要阿里雲帳號與簽名申請
微信公眾號10需要公眾號
微信小程式10需要小程式
企業微信應用訊息10需要企業微信

HTTP 通道本身還有幾個對工程友善的細節:不跟隨重導向、預設擋私有與回環位址(目標真是內網服務時要明確打開)、限制回應大小、可以設成功狀態碼與冪等標頭。電子郵件通道因為 SMTP 協定的特性走單一序列連線,併發上限掛 1,大量寄信的場景本來也該慢。若你的通知場景掛在監控上,像先前介紹過的 Cloudflare Workers 挪車提醒那類自架通知小服務,WePush 等於把它們缺少的批次與重送層補齊;若你發的對象在微信生態裡,也可以對照 WXPush 微信推送的作法,一個是把通知服務放到 Cloudflare Workers 上跑,一個是整台搬進自己電腦。

九個之外還有第四個層次的選擇:電信業者等級的簡訊協定 CMPP、SMGP、SGIP、SMPP。它們不在主包裡,是四支各自獨立、經 Ed25519 簽名的插件,要另外下載安裝。其中 SMPP 是國際通用的協定,其餘三個是中國電信體系專用。這層目前只做主動提交與長簡訊,不處理狀態報告與上行簡訊,要完整拿到發送回執的場景先別指望。

免費的界線畫在帳號額度與簽名

這個專案對「免費」的定義值得單獨看。它的路線圖文件用一整節列了「明確且長期不做」的清單:不建官方公共 SaaS、不提供註冊計費訂閱、不開公共插件市集、不整合雲端金鑰服務、不強制自動更新、不回傳使用遙測。版本檢查只在手動點擊時查一次 GitHub,我在測試期間的連線觀測也與這個說法一致。換句話說,它把「引擎」免費給你,但所有正式發送都走你自己的通道帳號與額度,不代註冊、不代儲值,訊息能不能發出去、一個月多少錢,都回到你與通道商之間。

代價則攤在明處。發行物不買商業程式碼簽章,macOS 第一次執行會跳 Gatekeeper 的未知開發者警告,Windows 則是 SmartScreen;官方的標準動作就是只從 GitHub Release 下載、對 SHA256SUMS、用系統提供的單次放行流程,而且明講不提供繞過安全機制的腳本。有趣的是它對自己的插件反向要求很嚴:正式模式下插件強制校驗 SHA-256 清單加上 Ed25519 發行者簽名,應用本體不簽名的缺口,用插件這條供應鏈的嚴格來補。

憑證的存放與失敗保護也有基本盤。各通道的密碼、Webhook 網址與金鑰不直接寫在帳號設定裡,而是存進本機的加密存放區,設定檔只留引用位置;瀏覽器介面的權杖只放在工作階段儲存區,關掉分頁就清掉,桌面版則託管給作業系統的安全鑰匙圈。帳號層還有一個熔斷器:同一帳號在十五分鐘內驗證失敗三次就暫停使用十五分鐘,先讓你回去檢查金鑰,避免把錯的憑證連續打到通道商被鎖帳號。資料層預設是一顆本機 SQLite 檔案,要多人共用或高吞吐時才需要自建 PostgreSQL 與物件儲存,單機個人使用不必碰這些。

Classic 與 Next 怎麼選

雙產品線是這波復活最讓人意外的決定。原本的 WePush(現在稱 Classic)是一套 Java Swing 桌面程式,裝好打開、滑鼠點一點就能發,最新版 5.1.3 在 2026 年 8 月 24 日釋出。安裝包切成三大平台的十一種格式,Linux 有 deb、rpm 與壓縮包,macOS 分 Intel 和 Apple Silicon 各提供 dmg、pkg 與壓縮包,Windows 有安裝程式與免安裝 zip,對舊機器的覆蓋比多數個人專案周到。功能面照官方 README 的說法:微信公眾號、小程式、企業微信的各種訊息類型,釘釘與飛書機器人,十二家簡訊服務商,外加極光推送,電子郵件與 HTTP 壓測,名單可從純文字、CSV、Excel 或 MySQL 匯入,支援變數訊息、定時發送、失敗重發與多帳號切換。這部分我沒有實際安裝操作,屬於文件層面的介紹。

版本日期重點
5.0.6/5.0.72026-07-25結束二十個月的沉寂
5.0.92026-08-19簡訊改直連,拆掉多家第三方 SDK
5.1.02026-08-20支援 SQL Server 與 SOCKS5 代理
5.1.22026-08-24網路層升 HTTP/2,新增飛書機器人
5.1.32026-08-24新增 CMPP/SMGP/SGIP/SMPP 協定
Next 1.0.0→1.1.02026-08-29→30新產品線,五天從 alpha 到穩定版

Next 則是完全的服務形態:背景服務加瀏覽器介面,可安裝成 systemd、launchd 或 Windows 服務,要擴充時加 Agent 節點,要用程式接就吃它的 REST API 與 Java SDK。兩條線彼此獨立、沒有自動遷移,可以並存。選擇不難:只是要一套桌面工具手動發名單,Classic 直接;要把推播做成系統的一環,讓排程、稽核、失敗重送都進同一個介面,或想用 API 掛進既有流程,Next 才是它的戰場。飛書生態的內容兩邊都有機器人通道可以接,例如把公開的 飛書文件內容整理後批次推送;微信生態的訊息類型同樣兩線都支援。

誰該裝,誰先繞道

適合動手的人有三種:本來就在操作微信、釘釘、阿里雲通道,需要一個把名單與重送管起來的工具;想自架批次通知引擎、不想每個月付雲端發送服務的開發者;以及只需要 HTTP 與電子郵件兩條通道、想用測試模式先驗流程的團隊。繞道的人也有三種:要現成雲端服務與客服支援的、所處環境規定軟體必須有正式簽章的、以及簡訊場景需要完整狀態報告的,這三種目前的缺口都明確存在。

維護面的現實要攤開講。GitHub 上的貢獻統計是一人一千七百多個提交,加上少量協作者與 AI 結對的痕跡,本質是單人專案;作者在 README 裡也自述是下班與週末擠時間在做,變現方式是微信讚賞碼。優點是方向一致、沒有商業變數,缺點是公車因子低,重要系統不該只靠它一份。三十幾天十五個版本的節奏證明產能爆發時很嚇人,但也對照出前面二十個月的沉寂,這種脈衝式的開發節奏,倚賴它之前要有心理準備。截至 2026 年 9 月,專案約四千七百顆星、一千出頭的 fork,以批次推播這個利基來說社群不算小。

下載時認明官方渠道:Next 走 GitHub Release,下載後對照同頁的 SHA256SUMS;Classic 裝在 Gitee 的發布頁,那邊沒有附雜湊清單,介意的人要自己驗。它不是那種開箱就光芒萬丈的產品,但一個九年的工具願意在沉寂後重寫一整套世代,還把「不做什麼」寫得比功能清單更清楚,對需要自架推播的人,值得花一個下午裝起來跑一輪測試。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1209

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...