Pomofocus 最後一批功能做完的那天是 8 月 10 日。交接文件裡,好幾節的結尾都有類似這樣的句子:
開機自動啟動的登錄機碼寫入、以及提醒文字的實機顯示效果未實機驗證,建議下次開機實測。
收工按鈕的實際點擊手感、evening → 睡眠 → 隔天喚醒後系統匣是否確實存活未實機驗證,建議下次真的用它收工一次觀察。
實機未驗:選單實際切換後跨階段的手感。
AI 沒有假裝測試通過就等於功能可用,而是誠實地畫出邊界。
這個功能是寫一條登錄機碼到 HKCU\Software\Microsoft\Windows\CurrentVersion\Run,用 OS.execute("reg", [...]) 執行。
實機結果:我有打開這個設定,開機的時候它會自己跑起來。
這是這批功能裡唯一一個「照原本設計運作、而且我真的在用」的。
這個功能的來由是這樣:我的習慣是每天用「關閉程式」觸發疲勞評分,評完讓電腦睡眠,隔天再手動開機。而睡眠喚醒不是開機,不會觸發 Run 機碼,所以開機自啟幫不上忙。
當時的決議是:與其在 Windows 層面想辦法讓睡眠喚醒後自動重啟,不如把「評分」和「真的結束程式」分開——加一顆「收工」按鈕,評完分縮到系統匣,程式繼續在背景跑。
聽起來很合理。實作也很乾淨:把原本的退出流程抽成共用函式,加一個 end_day(),沒有系統匣支援時自動退回原本的退出行為。測試全過。
然後我一次都沒用過。
因為我的習慣還是「關掉程式」。那顆收工按鈕就躺在設定頁裡,我每天照樣按關閉。
至於「睡眠喚醒後系統匣圖示還在嗎」這個問題——答案是還在,但原因不是收工按鈕有效,是我根本沒關掉程式的那些日子它就一直開著。
8 月 10 日那天把單一的「自動開始下一段」拆成四種模式:不自動、自動休息、自動番茄、兩者都自動。
我最後選的是自動番茄——休息結束自動開始下一顆番茄,但工作時間到不會自動進休息,會先進入逾時狀態、貓咪出來提醒。
這個選擇剛好對應我最原始的痛點。
Day 2 講過第一版失敗的原因之一是「休息完忘記按開始,於是一路坐下去」。自動番茄正好解掉這件事。
而反過來的自動休息我沒開,因為我想保留「自己決定什麼時候停」的那一刻。
這是唯一一個「說 PASS 但我實際用起來不對」的。
我按最小化,工作列上還是會看到 exe 的圖示。
這其實文件裡就寫了,是 Godot 的引擎限制:
⚠️ 已知限制:Godot 不允許隱藏主視窗,「縮匣/迷你」時主視窗改用最小化(工作列仍留圖示,引擎限制)
所以嚴格說不是 bug,是已知限制。
但我期待的是「縮到系統匣就該從工作列消失」,而測試只驗證了「視窗形態切換正確」,沒有人去驗證「使用者的期待有沒有被滿足」。
這件事在第二版的我寫了 685 行 C++(Day 11)解決這個問題,但第四版我選擇接受它。
雖然他的確是個困擾,但它從來沒有真的妨礙我休息。
「測試通過」和「功能有用」之間,隔著一段只有時間能填的距離。
寫給正在用 AI 開發的人:可以在待辦清單裡新增一欄叫「還沒被生活驗證」。
AI 可以幫我們把功能做出來、可以幫我們寫測試、可以告訴我們哪些沒驗到,但它沒辦法幫我們真正使用兩個月,並了解是否有達到我們的目標。
測試通過之後,功能其實只完成一半。另一半要等時間。所以待辦清單多了一欄:
| 功能 | 怎樣算真的成立 | 什麼時候會知道 |
|---|---|---|
| 開機自動啟動 | 重開機後它自己跑起來 | 下次重開機 |
| 收工鈕 | 我真的用它收工,而不是照舊按關閉 | 一週後回頭看 |
| 自動開始模式 | 我選定其中一種並且沒再改 | 兩週後 |
第三欄是關鍵。寫下「什麼時候會知道」,這件事才會真的被回頭檢查,否則它就永遠停在「已完成」的狀態裡。
而最值得記住的是「收工按鈕」——它設計沒有錯,邏輯乾淨、測試全過,但它假設了一件沒被驗證的事:我會改變自己的習慣。
**功能可以被測試驗證,習慣不行。**下次遇到「這個功能需要使用者改變行為才成立」的情況,先問自己願不願意改,再決定要不要做。
明天講這份文件裡另一種紀錄:那些寫著「還沒修」「不在這次範圍」的段落,以及為什麼我覺得把債寫下來比還債更重要。