iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
Vibe Coding

一個 Vibe Coding 專案從原型到有人在用系列 第 22 篇

17 小時發了 8 版,第一個陌生人回報:都打不開

  • 分享至 

  • xImage
  •  

你在 GitHub 上按下發布,新版就出去了。你知道是誰在下載它嗎?他下載的,是你今天發的第幾版?

從今天起:把東西交給陌生人

前 21 篇講了三件事:怎麼對 AI 下指令、改完怎麼確認沒改壞、改了一千多次怎麼不爛掉。這三件事,都發生在我自己的電腦和 CI(每次推上去自動跑的檢查)裡。

從今天起是 Day 1 路線圖的第四段:上線。usage(我做的開源小工具,顯示 Claude Code、Codex 這些 AI 工具用了多少額度)到 10 月 4 日發了 225 個版本,有 19 個 issue(問題回報)是別人開的。今天從第一個別人開的 issue 講起。

5 月 22 日,17 個小時發了 8 版

5 月 22 日凌晨 0 點 8 分,usage 發了 v0.6.0。這一版加了五種語言的介面,翻譯文字放在一個叫 i18n.json 的檔案裡。

接下來,又陸續發了 v0.6.1 到 v0.6.7。最後一版是下午 5 點 16 分,前後 17 個小時,8 個版本。(這天晚上又發了 4 版,全天一共 12 版。)

每一版都附了一個 usage.app.zip,Mac 使用者下載、解壓縮、打開,就是選單列上的那個小工具。

這 8 個 zip,我最近全部下載回來檢查。裡面都沒有 i18n.json:

$ unzip -l usage.app.zip | grep -c i18n.json
0

v0.6.0 到 v0.6.7,8 個都是 0。打包的設定檔裡,要放進 App 的檔案清單漏了它。

到 10 月 4 日,這 8 個 zip 一共被下載了 44 次(扣掉我這次檢查下載的 8 次)。下載數是累計的,分不出哪幾次發生在 5 月 22 日;但至少有一個人是那天下載的,就是下面這位。

17 點 36 分,第一個陌生人的 issue

v0.6.7 發出去 19 分鐘後,一位使用者 jack24254029 開了 usage 第一個別人開的 issue(#4),標題是:

0.6.0 以上任一版本都開不了

重現步驟只有兩行:下載 0.6.0 以上任一版本,打開直接跳出 Launch Error(啟動失敗)。

一般人到這裡,只會看到那個視窗。他多做了一步,附了一張截圖:17 點 32 分,他打開終端機,直接執行 App 裡面的程式,把完整的錯誤訊息印了出來:

NotADirectoryError: [Errno 20] Not a directory: '/Applications/usage.app/Contents/Resources/lib/python313.zip/i18n.json'
2026-05-22 17:32:02.976 usage[3115:10421949] Launch error

錯誤訊息指名的就是 i18n.json,而且路徑很怪:程式在 python313.zip 這個壓縮檔「裡面」找它。打包時,程式碼會被壓進這個 zip;程式找翻譯檔的寫法是「找跟我放在一起的那一個」,到了 App 裡,「跟我放在一起」就變成壓縮檔裡面。從專案資料夾直接跑,翻譯檔就在程式旁邊,不會出事。

所以要修兩件事:把翻譯檔放進 App,也讓程式改去 App 的資源資料夾找。issue 開出來 82 分鐘後,修好的 v0.6.8 發出去。issue 在前一分鐘關閉,底下留言:已在 v0.6.8 修復,請下載測試,還有問題再開新 issue。

https://ithelp.ithome.com.tw/upload/images/20261006/20183178h14lgZsd2j.png

我把 v0.6.8 的 zip 也拿回來看,翻譯檔在裡面了:

$ unzip -l usage.app.zip | grep i18n.json
    13067  05-22-2026 18:57   usage.app/Contents/Resources/i18n.json

只看檔案在不在,看不到第二件事:程式有沒有去對的地方找。Day 8 寫過 9 月的一次「打包後一開就崩」,那次之後的做法是:發版前,打開打包好的 App。5 月這次是同一種錯,比 9 月早了三個半月,那時發版流程裡還沒有「打開它」這一步。能同時抓到兩件事的,就是打開它。

隔天,他又回來了

5 月 23 日晚上,同一個人開了第二個 issue(#5):

希望能在 App 內檢查有無新版本,最理想的結果是可以做到自動檢查、自動更新,或是讓使用者設定是否自動檢查、自動更新,也可以提供按鈕立刻檢查版本

最後一句是:「謝謝你的小工具,很好用」。

從他的位置看,這個要求很合理。他前一天的標題寫「任一版本」,代表他不只試了一版。這次他開了 issue,修好時會收到留言通知;沒開 issue 的人,只能自己回 GitHub 看。5 月 22 日一整天(台灣時間),usage 發了 12 版,App 裡沒有任何地方會告訴使用者:有新版了。

回覆這個 issue 時,我列了更新檢查的規劃。其中一條:最近發版太頻繁,所以 24 小時內最多提醒一次,免得使用者每次打開 App 都被跳通知。他看了之後回了一段:

關於釋出新版本的頻率,我的看法是你可以當天收尾的時候評估看看是不是需要釋出新版本,的確是可以不用每次有新功能就發一版
小而頻繁的 commit 是好的,Release 的頻率你可以再評估看看

我從這段讀到的是:commit(存一次程式改動)是我自己的存檔,release(發一個大家能下載的版本)是交到他手上的東西。

5 月 24 日,v0.11.0 加上了更新檢查:打開 App 時去 GitHub 查最新版,有新版跳出視窗,可以「前往下載」「稍後再說」「跳過此版本」。

發版的頻率,後來怎麼變

我把到 9 月 30 日為止的 223 個版本,照台灣時間的發布日子數了一次:

期間 版本數 平均每天 一天 3 版以上的天數
5/17–5/23(第一週) 34 約 4.9 4
5/24–6/23 66 約 2.1 14
6/24–9/30 123 約 1.2 16

頻率是往下走的,但不是他留言之後馬上降:5 月 27 日,又一天發了 11 版。

https://ithelp.ithome.com.tw/upload/images/20261006/20183178GeBRtLHWdn.png

數一下你自己的發版

如果你的專案在 GitHub 上發版,在專案資料夾裡跑下面這行(要先裝好 GitHub CLI 並登入),會列出你發最多版的 5 天,日期換成台灣時間:

gh release list --limit 500 --json publishedAt \
  --jq '.[] | .publishedAt | fromdateiso8601 + 8*3600 | strftime("%Y-%m-%d")' \
  | sort | uniq -c | sort -rn | head -5

usage 跑出來是:

  12 2026-05-22
  11 2026-05-27
  11 2026-05-18
   6 2026-07-15
   5 2026-08-02

publishedAt 是 UTC 時間,+ 8*3600 換成台灣時間。不換的話,5 月 22 日會被數成 10 版:UTC 和台灣差 8 小時,一天從哪裡切開不一樣,數出來就不同(Day 21 的時區,又出現一次)。

數完再看排第一的那天:那天的每一版,都有人下載嗎?下載的人怎麼知道下一版出來了?

發版後,也可以馬上把給使用者的那個檔下載回來,先確認這次新加的檔案在裡面。這只能先篩掉「檔案沒放進去」;程式找不找得到它,還是要打開 App 才知道:

gh release download v0.6.8 -p usage.app.zip
unzip -l usage.app.zip | grep i18n.json

今天可以帶走的

工作單(交給 AI 的任務說明)裡有一格「做完怎麼算對」,Day 4、Day 8 到 Day 21 各在這格加了幾行。上線這一段,從今天這兩行開始(沒用過這張工作單,也可以直接把這兩行交給 AI,當作發版的驗收要求):

做完怎麼算對:
- (Day 4、Day 8 到 Day 21 加的幾行)
- 發版:發出去後馬上把使用者會下載的那個檔下載回來,先確認這次新加的檔案在裡面(貼出 unzip -l 那幾行),再打開打包好的 App,確認能正常啟動;只在自己的專案資料夾跑過不算數
- 同一天要發第二版以上:說明這一版為什麼不能等到當天收工再一起發。沒人回報不代表上一版沒事:5 月 22 日第一個回報,在第一版發出 17 個多小時後才來

當時對我來說,發版是一個存檔點;對下載的人來說,每一版都是他要下載、打開、可能卡住的一次。

5 月 24 日晚上,加了更新檢查的 v0.11.0 發出去 26 分鐘後,又一個不認識的人送來一個修正(PR #6,把改好的程式送來請我合併)。他說 v0.10.0、v0.10.1、v0.11.0 一打開就崩,錯誤訊息的最後一行,跟 #4 一模一樣。明天看這一次。

參考資料

  • usage 專案:https://github.com/aqua5230/usage
  • issue #4〈0.6.0 以上任一版本都開不了〉:https://github.com/aqua5230/usage/issues/4
  • issue #5〈希望能提供檢查 / 更新版本機制〉:https://github.com/aqua5230/usage/issues/5
  • v0.6.8 修正:https://github.com/aqua5230/usage/commit/086f1fe
  • v0.11.0 更新檢查:https://github.com/aqua5230/usage/commit/58677c1
  • GitHub CLI gh release list:https://cli.github.com/manual/gh_release_list

上一篇
CI 連續綠了 42 輪,換到台灣時間的 Windows 就紅
系列文
一個 Vibe Coding 專案從原型到有人在用 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言