21 pass · 1 partial · 2 fail(複驗後判定)
OPENAI SITES / FIELD RESEARCH 01
把平台能力
從猜測變成證據。
我們實作檔案儲存、上傳下載、TTS、WebGPU、Cookie、Session、CORS、API Proxy 與 realtime, 再把同一份 artifact 放進 production。這裡呈現能做什麼、限制在哪裡,以及哪些答案仍需要外部條件。
01 / EVIDENCE
不是功能清單,
是四層交叉證據。
本機瀏覽器、正式 HTTP、Sites 控制面與 source contracts 各自回答不同問題;沒有把其中一層外推成全部真相。
Build、types、security contracts
7 pass · 16 partial · 2 fail · 6 pending
Production revision 3
02 / VERDICT
大多數產品能力可行。
責任邊界必須分清楚。
Sites 適合網站、API、資料與 edge integration;browser 提供裝置能力;外部服務承接長運算、付費模型與可靠即時狀態。
WHAT WORKED
檔案、資料、身份與串流,已跑通完整生命週期。
- R2:put → immediate head / list / get → Range → delete
- D1:migration、insert、select、session rotation / expiry
- CORS、CSRF、安全 Cookie、固定上游 API proxy
- File、IndexedDB、OPFS、TTS、WebGPU;Service Worker install / cache
TWO COUNTEREXAMPLES
兩個反例,比二十個成功案例更值得記住。
- WebSocket一般 HTTP 可到達 route,但不等於 WebSocket 可用;相同 artifact 本機可 echo / reconnect,production Upgrade 回 HTTP 500。
- Environment重部署同一 saved version 沒更新 live value;建立新 version 後才套用 revision 3。
426HTTP route 存在,但請求沒有升級;尚未建立 WebSocket。
101成功切換協議;只有這個狀態才代表 WebSocket 握手完成。
500正式環境 Upgrade path 失敗;目前無法雙向傳送訊息。
03 / CAPABILITY MAP
先問能力在哪一層,
再決定怎麼做。
同一個產品需求往往跨越三層。把 Browser API 當成 Sites server 能力,或把外部運算塞進 Worker,會直接導致錯誤架構。
直接可用
Browser 原生能力
檔案、裝置內儲存、語音合成、WebGPU 與離線體驗都由瀏覽器提供。Sites 負責把它們放進可信的網站流程。- File / Blob
- IndexedDB / OPFS
- Silent TTS
- WebGPU
- Service Worker
Production verified
Sites 全端能力
Worker API、D1、R2、session、CORS、SSE 與固定上游 proxy 已在公開自訂網域 production deployment 實際重現。- Worker routes
- D1 records
- R2 objects
- Cookie session
- SSE / proxy
需要整合
外部服務邊界
高品質 TTS 音檔、STT、長時間運算、GPU 模型與可靠多人即時協作,需要外部 provider;Sites 適合擔任安全的 BFF。- Audio assets
- Speech-to-text
- GPU inference
- Background jobs
- Realtime state
04 / REFERENCE FLOW
一條安全、可維護的資料路徑。
瀏覽器負責選檔與互動;Sites route 驗證身份、來源、型別與大小;R2 保存 bytes,D1 保存 metadata;下載再次授權。
- 01Browser
File / UI / local cache
- 02Sites route
Auth / validation / limits
- 03D1 + R2
Metadata / object bytes
- 04Authorized output
Range / SSE / download
05 / FULL MATRIX
31 項研究結果,
保留所有灰色地帶。
PASS 是核心路徑已在 production 重現;PARTIAL 是證據仍有限;FAIL 是反例已推翻成功判定;PENDING 需要額外帳號、網域、provider 或獨立 project。
早期 custom policy 匿名 401;切換 public 後匿名 200;owner MFA UI 未完成
需要 workspace member 與外部帳號
需要第二身份與 access-policy 變更
偽造 identity header 會被移除;真實登入 identity 待驗證
早期 private 模式確認登入與 MFA gate;目前 public 模式不觸發 SIWC;callback / sign-out 待驗證
舊 token 立即 401;新 token 200
同一 saved version 重部署未更新 live value;新 version 才生效
Secret read 為 null;未進 runtime / client;最終已移除
Insert / select / cleanup 通過;跨 user 待第二身份
Production schema 可重複 insert / select,migration 未重建表
需要可破壞的獨立 project
FixedLengthStream 與拒絕矩陣通過;大檔上限待測
Put 後 immediate head / list / get 全部成功
3 events 依序抵達、client abort;upstream cancellation 待證據
本機 101 / echo 通過;production 兩次 upgrade 都 HTTP 500
12 次 sequential request median 1241.3 ms;非 cold-start benchmark
sites.eraser.tw:CNAME / TXT、provider、SSL 均 active;HTTPS / Markdown / runtime 200
需要 apex DNS control
Timeout / 503 / 429 mapping 通過;abort propagation 待證據
需要另一 artifact 或獨立 project
兩個 Chromium surface 通過;unsupported / denied instance 待測
Schema upgrade 與 round-trip 通過;eviction recovery 待測
Type / empty / oversize / JSON / origin 均拒絕;partial transport 待測
Attachment、prefix / suffix / invalid Range 通過;跨 owner 待測
Silent queue / cancel 通過;實際發聲與非 Chromium 待測
需要付費 provider、secret 與成本授權
兩個 browser surface device lifecycle 通過;Safari / Firefox 待測
Secure / HttpOnly / SameSite / host-only / rotation / expiry / CSRF 通過
Exact allowlist;unknown / null / bad method / bad header 均拒絕
Fixed upstream、header filter、timeout、oversize、5xx mapping 通過
Custom domain install / update / cache 成功;首次 navigation fallback 未取得預期離線頁;SIWC / logout 待測
06 / LIVE LAB
不要只相信這份報告。
在你的瀏覽器再跑一次。
24 項 probe 會使用產生的測試資料,完成後自動清理。Production 預期 WebSocket 兩項仍失敗;Service Worker 首次尚未控制頁面時會列為 LIMITED。它不開啟你的檔案、不播放聲音,也不要求 camera、microphone 或 location permission。
展開 24 項逐項結果
Browser / Web Platform
client- File/Blob尚未執行WAIT
- File picker fallback尚未執行WAIT
- IndexedDB schema upgrade尚未執行WAIT
- OPFS round-trip尚未執行WAIT
- Storage quota/persistence尚未執行WAIT
- sessionStorage尚未執行WAIT
- Silent TTS queue/cancel尚未執行WAIT
- WebGPU device lifecycle尚未執行WAIT
- Service Worker lifecycle尚未執行WAIT
Sites runtime / storage
server- Worker runtime尚未執行WAIT
- D1 persistence尚未執行WAIT
- R2 upload/download尚未執行WAIT
- Upload rejection matrix尚未執行WAIT
- HTTP Range valid尚未執行WAIT
- HTTP Range rejection尚未執行WAIT
- Cookie + D1 session尚未執行WAIT
- Session rotation/expiry尚未執行WAIT
- CORS allowlist尚未執行WAIT
- CORS rejection matrix尚未執行WAIT
- SSE streaming尚未執行WAIT
- WebSocket echo尚未執行WAIT
- WebSocket reconnect尚未執行WAIT
- Fixed API proxy尚未執行WAIT
- API proxy failure policy尚未執行WAIT
07 / BOTTOM LINE
Sites 可以成為產品主體。
但不能假裝所有東西都在 Sites 裡。
UI、SSR、CRUD、files、identity、HTTP streaming 與 API orchestration 適合留在 Sites。可靠 realtime、GPU、長時間背景任務與付費語音模型,應交給外部服務。
回到能力圖譜