Fix with AI:發布失敗,一按即修
喺 Mythex 發布失敗時,對話框而家會講清楚實際發生咗乜嘢,而且每次失敗都會俾你兩個掣:Fix with AI 同 Try again。Fix with AI 會將失敗原因同你個 app 印出嘅內容交俾代理,佢就可以修正項目再發布一次;如果你個 app 其實冇問題,佢就直接重新發布。我哋亦唔再將一啲實際上源於 app 本身嘅問題歸咎於「我哋呢邊」,並開始捉到一啲喺上線幾分鐘之後先爆開嘅 app。
有咗咩改變
每次失敗都有 Fix with AI
以前,有啲失敗會顯示 Fix with AI,有啲就只得 Try again。咁樣分,係睇吓問題似唔似我哋呢邊嘅責任:如果似係我哋嘅問題,我哋唔想代理花你嘅 credits 去追查一啲本身冇問題嘅代碼。
咁樣等於要你自己估下係邊一類失敗。而家每次失敗都會提供兩個掣。代理會攞到失敗嘅類型同背後嘅輸出,所以如果 app 有問題就修 app,如果冇問題就重新發布。你唔使自己分辨係邊種情況。
例外係嗰啲答案唔係代碼嘅情況。連結名稱已被佔用,會建議其他名稱;credits 用完,就會提供增值方法。
清楚講明發生咗乜嘢嘅訊息
有幾種失敗以前只會變成「我哋呢邊嘅問題,再發布一次就得」,呢句其實唔真確,再發布亦從來解決唔到。而家呢啲失敗各自有訊息:
- 「你個 app 發布後冇啟動。」 App 已經發布,但始終冇開始接受連線。最常見嘅原因係佢聽嘅係另一個 port,或者只聽
localhost。已發布嘅 app 必須喺0.0.0.0同$PORT指定嘅 port 上聽。我哋而家唔再靠等固定時間去碰運氣,而係會檢查 app 嘅 port 是否真係接受連線。 - 「呢個檔案太大」/ 檔案太多。 靜態網站每個檔案有大小上限(視乎網站類型,大約 25 至 30 MB),檔案數目上限係 20,000。我哋而家會喺上傳前先量度成個資料夾,每種檔案都用同一方法,而訊息會列出所有超過上限嘅檔案。
- 「你個 app 啟動後即刻停咗。」 通常係缺咗設定,例如環境變數或 secret,或者第一個請求就崩潰,或者啟動指令有錯。
捉到上線後爆開嘅 app
發布可以成功,但 app 幾分鐘之後先失敗:可能不斷崩潰,或者運行緊但停止接受連線。Mythex 會定期檢查已發布嘅 app。如果 app 喺幾分鐘內反覆崩潰,或者運行緊但完全冇連線,發布就會標記為失敗,你會收到電郵,而項目會顯示該訊息同 Fix with AI。
如果 app 崩潰咗一次,之後自己恢復咗,就唔會當係發布失敗。如果原因係 app 用盡記憶體,你會另外收到一封關於呢件事嘅電郵。
當我哋將一個上線中嘅 app 標記為失敗,亦會儲存當時 app 印出嘅內容。你唔會見到原始輸出,但呢啲就係 Fix with AI 俾代理嘅內容,所以佢係從真正嘅錯誤開始,而唔係估嘅。
點樣使用
- 照常撳 Publish。
- 如果失敗,睇吓對話框入面嘅訊息。佢係用嚟講清楚發生咗乜嘢,而唔係只話有嘢出錯。
- 撳 Fix with AI。代理會讀取構建輸出或 app 嘅日誌,修正項目,然後你就可以再發布。
- 如果訊息話你個 app 冇問題,例如「發布服務暫時繁忙」或「發布被中斷」,通常撳 Try again 就夠。
- 如果你收到電郵,話上線嘅 app 不斷崩潰,就打開項目:同一個訊息同 Fix with AI 已經喺度等你。
再發布時,除非訊息話連結名稱有問題,否則保持相同嘅連結名稱。
點解我哋要做呢個功能
發布失敗常常係一個人第一次撞到嘅實牆。App 喺預覽入面運作正常,撳咗 Publish,卻起唔到嚟。對非技術人員嚟講,「去睇下你嘅日誌」並唔係一個佢哋做得到嘅建議。Fix with AI 將呢一刻變成一撳就搞掂,而誠實嘅訊息就令你睇嘅時候,指向真正嘅問題。
限制
- Fix with AI 會用到代理,所以同任何訊息一樣會用 credits。
- 佢可以修正項目入面嘅嘢:代碼、設定、啟動指令。佢修唔到已被佔用嘅連結名稱、未驗證嘅電郵,或者空嘅 credits 餘額。
- 有啲問題需要你自己決定,例如係咪要將一個大檔案移去 Storage,或者將佢縮細。
所有訊息同每個訊息嘅處理方法,都喺文件入面:發布疑難排解。如果想學更廣泛嘅技巧,即係點樣喺出錯時搞掂,可以睇吓點樣為 AI 建構嘅 app 除錯。