三十天前,我在 ChatGPT & Codex 賽道寫下了這篇系列的標題:
「AI 時代的輕量化開發:ChatGPT 打造 LINE 多模態記帳與續訂預警 Agent」
以及那句我當時其實也不太確定能不能做到的簡介:
「不需要雲端伺服器,也能打造真正好用的智慧生活應用嗎?」
「30 天將構想化為真正能上線使用的 AI Agent。」
那時候的我只有一個想法:如果不打造複雜的雲端系統,只靠 LINE、AI 和幾個輕量化服務,有沒有可能真的做出一個「可以使用」的智慧生活應用?
於是,SubWise 就這樣開始了。一開始,它只是一個還不會做什麼事情的 LINE Bot。今天,它已經可以透過自然語言幫我記帳、辨識發票、查詢消費、分析支出、管理訂閱,甚至處理修改、刪除與扣款提醒。而今天,是第 30 天,也是這場鐵人賽的最後一天——是時候回頭看看,當初寫下的那句標題,到底有沒有兌現。
回頭看這 30 天,其實最有感的不是最後完成了多少功能,而是可以清楚看到 SubWise 一步一步長出來。
最開始,我先讓 Flask Backend 跑起來。接著串上 LINE Webhook,讓 LINE 的訊息真的可以進入自己的 Python 程式。然後加入 Google Sheets,讓 Bot 不只是回覆訊息,而是真的可以保存資料。
再往後,Gemini 加入了。這時候 SubWise 才開始有了「理解人話」的能力。使用者不需要學習固定指令,只要說「午餐 120」,SubWise 就可以把它理解成一筆消費資料。
這也是我覺得這次專案最有趣的地方:不是讓使用者學會怎麼操作系統,而是讓系統學著理解使用者。
如果只有「記帳」,SubWise 其實還只是一個 AI 版的輸入工具。所以後面的開發開始往「管理」前進。
可以查詢消費,可以分析本月支出,可以知道哪個分類花最多,可以知道最高單筆消費是多少。甚至可以進一步找出「哪一天花最多錢?」——這也是後來加入「最高單日消費」的原因,因為最高單筆和最高單日其實是完全不同的事情:一筆花很多錢,不代表那一天花最多。
當這些分析慢慢加入之後,SubWise 才開始從「幫我記帳」變成:「幫我理解自己的消費。」
生活中的固定支出,除了日常消費之外,還有另一個很容易被忽略的東西:訂閱。
Netflix、Spotify、YouTube Premium、ChatGPT Plus……平常每個月可能只扣幾百元,但服務一多,很容易忘記自己到底訂了什麼。因此 SubWise 後來又加入了訂閱管理。使用者可以直接說「我訂閱了 Notion,每月 150 元,下次扣款是 9 月 10 日」,系統就可以建立訂閱資料,接著還可以查詢目前有哪些訂閱,以及檢查近期是否有即將扣款的服務。
這時候 SubWise 的定位也慢慢變得更清楚:它不只是記帳工具,而是一個放在 LINE 裡面的智慧生活管理管家。
這是這次專案中,我自己很喜歡的一個部分。
以前記帳最麻煩的事情之一,就是看到發票之後還要自己輸入日期、金額、分類、品項……所以後來我加入 Gemini 的圖片理解能力,使用者直接把發票或收據丟給 SubWise,AI 負責從圖片中找出消費資訊,再轉換成記帳資料。
今天的最終驗收中,我也實際測試了發票辨識。一張消費圖片送進去後,SubWise 成功辨識「手搖飲,NT$60」並完成記帳。這一刻其實很有成就感,因為它已經不是單純的聊天機器人,它開始可以「看」資料、理解資料,再替使用者完成工作。
目前主要功能可以整理成:
| 功能 | 說明 |
|---|---|
| 💰 智慧記帳 | 透過自然語言記錄消費 |
| 📷 AI 發票辨識 | 從發票、收據圖片中辨識消費資訊 |
| 🔎 消費查詢 | 查看目前消費紀錄、總支出與最高單筆消費 |
| 📊 消費分析 | 分析今天、本週、本月的支出狀況 |
| 🔥 消費洞察 | 找出最高支出類別、最高單筆與最高單日消費 |
| ✏️ 修改消費 | 修改分類、金額與消費項目 |
| 🗑️ 刪除消費 | 透過自然語言刪除指定紀錄 |
| 🔔 訂閱管理 | 建立與查詢週期性訂閱服務 |
| ⏰ 扣款提醒 | 檢查近期即將扣款的訂閱 |
| 🛡️ AI 錯誤處理 | 針對 Gemini API 的異常狀況提供友善提示 |
而這些功能,最後都串在同一個 LINE Bot 裡。





這次鐵人賽最讓我意外的,是最後發現:我原本以為自己是在學怎麼做一個 LINE Bot,但實際上,我學到的是怎麼把一個模糊的想法,慢慢拆成可以完成的小問題。
不知道怎麼串 LINE?先讓 Webhook 跑起來。
不知道怎麼保存資料?先接 Google Sheets。
不知道怎麼理解自然語言?交給 Gemini。
不知道圖片怎麼辨識?加入 Vision。
不知道功能怎麼驗證?一個一個從使用者角度測試。
遇到錯誤,也不是一次把所有東西推倒重來,而是定位問題、修改、重新測試。
這也是我這次使用 Vibe Coding 最深的體會:**AI 並沒有代替我完成專案。**它比較像是一個一直坐在旁邊的開發教練——我提出想法,AI 幫我拆問題、解釋程式、找錯誤、提出修改方式,然後我自己實際執行、測試,再把結果帶回來。一次又一次,30 天之後,這些小步驟最後真的累積成了一個可以運作的東西。
如果把第一天和第三十天放在一起看:
Day 01:「我想做一個智慧記帳與訂閱管理 Bot。」
Day 30:「它真的可以記帳、看發票、查詢、分析、管理訂閱,還能處理修改、刪除與提醒。」
中間隔著的,不只是 30 天,而是 30 天的嘗試、錯誤、修改、測試與重新開始。
也許 SubWise 現在還不是一個完美的產品,甚至還有一些地方需要繼續改善。但對我來說,這已經足夠了。因為這次鐵人賽真正完成的,不只是 SubWise,而是讓我第一次很具體地感受到:一個原本只存在腦中的想法,真的可以一步一步變成可以使用的程式。
30 天前,我開始寫下第一行程式。30 天後,我把最後一次驗收跑完。這場鐵人賽到這裡正式結束,而 SubWise 的故事,或許才剛開始。
謝謝這 30 天,讓我真的做了一次。
如果未來還要繼續開發 SubWise,下一階段可能會是:
但那些,就留給下一個版本的 SubWise。這一次,我想先好好替這 30 天畫上一個句點。
SubWise v1.0,完成。