aida-demo-data 是做什麼的?
模型層級:標準。撰寫小腳本或一系列應用程式操作需要謹慎,但在從輪廓卡片得知資料結構後,這是常規任務。
預設路徑:透過應用程式本身
-
僅供單一逐步教學使用的資料(例如要從中挑選的第二個競爭者):在其自身的
setup:步驟中定義,使用與do:/check:/actions:相同的語法,於錄製前執行且永不錄影。setup: { as: admin, steps: [...] }表示以其他角色登入來執行設定。 -
多個逐步教學需要的起始資料,或任何教學都不會留下的資料(例如「Alex 在早上的時段」):使用帶有鉤子 (hooks) 的
states配置項目,透過應用程式自身的 API 設定(決策 15),絕不透過資料庫:states: { "alex-in-morning": { description: "Alex 在早上的時段", as: "admin", // 鉤子自身登入的工作階段 setup: "./states/alex-in-morning.mjs", // 其 `setup` 匯出,否則為預設 check: "./states/alex-in-morning.mjs", // 其 `check` 匯出,否則為預設 }, },鉤子會收到
ctx.request(一個攜帶已登入工作階段的 API 用戶端,相對路徑相對於baseUrl解析),以及ctx.page、ctx.runId與ctx.env。check回傳 true 表示狀態已存在且不需變更。setup必須是冪等的(「確保它確實如此」):它會在每次需要該狀態的錄製前執行,因此可能需先刪除之前執行的複本。若未指定as:,鉤子會共用逐步教學自身的工作階段;透過 API 登入的鉤子需設定as:為不同角色,否則會將錄製登出。 -
錄製設定所建立的資料不得跨執行衝突:在設定資料中使用
{{run.id}}命名(在鉤子中使用ctx.runId)。絕不讓它出現在輸入文字、旁白或字幕中:否則螢幕截圖每次執行都會改變。 -
所有值必須遵循
references/safety.md:使用@example.com電子郵件、保留的虛構電話號碼範圍、虛構姓名。絕不複製真實記錄,即使更改姓名,也不得作為起點。 -
如果應用程式支援專用展示帳戶或工作區,則使用該帳戶,絕不使用生產帳戶。快速模式(無專用展示環境)會在儲存任何內容前詢問使用者。
種子腳本:僅依工程師明確要求
- 僅在工程師明確要求時(例如「為展示資料庫寫一個種子腳本」)才撰寫直接寫入資料庫的種子腳本。預設使用者與 vibe 編碼者永遠不會得到這種腳本——重點在於 AIDA 不需要資料庫存取權限。
- 如果確實要撰寫:它只能針對資料庫錄製的安全性檢查所接受的目標(本機機器,或使用者命名為可拋棄的分支;
aida doctor會顯示哪些),使用相同的安全展示資料值,且應放在應用程式自身的種子工具中,而非逐步教學檔案內。
規則
- 絕不在標記為唯讀的逐步教學步驟中,以副作用方式建立資料。如果逐步教學需要設定資料,請明確表示(使用
needs、setup:),而非隱藏狀態。 - 絕不在已錄製的逐步教學中加入清理步驟。會移除資料的逐步教學需使用
clears標示;重新執行時,其起始資料會透過冪等設定鉤子或資料庫重置恢復。
Token 規則
請參閱 references/tokens.md。小且精確:僅涵蓋該張卡片的資料結構,而非整個 schema 或應用程式。