aida-demo-data 是做什么的?
模型层级:标准。编写一个小脚本或一系列应用操作需要细心,但一旦从大纲卡片中了解到数据的形状,这就成了常规任务。
默认路径:通过应用自身
-
仅供单个向导使用的数据(例如第二个可供选择的竞争对手):使用其自身的
setup:步骤,采用与步骤相同的do:/check:/actions:语法,在采集前运行且不会被拍摄。setup: { as: admin, steps: [...] }用于以其他角色身份登录。 -
多个向导需要,或向导结束后不保留的起始数据(例如“Alex在早间时段”):使用包含钩子的配置
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 Coder永远不会获得种子脚本——关键在于AIDA不需要数据库访问。
- 如果你确实编写了种子脚本:它只能针对数据库采集的自身安全检查所接受的数据库(在本机上,或用户指定的可丢弃分支;
aida doctor会显示所接受的数据库),使用相同的安全演示数据值,并且放置在应用自有的种子工具目录下,而不是在向导文件中。
规则
- 绝不能在向导中标记为只读的步骤中作为副作用创建数据。如果向导需要设置数据,必须显式声明(使用
needs、setup:),而不是隐藏状态。 - 绝不要在录制的向导中添加清理步骤。一个删除数据的向导应使用
clears声明;重新运行时,其起始数据通过幂等的设置钩子或数据库重置恢复。
Token规则
请参阅 references/tokens.md。保持小巧、有针对性:仅针对一个卡片的数据形状,而不是整个模式或应用。