Open MedKit:對著藥箱說一句話就建檔的自架工具,但 AI 解析的資料流向要自己扛

Open MedKit 是 MonoYan 以 MIT 釋出的開源家庭藥箱管理工具,用 Docker 自架,把自然語言錄入、AI 結構化解析、過期提醒與 MCP 接入串成一條工作流。藥品資料存在本地 SQLite,但 AI 解析與問答會把你輸入的內容送給你設定的 LLM API(預設 OpenAI)。它是藥品整理工具,不是醫療建議系統。

用 AI 摘要這篇文章:

Open MedKit 是一套以 MIT 釋出、用 Docker 自架的家庭藥箱管理工具,作者 MonoYan 一人開發。你對著它說一句「這是一盒 2027 年初過期的布洛芬,還剩大概一半」,它就會把你口語化的描述交給大模型拆成名稱、規格、有效期與數量,寫進本地 SQLite,快過期時再透過 Telegram 或郵件提醒你。它還內建 MCP Server,可以直接在 Claude Code、Cursor 這類 AI 客戶端裡用一句話管理藥箱。但開源、自架、本地資料庫這幾個字,並不代表整套流程都待在你家機器裡。

我的判斷是這樣。如果你是會自己跑 Docker、想把家庭藥品或到期物資整理進一套可自架工作流的折騰黨,Open MedKit 把過去要手動填表的結構化欄位交給大模型做結構化拆解,這個互動省事是真的。但決定你該不該把家裡藥品交給它的,是兩件它不會主動替你扛的事:你輸入的藥品資料會送給你設定的 LLM API 處理,以及它是一個藥品整理與提醒工具、不是醫療建議系統。

TL;DR:Open MedKit 把「對著藥箱說一句話就完成錄入」做成了可自架的開源系統,藥品資料存在本地 SQLite。但它的資料邊界畫在「儲存本地、AI 處理雲端」:AI 解析與問答會把你輸入的內容與庫存送給你設定的 LLM,預設是 OpenAI。要讓 AI 處理也留在本地,得自己把 AI_BASE_URL 指向 Ollama。

它本質上是家庭藥箱管理工具,不是通用庫存系統

Open MedKit 在 GitHub 倉庫的自我定位寫得很清楚:AI-Powered Personal Medicine Manager,家庭藥箱管理工具。欄位、列表、過期判斷與提醒管道,都是圍著藥品設計的。你可以把它底層「自然語言錄入、結構化解析、本地儲存、到期提醒」的邏輯抽象成一套通用庫存工作流,但把它單純當成另一個庫存 App 來用,會錯過它真正該被看清楚的地方,也會忽略它作為藥品管理工具該有的健康資訊邊界。

TechMoon 截圖|Open MedKit GitHub 倉庫首頁,MonoYan/open-medkit 專案 README 與 MIT/Docker/MCP 徽章Pin
Open MedKit 的 GitHub 倉庫首頁,README 頂端可見 MIT License、Docker、MCP 等專案徽章與家庭藥箱管理工具的中文簡介。

它真正值得拆開來看的是這條互動鏈路。你在網頁或終端輸入一句口語描述,系統把它交給你設定的 OpenAI 相容 API,模型回傳結構化欄位,確認後寫入本地 SQLite。要找藥的時候也是用問的,像聊天一樣問「有退燒藥嗎」「快過期的有哪些」,系統比對資料庫回覆,並把即將到期的項目透過你設定的通知管道推給你。整條鏈路是輕量的,但每一環都值得知道資料去了哪裡。

TechMoon 截圖|Open MedKit Demo 官方首頁,AI 家庭藥箱管理工具核心能力與即時解析演示Pin
Open MedKit 官方 Demo 首頁,展示自然語言錄入、拍照辨識與過期提醒等核心能力,並以布洛芬示範 AI 解析流程。

真正的決策軸:藥品資料存本地,但 AI 解析走雲端

很多人看到「自架、本地 SQLite、開源」就直覺認定資料不外送,這是 Open MedKit 最需要被講清楚的地方。作者在 README 的隱私與安全段寫得很明白:藥品資料預設存在你部署環境內的 SQLite,但 AI 解析、圖片辨識與聊天功能,會把你提交的文字或圖片發送到你設定的 OpenAI 相容介面。AI 聊天還會把回答問題所需的目前藥品庫存一起送出去。

換句話說,它的資料邊界畫在「儲存本地、AI 處理雲端」。本地 SQLite 只解決了資料落地這一層,但決定藥品名稱、規格、有效期的解析動作,以及你問「我家還有沒有退燒藥」這類問題的推理動作,全部發生在你設定的 LLM 那一側。預設配置指向 OpenAI,也就是說在你什麼都不改的情況下,你輸入的藥品資訊會經過 OpenAI 的雲端模型。作者也因此在文件裡直白提醒:請避免錄入不希望與模型供應商共享的資訊。

這條「儲存在本地不等於處理在本地」的界線,跟之前聊過的純前端音轉字工具是同一個誠實軸:前端切音檔在本機,但語音辨識仍要送雲端 ASR。Open MedKit 是這個軸的另一個變體,而且它處理的是藥品這類帶有隱私與健康屬性的資料,資料外送的敏感度比一般筆記更高。看清這條線,才能決定你願不願意把家裡的藥品清單交給它。

想讓 AI 處理也留在本地,把模型指向 Ollama

好消息是 Open MedKit 的 AI 層是可替換的。它相容於任何走 OpenAI 格式(/v1/chat/completions)的 API,OpenAI、Deepseek、或你自己跑的 Ollama 都能接。如果你在意藥品資料外送,把 .env 裡的 AI_BASE_URL 指向同一台機器上的 Ollama 服務,整條解析鏈路就可以做到不入雲端。這是把它從「資料落地但 AI 雲端」推到「資料落地、AI 也落地」的唯一設定,但代價是你要自己準備能跑得動本地模型的硬體。

這個取捨很實際。走雲端 LLM,解析品質穩、硬體門檻低,但你家的藥品清單會經過模型供應商;走本地 Ollama,資料完全不出本機,但你要承擔模型挑選、顯示卡資源與解析品質的變動。Open MedKit 本身不替你做這個選擇,它只提供切換介面,AI_API_KEYAI_BASE_URLAI_MODEL 三個欄位填什麼,決定了你的藥品資料走哪一條路。

自架門檻與技術棧,其實不算重

Open MedKit 的部署負擔在自架工具裡算輕的。前置條件是 Node.js 20 以上與 Docker,作者推薦的 Docker 路線只要一條 docker compose up -d --build 就跑起來,預設開在 http://localhost:3000,藥箱資料落在容器內的 SQLite。技術棧是 React 18 加 TypeScript 與 Vite 的前端、Hono 寫的 Node 後端、better-sqlite3 當資料庫,全部裝進單一 Docker 容器。AI 設定可以部署時留空,之後再在瀏覽器的設定面板補。

這裡的門檻不在部署本身,而在你願不願意長期維護一套自己跑的服務。Docker 跑起來是一回事,機器開著、容器更新、備份那個 SQLite 檔,是另一回事。如果你的需求只是偶爾整理一次藥箱,這套自架方案相對一般手機 App 並不見得更划算,它服務的是本來就在跑 HomeLab、習慣自己裝服務的人。

MCP 接入是它跟一般庫存 App 真正拉開差距的地方

Open MedKit 內建一個 MCP Server,可以接進 Claude Code、Cursor、Claude Desktop、OpenClaw 這類 AI 客戶端。這代表你不一定要開瀏覽器,也能管理藥箱:在終端或編輯器裡說一句「幫我加個布洛芬」,AI 客戶端就透過 MCP 工具呼叫把藥品寫進本地資料庫。對已經把這些 AI 客戶端當日常工作環境的人,這條接入把管理藥品從一個獨立任務,降階成一句順口交代的指令。

但同一條 MCP 接入也要回到前面的資料邊界來看。MCP 讓 AI 客戶端能讀寫你的藥品庫存,而這些客戶端本身的推理又可能走雲端模型,等於你的藥品資料會被它讀進上下文、再送給該模型的供應商。這不是 Open MedKit 的缺陷,而是 MCP 類工具的共通屬性:愈方便讓 AI 代你操作本地資料,就愈要弄清楚那個 AI 的推理發生在哪裡。

如果你需要的是 LLM API 而不是藥箱管理,可以另看整理過的免費 LLM API 匯集,那屬於不同維度的需求。

它跟一般庫存 App 與雲端 AI 工具的差別

比較項目Open MedKit手機庫存 App雲端 AI 筆記工具
部署型態Docker 自架,資料在本機 SQLiteApp 商店安裝,資料多在雲端雲端服務,資料在供應商
錄入方式自然語言,AI 解析欄位手動表單填寫自然語言,雲端模型處理
資料處理位置儲存本地,AI 處理看你設定多為雲端同步完全雲端
AI 可替換性可,相容 OpenAI 格式含 Ollama通常無 AI綁定供應商模型
合適場景家庭藥箱、到期物資整理通用物品清單文字知識與筆記

把這三條路線擺在一起,Open MedKit 的位置就清楚了。它不是要跟手機庫存 App 比功能多寡,也不是要跟雲端 AI 工具比模型強弱。它解的是另一個問題:把家庭藥品這種帶隱私與健康屬性的清單,放在自己機器裡,用可替換的 AI 做錄入與查詢。願意接受自架成本的人拿到的是資料落地與 AI 可替換這兩件事,代價是部署、維運與模型選擇都要自己來。

適合誰、不適合誰

下面這幾種人會覺得 Open MedKit 值得一架:本來就在跑 HomeLab 或 NAS、習慣用 Docker 裝服務的人;已經把 Claude Code、Cursor 這類 AI 客戶端當工作環境、想用一句話管理本地資料的開發者;以及在意資料落地、願意把 AI_BASE_URL 指向 Ollama 換取完全本地處理的隱私偏好者。

反過來說,如果你只是想偶爾清點一次家裡的藥,不想顧一台伺服器,一般手機 App 會實際得多;如果你沒有把握自己跑得動本地模型、又不願意把藥品資料送雲端,這套工具目前的設定會讓你卡在中間;以及最關鍵的一種:如果你打算用它來做用藥判斷、劑量建議或藥物交互作用諮詢,請先停下來。

作者在文件裡明說,這個專案的定位是藥品整理與到期提醒,不是醫療建議系統。它能幫你記住家裡有哪盒藥、什麼時候過期,但它不會、也不該取代藥師或醫師的專業判斷。把庫存整理與用藥諮詢分清楚,是這類健康相關工具能不能被放對位置的底線。

三個下一步

  1. 先到 Open MedKit 的 GitHub 倉庫與官方展示站走一次 README,確認你手邊有 Node.js 20 以上或 Docker 環境,預期結果是你在寫任何設定之前,就先知道自己能不能跑得起來。
  2. 決定你要走雲端 LLM 還是本地 Ollama。判斷標準是你願不願意讓藥品資料經過外部模型供應商;若不願意,就把 AI_BASE_URL 指向自己機器上的 Ollama,並確認你的硬體跑得動對應模型。
  3. 部署完成後,先錄入幾筆你不在意外送的測試藥品,把過期提醒與通知管道跑通一次,再決定要不要把真實的家庭藥品清單搬進來。預期結果是你確認整條資料流向之後,才把敏感資料交給這套系統。

常見問題

Open MedKit 是開源專案嗎

是。作者 MonoYan 以 MIT 授權釋出,原始碼在 github.com/MonoYan/open-medkit。MIT 是寬鬆授權,你可以讀、可以 fork、可以修改並商用,只要保留授權聲明。不過它呼叫的 LLM 與通知服務各有獨立的條款與計費,那些不在 MIT 覆蓋範圍內。

藥品資料會被送到雲端嗎

儲存不會,但 AI 處理會。藥品資料預設存在你部署環境內的本地 SQLite;但 AI 解析、圖片辨識與聊天會把你輸入的內容與目前庫存,發送到你設定的 OpenAI 相容介面,預設是 OpenAI。要讓 AI 處理也留在本地,得把 AI_BASE_URL 指向自己跑的 Ollama。

它能取代用藥諮詢或藥物交互作用查詢嗎

不能。作者明說這是藥品整理與到期提醒工具,不是醫療建議系統。它可以幫你記住家裡有哪些藥、何時過期,但用藥判斷、劑量與藥物交互作用這類問題,要回到藥師或醫師的專業判斷。

沒有高階顯示卡能用嗎

看你的 AI 走哪一條。走雲端 LLM 不需要本地 GPU,只要有效的 API Key;走本地 Ollama 才需要能跑得動對應模型的顯示卡,這時可以先用本地 AI 硬體檢測工具確認手邊機器夠不夠。部署本身的硬體門檻很低,AI 處理的位置才是決定硬體需求的那一環。

MCP Server 要怎麼接

在 Claude Code、Cursor、Claude Desktop 或 OpenClaw 這類支援 MCP 的用戶端設定檔裡,加上 Open MedKit 的 MCP 端點,詳細步驟見倉庫裡的 MCP.md。接好後就能在這些用戶端裡用自然語言讀寫藥品庫存,但同樣要記得,這些用戶端的推理可能走雲端模型,藥品資料會進入它們的上下文。

Sliven 褚崇名
Sliven 褚崇名

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

文章: 638

發佈留言

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


Share to...