iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Vibe Coding

四個番茄鐘,三次重新來過:我跟 AI 的 30 天開發考古系列 第 20 篇

Day 20|讓 App 自己產生 prompt,再把 AI 的結論改回 App

  • 分享至 

  • xImage
  •  

這是我覺得 Pomofocus 最好玩的功能。

6/29:統計頁多了一顆「AI 分析」按鈕

6 月 29 日晚上 7 點 25 分(22bfd66,446 行),統計頁的標題列多了一顆按鈕。按下去會做一件事:把我最近的用眼數據組成一段繁體中文 prompt,讓我複製去貼給 AI。

那段 prompt 有六個區塊:

  1. 指示段(AI 的角色是數位用眼健康分析師,加上三項要求)
  2. 我想補充的狀況(可以自己打,例如「最近熬夜」「有戴隱形眼鏡」)
  3. 目前設定(工作/短休/長休時長、長休週期、自動開始、休息引導強度)
  4. 統計總覽(近 7 日與近 30 日的番茄數、休息率、望遠分、平均眼疲勞)
  5. 近 30 日逐日明細
  6. 指標說明

實作是一個純靜態的組字器(ai_prompt_builder.gd),不碰 UI,所以可以用無畫面模式測試——17 項測試,包含補充欄注入、設定中文化、未評分的日子顯示「—」、留空顯示「(無)」這些細節。

為什麼要做成「產生 prompt 讓我複製」,而不是直接串 API?因為我不想在一個離線的小工具裡塞 API key,也不想煩惱 API 串接的成本。複製貼上雖然很手工,但零成本、零風險。

7/2:AI 讀完數據,指出我在騙自己

三天後,我把產生出來的 prompt 貼給 AI 分析。那則對話後來被我的 prompt 健檢報告評為「全 corpus 最佳 prompt」,因為它完整包含了使用者概況、硬限制、數據發現和已回覆的結論。

分析結果寫在交接文件 12.20:

使用者望遠嚴重不足且「按了完成但沒真的看滿 20 秒」、越忙越跳休息;硬限制為單次短休 20 秒–1 分鐘。

第一句話就打臉。我做了一個護眼工具,然後在最忙的時候按跳過;按了「完成」,其實只看了三秒鐘就回來。

這件事我自己是知道的,但知道跟「數據攤在眼前」是兩回事。

同一天,結論變成功能

12.20 的訪談決議:

望遠第一(越長越好,上限 60 秒)、眨眼重次數(固定 10 次 × 2 秒)、眼球操是加分項(時間有剩才排);休息總長 > 20 秒才鎖跳過(剛好 20 秒的最忙時段保留逃生口)、鎖定呈現為禁用變灰 + 解鎖倒數提示。

晚上 6 點 38 分(a8d0214,161 行),短休息的排程邏輯整個改掉:

  • 引導預算 = 休息總長 × 75%
  • 望遠先拿走最低 20 秒
  • 預算放得下 20 秒眨眼才排眨眼
  • 剩下的全部給望遠(上限 60 秒)
  • 還有剩且超過 30 秒才排眼球操

還有一個更關鍵的改動:望遠沒做滿 20 秒之前,「跳過本次休息」和「跳過此步驟」兩顆按鈕都變灰色不能按,按鈕文字改成「望遠完成後可跳過(N 秒)」。

我自己給自己上了鎖。

這個迴圈的樣子

App 記錄我的行為
  → App 把行為組成 prompt
    → AI 分析,指出「你按完成但沒真的做」
      → 訪談決議要改什麼
        → 改 App 的規則
          → App 繼續記錄我的行為

前三個版本從來沒有這個迴圈。Sproutimer 有統計嗎?規劃文件裡寫了,但標記為「規劃中(尚未實作)」,最後沒做。所以我對那個工具的評價永遠只能靠感覺。

後續的連鎖反應

這個鎖後來又生了幾個功能:

  • 7/17:鎖定期間完全沒有離開的方法,萬一開會怎麼辦?加了「長按灰色的跳過鈕 3 秒」強制解鎖(和強制模式的 ESC 秒數一致)。
  • 8/10:AI 分析又發現「按過我出發了但走動次數沒被記錄」。查證後發現是長休設定 1 分鐘時,排程是望遠 20 秒 + 走動 40.5 秒,加起來已經超過總長——走動步驟結構上就不可能完成。這是診斷結論,當下沒改分配邏輯,留給我自己決定要不要把長休調長。
  • 8/10:走動改成跟望遠一樣「部分計次」,走了多久算多久,而不是全有全無。

一個小提醒

這個功能的價值不在技術(它只是字串組裝),在於它讓我的工具開始產生可以被分析的資料。

vibe coding 很容易做出一堆看起來很棒但不知道有沒有用的功能。
如果東西會留下數據,至少可以在三個月後問一個具體的問題:這東西真的有讓我改變行為嗎?

帶走這個:讓工具吐出一段「可以貼給 AI 的文字」

這個功能的技術含量幾乎是零——它就是字串組裝。但它讓一個離線的小工具接上了 AI,而且不用 API key、不用付第二份錢、不會有金鑰外流的風險。

實作上只有三個要點:

  1. 做成純函式:讀資料、回傳字串,不碰 UI。這樣才能用無畫面模式測(我那支測了 17 項)。
  2. 留一個「補充狀況」欄位:讓使用者能加上資料裡沒有的東西,例如「最近熬夜」「有戴隱形眼鏡」。同一份數據配不同的補充,結論會差很多。
  3. 產出要可編輯、可複製:預覽出來讓人改過再貼,而不是直接送出。

內容有六塊:

  • AI 的角色與任務
  • 使用者補充
  • 目前設定
  • 期間總覽
  • 逐日明細
  • 指標說明

「目前設定」那塊常被忘記,但它很重要——沒有它,AI 不知道你的休息只有 20 秒,會給你一堆不適用的建議。

然後拿到結論之後,記得做最後一步:把它變成程式碼裡的規則。
我那次的結論是「按了完成但沒真的看滿 20 秒」,落地成了「望遠沒做滿就不能按跳過」。分析報告看完就忘的話,這整個迴圈等於沒跑。

明天講一個相反的例子:一個需求進來,最後的決議是「不新增任何按鈕、場景檔一行都不改」。


上一篇
Day 19|貓走到第二個螢幕就消失:一個問了三次才問對的 bug
下一篇
Day 21|同一顆按鈕的三種身分:一次「不新增按鈕」的決定
系列文
四個番茄鐘,三次重新來過:我跟 AI 的 30 天開發考古 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言