SuperAPI AI 工具集

seeded-determinism-and-golden-vectors

编程与开发

查看项目

更新于 10-18 18:02

技能介绍

用途:本技能面向“同一键必须产生同一输出”的场景,例如所有用户互相对比的每日内容、生成式布局、分享码可复现的洗牌、回放等。目标是在不同设备、时区与来年的构建上输出完全一致,且不依赖服务器。

主要能力与规则:种子代码以 DateKey、ID 或序号为参数,不调用 Date.now、new Date、performance.now,也不引入时钟服务。日期以整数计算文明日期键“YYYY-MM-DD”,键在边界处由 clock.today() 取得并经 date-key.ts 处理。熵源唯一为 sfc32.ts,以状态贯穿传递,函数接收状态并返回 { value, state };种子路径禁用 Math.random、crypto、expo-crypto、uuid 及 PRNG 包。种子由哈希加冻结盐经 seedRng 混合,每个特性与模式各用一个唯一且记录的盐。种子路径及其导入文件仅使用精确规定的运算(+ - * / %、位运算、Math.sqrt/imul/floor/round/abs/min/max/PI),不使用 **、其他 Math.、Intl、toLocale 或 localeCompare,浮点在存储或指纹化前冻结为整数。每次生成器版本记录其抽取顺序,输入按稳定键排序。内容按(键、版本)重新生成而不存储;已发布生成器冻结,变更通过未来切换日期的新版本实现,旧版本保持可调用。每个生成器由 golden vectors 锁定,期望值由独立预言机(另一种语言或风格、不导入 src/)计算,提交行由人工运行脚本填充,CI 只校验不回填。

使用方式:工作流包括:确定哪些输出需要种子;从 templates/src/core/ 复制核心文件(sfc32、seeded-draws、fingerprint、date-key、daily-seed、generator-versions)且不修改;按模板编写生成器(选择新盐、冻结目录、记录抽取顺序、导出 generate(key, version?) 与 summarize(output));在 contracts/seeded-generators.json 注册;用模板编写独立预言机;在首次发布前替换模板值并填充向量行;存储 (key, generatorVersion, outcome) 而非内容;变更已发布生成器时新增版本与未来切换日期;运行 Jest 测试与 typecheck;运行 check-determinism.mjs 与 check-golden-vectors.mjs 直至输出 RESULT: PASS。

适用场景:每日内容、可复现洗牌、分享码、生成布局、回放等需要跨设备一致输出的 React Native/Expo 应用。

限制:模板中的盐 0x2f6b4c1d、item-01…item-12 目录与示例行须在首次发布前替换;CI 禁止运行回填脚本;具体收费、价格与平台支持暂未提供。