點樣將 AI 原型推上正式使用
將 AI 原型推上正式使用,即係縮窄「我試用時運作正常」同「其他人使用時依然運作」之間嘅距離。實際上需要做五件事:每次改動都測試主要流程;嚴格控制邊個可以睇同更改邊啲嘢;確保錯誤會喺用家告訴你之前,你已經知道;備份數據,並證明你可以還原;同埋令應用程式喺手機上夠快。呢啲全部都唔需要重寫,它係一份清單,你可以同當初建立原型嗰個 AI 一齊逐項完成。
原型與正式使用:實際改變咗乜
原型只有一位小心嘅用家,就係你。你知道要撳邊個掣,你輸入合理嘅資料,如果出錯,你聳聳肩,然後叫 AI 修好。正式使用則有好多粗心嘅用家、一啲好奇嘅用家,偶爾仲有一個懷有惡意嘅用家。程式碼唔需要變成「企業級」;只需要處理原型從來未遇過嘅情況。
| 範疇 | 原型 | 正式使用 |
|---|---|---|
| 資料 | 樣本數據,容易重設 | 真實客戶資料,唔可以遺失 |
| 用家 | 只有你,以管理員身份登入 | 好多帳戶,權限各不相同 |
| 輸入 | 你自己輸入嘅嘢 | 空白欄位、超大檔案、怪異字元、腳本 |
| 錯誤 | 你喺預覽入面睇到 | 喺你瞓覺時發生 |
| 改動 | 改完睇一睇 | 改動時唔會弄壞人哋依賴嘅嘢 |
| 機密資料 | 測試金鑰點樣都得 | 一旦外洩就會產生費用嘅真實金鑰 |
本指南餘下部分會逐一講解呢啲範疇。
第一步:凍結範圍,並寫下主要流程
喺加強任何嘢之前,先決定第一版係乜嘢。列出三至六個最重要嘅流程,例如「註冊、建立專案、邀請隊友、付款」。呢啲就會成為你嘅測試腳本、監察目標,以及每次改動後要檢查嘅項目。
唔喺清單上嘅嘢,要麼砍走,要麼清楚標示為測試版。令四個流程做到可靠,比令十四個流程做到可靠容易得多。
第二步:似陌生人咁測試,再令測試可以重複
AI 建立工具擅長寫出順利情況下可以運作嘅程式碼。正式使用嘅問題,通常出現喺唔順利嘅情況。用以下方法測試每個主要流程:
- 錯誤輸入:必填欄位留空、一個 5,000 字元嘅名稱、一個冇 @ 嘅電郵、負數數量、一個過去嘅日期。
- 重新整理同返回按鈕:喺結帳途中重新整理;提交表格後按返回。有冇嘢被建立兩次?
- 兩個分頁、兩位用家:用兩個唔同帳戶登入,並嘗試透過更改網址中嘅 ID 打開對方嘅頁面。
- 細屏幕同慢速網絡:手機大小嘅螢幕,以及限速嘅連線(瀏覽器開發者工具可以模擬)。
- 空白狀態:一個全新、冇任何資料嘅帳戶。原型通常用樣本數據建立,冇數據時就會顯得壞咗。
然後令檢查可以重複執行。最少要保留一份書面清單,每次發佈前執行。更理想係要求 AI 為最重要嘅流程編寫自動化測試:
為以下流程加入自動化端對端測試:用電郵註冊、建立專案、邀請第二位用家,以及喺 Stripe 測試模式完成結帳。另外加入測試,確認用家無法透過更改網址查看或編輯其他用家嘅專案。
證明用家「不能」做某件事嘅測試,正正係原型最常缺少嘅。
第三步:原型常常漏掉嘅基本保安
AI 建立應用程式嘅保安問題,大多並唔特別,而係缺少檢查。逐項檢視以下清單;更完整嘅版本可以參閱AI 建立應用程式保安清單:
- **伺服器端授權。**隱藏一個按鈕並唔等於保安。每個讀取或更改資料嘅請求,都必須喺伺服器端檢查登入用家是否有權限。如果你嘅應用程式使用帶有列級規則嘅資料庫,就要檢查佢哋有冇開啟並已經測試。
- **機密資料唔可以入到瀏覽器。**付款、電郵或 AI 服務商嘅 API 金鑰,應該放喺伺服器端環境變數,絕對唔可以放喺前端程式碼。如果你唔肯定呢個係乜意思,請閱讀環境變數同機密資料係乜嘢。
- **伺服器端驗證。**瀏覽器可以被繞過,所以任何重要檢查都要喺伺服器端重做一次。
- **正確處理登入。**使用經過充分測試嘅驗證函式庫或服務,唔好自行編寫密碼儲存方法。我哋嘅為應用程式加入登入功能指南列出咗各種選擇。
- 速率限制:用於登入、註冊、重設密碼,以及任何會發送電郵或調用付費 API 嘅功能。
- 友善嘅錯誤訊息:用家應該見到「發生錯誤」;詳細資料要記入你嘅記錄,而唔係顯示喺畫面上。
- **輪換任何曾經外洩嘅嘢。**如果曾經將正式金鑰貼入對話、提交或截圖之中,就要喺服務商處更換。
一個涵蓋好多範疇嘅提示詞:
檢視呢個應用程式嘅正式使用保安。檢查每個 API 路由是否驗證登入用家擁有佢讀取或更改嘅紀錄、冇機密金鑰送到瀏覽器、伺服器端有驗證輸入,以及登入同重設密碼有速率限制。喺更改任何嘢之前,先列出你發現嘅問題。
要求先列出清單,你就可以睇清楚問題,再決定處理次序,而唔係收到一個龐大嘅改動。
第四步:知道幾時出錯:記錄同監察
喺預覽入面,你會即時見到錯誤。喺正式使用時,應用程式要主動通知你。分三層,由最便宜到最有用:
- **伺服器記錄。**確保錯誤有足夠背景資料可以重現,例如出錯嘅路由、用家 ID(唔係佢哋嘅密碼或信用卡資料)、輸入嘅結構。如果應用程式只係列印到主控台,就要要求 AI 加入結構化記錄。
- **錯誤追蹤。**Sentry 或類似服務會捕捉前端同後端嘅例外、將佢哋分組,並發電郵通知你。對小型應用程式來說,呢類服務嘅免費方案通常已經足夠;請喺佢哋網站上查看最新限制。
- **正常運作時間檢查。**一個外部服務,每隔幾分鐘載入你嘅首頁同一條關鍵 API 路由,如果失敗就發出警報。咁樣可以捉到那啲令應用程式連記錄都寫唔到嘅問題。
再加一個習慣:每次發佈之後,打開正式運行嘅應用程式,並喺真正嘅網址上執行主要流程清單,而唔只係喺預覽上。
第五步:備份同還原方法
有兩樣唔同嘅嘢需要保護,而且好容易混淆。
- **程式碼。**將專案保存喺版本控制之中,咁樣任何改動都可以還原。好多 AI 建立工具會保留檔案嘅檢查點;同步到 Git 儲存庫,則可以喺建立工具以外保留一份副本。
- **資料。**還原程式碼唔會還原資料庫。錯誤嘅遷移,或者有問題嘅刪除按鈕,可能會刪走任何程式碼檢查點都救唔返嘅紀錄。
至於資料,要設定定期備份,並儲存喺應用程式託管以外嘅地方。以 Postgres 資料庫而言,常見做法係將定時 pg_dump 儲存到獨立儲存空間;好多託管資料庫服務亦提供自動備份或時間點還原。然後做大多數人都會跳過嘅一步:將備份還原到一個臨時資料庫,並檢查資料確實存在。
你亦可以要求 AI 令危險操作更安全:刪除前要有確認步驟,並為用家可能想取回嘅資料採用「軟刪除」(將紀錄標示為已刪除,而唔係直接移除)。
第六步:喺手機上都夠快嘅效能
原型之所以感覺快,係因為你係唯一用家,而且數據量好細。正式推出之前:
- **用接近真實大小嘅數據載入。**要求 AI 植入幾千筆紀錄,睇下邊啲頁面會變慢。清單通常需要分頁,而資料庫通常需要喺你篩選同排序嘅欄位上建立索引。
- **縮小圖片。**太大嘅圖片係頁面載入緩慢最常見嘅原因。要求 AI 將圖片調整大小、壓縮,並喺摺疊線以下使用延遲載入。
- **量度。**喺手機模式下,於 Chrome 開發者工具對實時網址執行 Lighthouse。Google 嘅 Core Web Vitals 係一個合理嘅目標:最大內容繪製(LCP)喺 2.5 秒之內、互動到下一次繪製(INP)為 200 毫秒或以下,以及累計版面位移(CLS)為 0.1 或以下。
- **留意「喚醒」延遲。**閒置時會休眠嘅託管服務可以省錢,但係一段冇人用之後嘅第一次訪問會比較慢。對新應用程式嚟講,呢個通常係可以接受嘅取捨;但要知道佢會發生。
有 5,000 筆紀錄時,專案頁面會好慢。加入伺服器端分頁(每頁 25 筆)、為我哋篩選同排序嘅欄位加入資料庫索引,並喺下一頁載入時顯示載入中狀態。
第七步:基本營運事項
有幾樣細嘢,可以將一個業餘應用程式同一個令人信任嘅應用程式分開:
- 自訂網域,並使用 HTTPS。參閱點樣連接自訂網域。
- 交易電郵,由已驗證嘅網域發送,用於註冊確認同重設密碼。點樣由應用程式發送電郵有詳細說明。
- 私隱政策同條款,描述你實際收集嘅資料。唔好抄寫你未有做到嘅合規聲明。
- 支援途徑,即使只係一個有人監察嘅電郵地址。
- 測試同正式使用嘅金鑰分開,付款同電郵嘅金鑰都要分開,並清楚記錄邊個環境用邊組。
第八步:順利交接
遲早會有其他人參與應用程式:自由工作者、新嘅聯合創辦人,或者六個月後嘅你自己。要令佢哋容易接手:
- 一份 README,講明點樣運行、需要邊啲環境變數(只寫名稱同用途,絕對唔寫數值),以及點樣部署。
- 主要流程清單同自動化測試。
- 簡短嘅架構說明:前端、後端、資料庫、第三方服務,以及每樣東西託管喺邊度。
- 存取權限清單:邊個擁有網域、託管、資料庫、付款同電郵帳戶嘅管理員權限。呢啲帳戶要放喺商業電郵之下,而唔係個人電郵。
- 程式碼放喺 Git,最好同步到一個你擁有嘅儲存庫。如果日後可能轉換託管,請閱讀點樣匯出同自行託管 AI 建立嘅應用程式。
AI 可以草擬大部分呢啲文件:
為一位從未見過呢個專案嘅開發者撰寫 README:應用程式做乜、技術堆疊、點樣喺本機運行、佢讀取嘅每個環境變數(只寫名稱同用途),資料庫結構點樣組織,以及點樣部署。
正式推出準備清單
- 主要流程已寫下並測試,包括「不能存取他人嘅資料」
- 每條資料路由都有伺服器端授權同驗證
- 前端程式碼冇機密金鑰;曾經外洩嘅金鑰已經輪換
- 登入同任何會產生費用嘅功能都有速率限制
- 錯誤追蹤同正常運作時間警報,指向一個你會查閱嘅收件箱
- 資料庫備份已儲存喺應用程式託管以外,並且成功測試過一次還原
- 已用接近真實嘅數據檢查分頁同索引
- 自訂網域、已驗證嘅發送網域、私隱政策
- 為下一位接手者準備好 README 同存取權限清單
喺 Mythex 入面處理
如果你喺 Mythex 建立咗原型,大部分步驟都可以喺同一個專案入面用提示詞完成。輸入 /test,Mythex 會似用家咁喺實時預覽上點擊,並報告壞咗嘅流程;參閱 App Testing。金鑰放喺專案機密資料入面,而唔係放喺對話之中;每次代理成功完成一個回合,都會儲存一個檔案檢查點,你可以還原。發佈之後會得到一個實時網址,託管同資料庫都從同一個點數餘額扣費(託管限制解釋應用程式同資料庫點樣休眠同喚醒)。檢查點保存嘅係檔案,而唔係資料庫紀錄,所以你仍然要規劃資料備份。Pro 計劃可以連接自訂網域,並匯出程式碼或同步到你自己嘅 GitHub 儲存庫,方便交接。
常見問題
原型同正式應用程式有咩分別?
原型證明一個概念喺你小心使用時可以運作。正式應用程式則要喺陌生人隨便使用時依然運作:保護佢哋嘅資料、應付錯誤輸入、出錯時通知你,並且可以喺出事後還原。
AI 建立嘅應用程式可以正式使用嗎?
可以,只要你按照檢查任何應用程式嘅方式去檢查佢。AI 寫出嘅程式碼就係普通程式碼;除非你特別要求,它常常會漏咗嘅,係一啲冇咩吸引力但好重要嘅工作:存取權限檢查、輸入驗證、錯誤處理、記錄同備份。
推出之前一定要有自動化測試嗎?
每次發佈之前,你至少要有一個可以重複執行、檢查主要流程嘅方法。對小型應用程式來說,可以係一份書面嘅逐步點擊清單;隨住應用程式愈來愈大,就可以要求 AI 為那些會令你賺錢或蝕錢嘅流程加入自動化測試。
點樣備份應用程式嘅資料庫?
定期匯出資料庫(以 Postgres 而言,用 pg_dump),並將備份儲存喺應用程式本身託管以外嘅地方。然後至少測試一次還原,因為未經測試嘅備份只係一個希望。