糖小助:開源血糖儀表板實測,自架與雲端版這樣選

糖小助(Glucose Buddy)是基於 Nightscout 的開源血糖儀表板,附 AI 分析與低血糖警報,另有作者營運的雲端版。本文實測自架流程,攤開兩版在預測模型、資料保留與隱私上的真實差異。

用 AI 摘要這篇文章:

糖小助(Glucose Buddy)這個名字,實際上掛在兩個不一樣的東西上。一個是 GitHub 上的開源專案:一套用 Python 加 Flask 寫的 Nightscout 血糖儀表板,MIT 授權,103 顆星,你可以整套搬回自己電腦跑。另一個是作者自己營運的雲端服務 aixt.llingfei.com,打開就是登入頁,註冊開放,還有 Android App 可以裝。

我把原始碼 clone 下來在本機跑了一遍,也把作者放在 README 裡的兩版對照表逐項核對過。先講結論:自架版把所有資料留在你的機器上,但預測功能是通用的統計外推,而且主線程式碼已經十個月沒有功能性更新;雲端版有作者宣稱的個人化機器學習模型與持續開發,代價是把連續血糖、用藥紀錄這類高度敏感的健康資料,交到一位個人開發者的伺服器上,而且全站找不到一頁隱私權政策。要選哪一版,關鍵從來不是功能多寡,而是你願意把 CGM 資料放在哪一層信任。

一個名字、兩個產品:種子在 GitHub,成品在雲端

先看開源這一側。flyhunterl/glucose-buddy 於 2025 年 7 月 30 日建立,整個服務幾乎都寫在一支 8,222 行的 app.py 裡,依賴清單只有 Flask、aiohttp、toml 這類輕量函式庫,資料落在本機 SQLite 檔案。專案沒有發布過任何正式 release,問題清單是空的,看起來就是一個人寫給自己、順手分享出來的工具。

糖小助 GitHub 儲存庫首頁,單支 app.py 與 MIT 授權、103 顆星的專案狀態Pin
糖小助 GitHub 儲存庫首頁:主要邏輯集中在單支 app.py,專案無正式 release(2026 年 10 月)

整條提交歷史也只有一雙手:121 個 commit 的作者欄全部是 flyhunterl 本人,其中 69 個 commit 因為早期信箱填了佔位符,被 GitHub 歸到另一個帳號 renoschubert 名下。也就是說,沒有外部貢獻者,也不存在「社群接手維護」這回事。

維護狀態要單獨看。最後一批功能性 commit 停在 2025 年 12 月 29 日,內容是修預測觸發與推送失敗;進到 2026 年之後,7 月與 8 月只動了六次 README。對照 git 歷史,開源版可以視為已經凍結的種子程式碼,之後的力氣都轉到雲端版去了。作者在 README 放了一張「開源版/上線版」對照表,把兩邊差異寫得相當誠實,值得搬重點來看:

項目開源自架版雲端上線版
CGM 資料接入主要從既有 Nightscout 拉取每個用戶用獨立 API Secret 直接上傳
血糖預測通用趨勢外推,不訓練個人模型依個人歷史資料訓練機器學習模型
預測呈現10、20、30 分鐘預測點同左,並顯示預測區間
餐食運動感知規則型修正碳水、蛋白質、脂肪、胰島素、運動納入模型
食物與運動敏感度無記錄並計算個人敏感度
網頁直接記錄主要讀 Nightscout 既有紀錄餐食、運動、指尖血糖皆可線上輸入
AI 使用方式自行設定 AI 端點,無次數管理內建 AI 次數制,也可掛自己的免費 AI
資料保留無限制一般用戶保留 90 天
費用免費(自己負擔機器與模型)免費註冊,AI 分析採次數制

這張表按作者自己寫的十六項對照表整理精簡而成(費用一行為本文歸納),取的是 2026 年 10 月 28 日當天的版本,兩邊的站也都還活著。它透露的重點是:開源版與雲端版的差距不在介面,而在資料能力與資料歸屬。

自架版跑得起來,但別把「預測」想像成 AI 算命

我實際把自架版裝起來的過程比預期順:macOS 上建一個 Python 3.11 虛擬環境,pip 照 requirements.txt 一次裝齊,把 config.toml.example 複製成 config.toml、改好資料來源,執行 python app.py,大約十秒後本機 1338 埠就回應了。想用 Docker 的人也有現成的 compose 檔,作者甚至附了一份把本機 Ollama 一起拉起來的組合,擺明希望你連 AI 都不出門。

動手前要先認清它的前置依賴:糖小助不量血糖,它讀的是你已經架好的 Nightscout。Nightscout 是糖尿病自助社群發展出來的開源資料平台,把連續血糖監測儀(CGM)的讀數集中成一個可查詢的介面,搭配的手機端上傳工具多半是 xDrip 這類社群軟體。也就是說,資料鏈是 CGM 加 Nightscout 加糖小助三段,缺前面兩段,後面這段儀表板沒有東西可畫。作者的說明頁也承認這點,並補了一句:只用指尖血糖也能顯示,但趨勢分析的參考價值會打折。

介面本名叫「Nightscout 血糖監控」,路由一共 30 個,涵蓋血糖、治療、運動、指尖血糖、統計、報表,加上 AI 分析、AI 諮詢與訊息中心。整個介面是簡體中文,台灣使用者讀起來沒有障礙,用語則是對岸的慣用寫法;時區設定給了 timezone_offset 參數,填 8 就是台灣用的東八區,不用改。空著資料庫亂打也不會得到怪數字:我對 /api/predict 送出請求,它直接回覆資料點不足、無法進行品質評估、至少需要 20 個資料點。這裡有個文件與實作的小落差:README 寫最少 10 個資料點就能預測,程式實際按資料品質動態提高門檻,空庫一律擋在 20。想把 AI 也留在本機的人,可以參考同樣走本機路線的 AingDesk 開源本機 AI 助手,思考方式是同一套。

設定檔本身攤開來看,會看到作者對使用情境的假設。預設同步間隔 15 分鐘向 Nightscout 拉資料;登入密碼保護預設是關閉的,也就是說裝在區域網路上的儀表板,同網路的人都能打開看,要開啟 auth 開關才有密碼牆。健康資料這麼敏感的東西,這個預設值值得每個自架者親手改掉。倉庫裡還有一個小疏失:data 目錄下連了一個現成的 SQLite 資料庫檔進版本控制,好在我打開看過,裡面只有九張空的資料表與一張 SQLite 內部簿記表的結構,沒有任何真實資料。這幾張表格倒是很誠實地畫出了它在本機存了什麼:血糖、治療、運動、指尖血糖、預測結果、低血糖警報、訊息、推播訂閱與警報設定,全部落在自己機器的單一檔案裡。

報表功能是自架版最紮實的一塊。統計頁提供 1 到 90 天的歷史區間,算平均血糖、目標範圍佔比、變異係數,並用平均血糖推估糖化血紅蛋白,另可按實際進食時間切出餐後兩小時的變化,排版也為了列印調過,帶去門診直接用。作者說明頁對這些數字的定位寫得相當清楚:目標範圍佔比的預設區間只是通用參考,個人的目標要按年齡、用藥與低血糖風險跟醫療團隊定;估算出來的糖化血紅蛋白是趨勢指標,不是實驗室的檢驗值。

預測演算法值得攤開看,因為它決定你對這套工具的期待上限。讀 app.py 裡的 predict_glucose:它取最近 15 筆血糖做加權變化率,外推未來 10、20、30 分鐘三個點,再依資料筆數與趨勢一致性算出信心分數。這是統計外推,等級大概落在「把趨勢箭頭延長半小時」,與機器學習或醫療級預測模型是兩回事。README 的演算法小節寫的是「基於最近 5 到 10 個資料點」,實際程式取 15 筆,又一處文件落後於程式碼的地方。對自架版來說,這些落差不影響它把曲線畫清楚的本業,但你要知道螢幕上那條預測線的來歷。

AI 分析這層,先問誰拿到你的血糖資料

糖小助的 AI 功能走自帶金鑰的路線:config.toml 裡的 ai_config 讓你填任何 OpenAI 相容端點,出廠預設指向本機 Ollama(localhost:11434),註解裡另外附了智譜 GLM 的雲端範例,OpenAI 的接法則寫在說明文件。換句話說,裝好的那一刻它預設不出門,要出門是你自己的選擇。

但送出去的內容要先看清楚。AI 分析的 prompt 我逐行讀過:它會把血糖序列、身高體重體脂、口服藥與胰島素方案整包放進去,開頭一句是要求模型扮演「專業的內分泌科醫生和糖尿病管理專家」。這裡有個誠實的張力:官網說明頁反覆聲明糖小助不替代醫師診斷與處方,但程式卻刻意讓模型用醫師的口吻寫分析。你收到的東西,本質上是一般大型語言模型讀完你的資料後生成的文字,口吻專業,來源不是醫療意見。比較好的設計也有:prompt 強制模型區分實測值與推估值,禁止把估算混成量測結果。除了定時產出的報表,介面裡還有一個 AI 諮詢入口,可以用日常語言問「今天下午為什麼一直偏高」這類問題,所有對話與報告會歸檔進訊息中心,支援未讀標記與收藏,設計目的看得出是給家屬事後追蹤用的。

隱私邊界因此很清楚。接本機 Ollama,健康資料就留在自己機器上,這也是同類本機 AI 工具的共同賣點;接 OpenAI 或智譜,等於把整套病史摘要送到那家模型業者手上,換的是更好的文字品質。雲端版把這個選擇收走了:README 對照表寫明雲端版是內建 AI 次數制,模型端點由站方決定,你的血糖與用藥資料送到哪個模型、存多久,頁面上沒有交代。對健康資料來說,這是比功能差距更需要先看的一欄。

雲端版換到的東西,和它沒有寫出來的東西

雲端版多出來的能力,依作者在說明頁的描述,核心是個人化預測模型。它的設計讀起來相當節制:系統為每個用戶在穩健基線、阻尼趨勢、個體 Ridge 迴歸、生活方式 Ridge 四種策略裡各自比賽,10、20、30 分鐘三個時長分開評選,沒跨過門檻就繼續用基線。門檻也寫得具體:理想連續資料下最快約 18 天才能啟用個人模型,至少需要 1,000 個訓練樣本,獨立評估集上的誤差要改善 5% 以上、方向準確率要達到 55%,並以 80% 預測區間呈現,資料超過 15 分鐘沒更新就暫停預測。作者也在同一頁聲明,這些規則用於減少過度自信,不等於醫療器材級的臨床驗證。

糖小助雲端版說明頁的功能卡片與短時血糖預測模型說明Pin
糖小助雲端版說明頁:功能卡片與短時預測模型段落(2026 年 10 月)

這些是作者宣稱,我沒有辦法在登入牆外驗證模型表現;但單就設計文件而論,它比多數同類產品誠實,連新用戶前幾週其實還是基線外推這種不利宣傳的事實都寫出來。對照著看,它同樣大方寫出雲端版的資料保留政策:一般用戶保留 90 天,之後就不是你的資料了。設計上也看得出自我設限,任何一個預測時長沒跨過門檻,就繼續用最保守的基線,不硬上複雜模型。

沒有寫出來的部分反而更重要。我把 aixt.llingfei.com 上不需要登入就能看的頁面全部翻過:關於、登入、註冊、忘記密碼,加上一份 Android App 下載連結,沒有隱私權政策,沒有服務條款;關於頁上唯一的隱私段落是給自架者的部署建議,不是資料處理政策。一款蒐集連續血糖、胰島素劑量、飲食與運動紀錄的健康服務,營運主體是個人開發者,資料保留 90 天,卻沒有任何一頁告訴你資料存在哪、誰能看、出事找誰。註冊用電子郵件就能開通,也支援 Linux.do 帳號單一登入,那是一個中文開發者社群,會出現在這裡,多少說明了這套服務目前主要的讀者是誰。Android App 也不走應用商店,下載連結指向開發者自己網域下的 APK 檔,要側載安裝;來源是不是原作者,只能靠網域本身判斷。這不代表作者會亂用資料,而是你交出資料時,契約層面是空的,只能全憑對這個人的信任。

低血糖警報能幫忙看,不能替你決定

預設的風險門檻落在合理位置:低血糖高風險 3.9 mmol/L(約 70 mg/dL)、中風險 4.4 mmol/L(約 80 mg/dL),高血糖 10.0 mmol/L,都可以自調。排程設計也貼近作息:預設每天早上十點、下午三點與晚上九點各做一輪分析,背景的自動分析預設關閉,要自己打開,避免了伺服器自己對著空資料空轉。工程細節看得出被警報轟炸過的痕跡:通知冷卻預設 30 分鐘,2025 年 12 月底的幾支 commit 就在修「重新整理頁面就重複通知」的問題,把後端定時警報與頁面請求脫鉤。

通知管道有三條:瀏覽器 Web Push、電子郵件,以及 xxtui 微信推送。對台灣用戶來說實際可用的是前兩條,微信推送的生態在這裡使不上力。要注意的是,這整套警報依賴資料鏈活著:CGM 要持續上傳、伺服器要開著、瀏覽器通知要授權。它適合當「多一雙眼睛」,不適合當唯一的防線。真發生嚴重低血糖、意識不清的狀況,該走的是個人應變計畫與急救管道,等推播是來不及的。

現在該選哪一版

把選擇收斂成幾種情境。你已經有 Nightscout、會用終端機、堅持健康資料不出家門:自架。接受兩個前提,預測只是趨勢外推,維護狀態按停更計算,把它當成看曲線與產報表的工具剛好。這與自己架 Open MedKit 家庭藥箱工具、用 ChatLab 把對話紀錄留在本機是同一種取捨,隱私換到了,能力上限也固定了。你想要個人化模型、餐食敏感度分析與手機直傳,不介意資料放在開發者那裡:用雲端版,但建議當成 90 天滾動的觀察窗,重要報表自己留存,並想清楚沒有條款頁這件事。你或家人還沒有建立 CGM 資料鏈:糖小助暫時幫不上忙,先與醫療團隊把量測本身搞定。

家屬與照顧者的情境值得單獨講:共享的是帳號與授權,判斷不共享。把曲線、餐後變化、報表帶去門診,讓糖小助做它擅長的整理與提問準備;改胰島素劑量、換藥、處理高低血糖急症,這些判斷留在醫療端。這條線畫清楚,它才是一個稱職的日常助手,而不是一個危險的替代品。

Sliven 褚崇名
Sliven 褚崇名

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

文章: 2146

發佈留言

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


Share to...