簡短的答案
不行。Whizi沒有離線模式。為了產生回覆,Whizi會把這次請求合理需要的資訊,傳送給OpenRouter和一個被路由到的模型供應商,或是傳送給所選功能所使用的另一個供應商,所以每一則答案都一定是與Whizi以外的公司之間的一次網路往返。主機代管、同步的對話、媒體檔案、帳號狀態、用量限制、報告,以及安全與維運處理,全部都在Cloudflare Workers、D1、R2和Durable Objects上執行,這代表你正在輸入的這段對話,同樣也存在伺服器上。
基於同樣的理由,模型清單也是在伺服器端。選單是由Whizi後端透過GET /api/models提供的,而寫死在網頁版和行動版用戶端裡的模型清單,只是在那次呼叫連不上時使用的離線備援。備援清單只負責畫出選單:就算在沒有網路的情況下還看得到某個名稱,也不代表背後真的有東西能回答。
| 需要連線的項目 | 在你裝置上發生的事 |
|---|---|
| 每一則模型回覆,不論哪個方案 | 你選擇的主題,會存到本機儲存空間,下次造訪時還原 |
| 載入你的對話清單和任何對話內容 | 解析ChatGPT或Claude匯出檔,瀏覽器會在送出任何內容之前先讀取這份檔案 |
| 傳送訊息、編輯訊息、切換版本 | 從答案裡的檔案卡片建立.xlsx或.docx檔 |
| 網路搜尋、語音、圖片生成 | 行動應用程式對近期對話的快取,說明如下 |
| 上傳檔案,以及透過簽章網址檢視已儲存的媒體 |
行動應用程式在裝置上保留了什麼
隱私權政策對此說得很明確。行動應用程式在已登入或訪客裝置上,最多會保留40則近期對話的本機快取,而這個快取並不是另一份雲端備份。它如何被清除,以及帳號上其他所有資料存放在哪裡,都寫在Whizi把資料存在哪裡裡。
近期對話的快取並不是離線閱讀模式,也完全不會改變實際運作發生的地方。對話和訊息會保留在帳號上,直到你刪除它們或刪除帳號為止,而新的回覆仍然必須透過網路連到供應商。
你的方案同樣是在伺服器端判斷的。計費是以個別帳號為單位,方案等級只從該帳號自己的訂閱狀態、在同一個地方推算出來。兩個平台如何共用同一個帳號,請見Whizi在行動裝置上。
回覆進行到一半時斷線
生成作業是在伺服器上、每個對話各自的Durable Object裡執行的,所以在串流進行到一半時關掉分頁,並不會中止這則答案,回覆仍然會被保存下來。重新開啟的分頁或第二台裝置,可以透過GET /api/conversations/:id/generate/active重新接上正在進行中的生成作業。回來之後,重新載入對話,就能讀到已經保存的內容。
只有在一開始的極短時間內,這個機制不適用。如果用戶端在與上游的連線完成之前就斷線,伺服器會記錄Generation aborted before it started.,並回覆內容為空的HTTP 408,代表根本沒有任何內容送到模型。
停止的判斷權在伺服器,而不是用戶端:協調器會取消對供應商的讀取,保存已生成的部分答案,釋放鎖定,並把未送達的這一輪對話額度退回。串流過程中所有字串的完整清單,以及各自代表的意思,都列在訊息無法送出裡。
呼叫無法完成時你會看到的字串
Whizi會顯示當時正在進行的那個呼叫失敗的訊息,而不是單一的通用訊息,所以你看到的字串會依你當時在做什麼而不同。以下每一則都是逐字引用,並附上它所對應的文件說明條件。
| 字串 | 對應的說明條件 | 說明位置 |
|---|---|---|
Failed to send message. | 當傳送失敗、且後端沒有提供任何訊息時,網站顯示的備援提示訊息 | 訊息無法送出 |
Could not load your chats. Please refresh to try again. | 對話清單載入失敗時顯示的提示訊息 | 訊息無法送出 |
Failed to retrieve session token. | 在對話清單、載入對話、刪除、重新命名或上傳呼叫之前,權杖擷取沒有回傳任何內容時擲出 | 登入與帳號存取 |
The import could not be finished. Check your connection and try again. | 匯入過程中發生的其他任何上傳失敗 | 對話匯入錯誤 |
Something went wrong. Please close and try again. | 分享對話框的通用錯誤,只有在失敗本身沒有附帶訊息時才會顯示,例如斷線或收到HTML錯誤頁面 | 分享對話 |
The realtime voice connection failed. | 在websocket發生錯誤事件時顯示 | 語音模式無法使用 |
The realtime voice connection was closed. | 在設定完成後websocket關閉時顯示 | 語音模式無法使用 |
Connection error | 語音疊層畫面中,語音連線失敗時的狀態標籤 | 語音模式無法使用 |
That didn't send. Check your connection and try again. | 其他所有失敗情況的意見回饋備援訊息 | 疑難排解 |
語音功能值得特別說明一下,因為它的架構讀起來像是獨立運作,但其實不是。Worker會產生一個短效權杖,瀏覽器再直接對Google開啟一個WebSocket連線,所以音訊完全不會經過Whizi的後端伺服器。這是一項隱私特性,而不是離線特性:連到Google的仍然是一個socket連線,而用來開啟它的工作階段權杖,是由worker產生的。
訊號中斷前該做的事
以下這些做法都不會讓你在沒有連線的情況下用到能運作的模型,重點是讓你不會被困住、拿不到自己的內容。
把你的資料帶在身上。 GET /api/account/export會把帳號資料整理成一份可下載的JSON檔案,可以在設定的帳號底下透過匯出資料存取。離線時真正重要的但書是:媒體是以中繼資料加上簽章網址的形式匯出,而不是內嵌位元組,所以JSON會保留這筆紀錄,但圖片本身仍然需要另外抓取。帳號裡存有哪些內容,列在Whizi把資料存在哪裡裡。
趁還有訊號的時候,把答案輸出成檔案。 一則對話答案可以產生一個圍欄區塊,網站會把它渲染成檔案卡片,並在瀏覽器裡轉成真正的.xlsx或.docx檔案。建立檔案這個動作是在本機完成的,但產生這則答案的過程並不是。
等你落地之後再匯入,不要在路上做。 選擇匯出檔是本機作業,但上傳不是,不過就算上傳過程中斷線也不會有任何損失,因為每一則對話都是以帳號加上來源加上來源ID為鍵值,只會落地一次。失敗時出現的字串列在對話匯入錯誤裡。
- Whizi沒有離線模式,也沒有在裝置端產生答案的路徑
- 每一則回覆都是對被路由到的模型供應商發出的一次網路請求
- 模型選單是由後端提供的,內建清單只是備援
- 行動應用程式最多會快取40則近期對話,而這個快取並不是另一份雲端備份
- 你的方案等級是伺服器根據你自己帳號的訂閱狀態推算出來的
- 就算用戶端斷線,回覆也不會消失:生成作業會在Durable Object裡繼續進行
- 出發前先在設定的帳號底下,把你的帳號匯出成JSON檔
- 匯出檔裡的媒體是簽章網址,之後仍然需要另外抓取
常見問題
Whizi在沒有wifi的飛機上能用嗎?
不行。每一則回覆都是由透過網路連線的模型供應商產生的,所以沒有連線時,既沒有路徑通往模型,也沒有路徑載入你的對話清單。
我的手機在生成過程中斷了訊號,我可以馬上在筆電上開始一個新的生成嗎?
不一定,因為每個帳號同一時間只能執行一個生成作業。只要每位使用者的鎖定還持有著,第二次嘗試就會被拒絕,並顯示"Generation already in progress. Please stop it or wait for it to finish."。這個鎖定並不是永久的:一旦持有者被判定為孤兒或已經卡住,鎖定就會變成可以被搶走,過期的鎖定也會定期被清除。
在飛航模式下,我可以在手機上捲動查看舊對話嗎?
只能查看行動應用程式已經快取的部分,就算在快取範圍內,圖片也是另外一回事。生成的圖片是存放在伺服器端,並透過簽章網址回傳的,所以舊對話串裡的圖片,是在你查看的那一刻才被抓取的,而不是存在裝置上。
行動裝置上的訪客帳號,會改變上述任何一點嗎?
不會。隱私權政策所寫的本機快取,不論是已登入還是訪客裝置都一樣適用。訪客憑證本身是存放在裝置上的,但Whizi會保存一組單向推導出來的識別碼,用來辨識訪客的個人資料、同步資料、驗證訂閱存取權限,並在之後把這些資料連結到某個帳號,而這些全都是伺服器端的作業。帳號匯出對訪客工作階段同樣有效,因為訪客也擁有真實的對話和記憶,在裝置消失之前可能會想先取出來。
匯出檔裡的媒體連結,能維持多久有效?
上傳的附件和生成的媒體,設定為最多在30天後過期,也可能被你更早刪除,或是在刪除帳號時一併刪除。一旦某個物件超過保留期限,請求會回覆"Media has expired.",也就是HTTP 404 media_expired,而不會回傳實際內容。想保留的東西,請趁還有連線時先抓取下來。