Site project
Site 有 title、slug、status、project id 和 live URL。project id 是後續 version、domain、access、deployment 的核心識別。
下一步:整理 project metadata 能改哪些欄位。ai-lab.oao.tw / sites playground
Playground map
最後更新:2026-08-01
這頁不是官方功能大全,而是 AI Lab OAO 的能力探索地圖。每個設施代表一種 Sites 能力:實測成功就蓋章,只看到一部分就先標記,還不確定的就排進下一輪實驗。
Sites 跟 VPS 的心智模型不同。VPS 像一台自己顧的機器;Sites 比較像一組已經鋪好軌道的 edge site runtime:source 進來,build 成 version,再發布到 production。
Site 有 title、slug、status、project id 和 live URL。project id 是後續 version、domain、access、deployment 的核心識別。
下一步:整理 project metadata 能改哪些欄位。可以綁定自訂網域,並分開觀察 domain status、provider status、SSL status 和 DNS validation。
下一步:記錄 domain 更新與 SSL 生效時間。已看到 public 和 custom access 模式。公開網站要把 repo、build output 和 production 內容都當成公開材料檢查。
下一步:實測 custom access 對訪客體驗的影響。GitHub 可以作為協作正本,Sites source repo 則在部署前對齊 exact commit。兩者角色不同。
下一步:把 source sync 失敗情境整理成 troubleshooting。部署不是只把 HTML 丟上去。Archive 需要保留 Sites runtime 期待的結構,例如 server entry 和 hosting 設定。
下一步:整理不同 build output layout 的可行性。保存 version 會留下 version number、commit sha、archive hash、檔案數和大小。Save 不等於 publish。
下一步:比較多個 version 的差異與截圖。可以把 saved version 發布到 production,部署狀態會經過 pending、publishing、succeeded 這類階段。
下一步:補上失敗部署時的觀察方式。Version history 已存在,但還沒實測把 production 切回舊 version 的流程。
下一步:選一個安全改動測試 rollback。Build output 已用 request handler 回應 HTML、CSS、JS,也已部署公開 JSON probe。Sites 不只是純靜態檔案目錄。
已延伸到/api/weather?location=... 這類 query-based API。
/api/health 已在 production 驗證,可以由 request path 切到 runtime JSON response。
/api/health 已可回 JSON、no-store cache header、probe header 與 server-generated timestamp。
一般瀏覽器仍收到 HTML;request 帶 Accept: text/markdown 時,Sites route 會回傳對應的精簡 Markdown。畫面不變,但網站多了一個 agent 入口。
curl 驗證。
Production runtime 已能呼叫外部天氣 API;但 Open-Meteo 從 Sites 出口回 429,最後以 wttr.in fallback 成功。
打開 Weather Cacheproduction runtime 已設定 demo password 與 session signing secret。handler 可讀取值完成驗證,但 secret 不會出現在 Git、前端或設定讀取結果。
已由管理員認證 Demo 的 server-side credential check 驗證。已用 worker logs 觀察 request、status、execution model 與 route。部署錯誤和 runtime probe 都能回頭查。
下一步:整理常見 failure message 與處理方式。Site 和 version 會保留 screenshot URL,可作為部署後視覺狀態的佐證。
下一步:把 screenshot 檢查納入 release report。runtime 以 HMAC 簽發短期 HttpOnly、Secure cookie。未登入與登出後讀取受保護 endpoint 都回 401;有效 session 才取得彩蛋內容。
打開管理員認證 Demo.openai/hosting.json 宣告 "d1": "DB" 後,production handler 可透過 env.DB 讀寫。
/api/d1-probe 已成功寫入並在後續 request 讀回。
天氣 API 已用 D1 依縣市保存快取。30 分鐘內回 d1-cache,過期才重新打外部 API。
沒有背景排程;有人打開天氣頁時,後端才檢查快取時間並決定要不要刷新資料。
這符合 Sites 輕量 app 心智模型,也能避免一直打外部 API。公開簽到簿可 POST 暱稱與留言到 D1,並依 Asia/Taipei 日期與索引只讀取當日紀錄。公開畫面不收集聯絡資料。
打開今日簽到簿目前只驗證 D1。R2 應用場景會是截圖、附件、PDF、圖片或可下載檔案。
下一步:做一個安全的文字或小圖物件 put/get probe。D1 已確認是可用的持久 storage;module-scope memory 則只適合 runtime 行為觀察,不能當資料庫。
下一步:把真正需要保存的實驗紀錄移到 D1-backed API。已驗證的是 app-owned demo password 和 signed session,不等於可辨識的使用者身份。ChatGPT、Entra ID、GitHub 等 identity provider 都還沒接入。
下一步:分別測試 Sites 原生登入與外部 OAuth/OIDC 邊界。簽到簿已用 document.modelContext 註冊讀取今日名單與新增簽到工具;不支援的瀏覽器會略過,不影響一般表單。
長期狀態、檔案上傳、排程、queue、資料庫通常不應先假設 Sites 自己全包。
下一步:定義 Sites + 外部服務的搭配模式。