跳至主要內容

里程碑

【水滴精靈 Dewy】會記錄喝水量,還會陪聊的 LINE 小精靈

Camille @cami發布於

一、我的想法

我常常一天結束才發現「今天好像沒喝水」。App 太多反而懶得開,但 LINE 每天都會開。
所以我做了一隻住在 LINE 裡的喝水小精靈「水滴精靈 Dewy」:傳一個數字就能記錄喝水量,還能查進度、比排行,聊天時也會溫柔提醒你喝水。

設計原則:能用規則算清楚的事交給程式,需要溫度的事交給 AI。
數字(加總、排名)由程式計算,AI 只負責聊天,所以不會算錯、也不會亂編。

二、功能設計

使用者傳的訊息小精靈做的事
300 或 喝水 300記錄 300 ml,並回覆今日進度條
今天查看今日累計與達成率
排行今日排行榜(我和朋友互相較勁)
日報昨天的喝水報告:進度、排名、一句評語
週報上週一到週日每天的長條圖、達標天數、冠軍
聊天、抱怨、分享心情AI 以小精靈人設回應,並自然提醒喝水
說了「剛喝了一杯珍奶」AI 不會自己編數字,會引導輸入「喝水 500」
輸入怪數字(如 99999)友善提醒單次記錄範圍 50~2000 ml

防呆設計: 單次記錄限定 50~2000 ml,避免手滑打錯。

回覆範例:

程式碼
✅ 已記錄 300 ml
💧 今日進度
🟦🟦🟦⬜⬜⬜⬜⬜⬜⬜ 15%
已喝 300 / 2000 ml

三、系統架構

程式碼
LINE 訊息 → n8n Webhook → 過濾空事件 → 解析指令 → 取得暱稱 → 分流
  ├─ 記錄 → 寫入 Google Sheets → 讀取全部紀錄 ─┐
  ├─ 今天 / 排行 / 日報 / 週報 ────────────────┤→ 組合回覆 → LINE 回覆
  └─ 其他(聊天)→ AI Agent(Gemini)→ 整理回覆 → LINE 回覆
元件負責什麼
LINE Messaging API使用者介面,朋友不用學新工具
n8n流程大腦:判斷指令、串接各服務
Google Sheets資料庫,每次喝水都留下一列紀錄
Gemini(AI Agent)負責聊天與人設,不碰計算

四、每次水量怎麼記錄?

每次記錄會在試算表新增一列:

時間日期userId暱稱ml
2026-10-25 04:09:122026-10-25(LINE 使用者代碼)(LINE 暱稱)300
  • 以 userId 區分是誰,暱稱改了也不會搞混。
  • 進度、排行、日報、週報,都是從這張表即時加總出來的,改資料就會同步。

五、AI 人設(System Prompt)

程式碼
你是「水滴精靈 Dewy」,住在 LINE 裡的喝水小精靈,陪使用者養成喝水習慣。

【個性】
溫暖、活潑、有點俏皮,像一個貼心但不囉嗦的朋友。

【規則】
1. 一律使用繁體中文(台灣用語),每次回覆不超過 60 字,可適度使用 1~2 個 emoji。
2. 不評論身材、不給醫療診斷;使用者提到身體不適,建議諮詢醫師。
3. 若使用者聊天、抱怨或分享心情,先簡短回應情緒,再自然地提醒喝水。
4. 若使用者提到剛喝了某種飲料,可說明「想記錄請輸入『喝水 數字』,例如『喝水 500』」,不要自己編造記錄或數字。
5. 不要自己計算或編造任何喝水總量、排名、進度;這些請使用者輸入「今天」「排行」查詢。
6. 與喝水無關的話題,簡短友善回應後,引導回喝水。

【輸出格式】
只輸出要回給使用者的文字,不加前言、不加標題。

設計重點: 規則 4、5 是替 AI 設的「護欄」,避免它把「一杯珍奶」亂猜成某個毫升數,或編造進度。

六、實測結果

  • 傳 300 → 成功記錄並回覆進度條。
  • 傳「剛喝了一杯珍奶」→ 小精靈回應後,引導我輸入「喝水 數字」,沒有亂編數字。
  • 傳 99999 → 小精靈友善提醒要用「喝水 數字」格式。

七、踩過的坑(給之後要做的人)

  1. Webhook 404:測試網址只聽一次,正式使用要切 Active 並換 Production URL。
  2. 憑證的允許網域沒填:n8n 憑證限制網域,要填 api.line.me,否則抓不到暱稱。
  3. Switch 出口沒接線:分流的每個出口都要接,不然那個指令就已讀不回。
  4. AI 與 LINE 欄位對不上:AI 輸出叫 output,LINE 要 replyText,中間要加一顆整理節點。

八、未來想加的功能

  • 每週一早上 9 點自動推播上週週報
  • LINE 圖文選單:一鍵記錄 250 / 500 ml
  • 回覆時顯示「思考中」載入動畫
  • 每人自訂每日目標、定時提醒

0 個愛心0 則留言

登入並驗證手機後就能留言。登入