Files
catbus/scripts/golden/node_determinism.cjs
cv-cat dc078b248b catbus:一个命令操作小红书、抖音、TikTok、B 站、快手、微博、闲鱼、淘宝、京东、X
10 个平台的 web 端全部用 TypeScript 移植自 cv-cat 的开源项目,请求与上游逐字节对拍。
统一的命令语法与 JSON 输出、按 平台 × 端 × 账号 隔离的登录态、给 AI Agent 用的技能与 llms.txt。
2026-10-06 19:24:55 +08:00

28 lines
902 B
JavaScript

// 对拍数据生成时,上游起的 node 进程通过 NODE_OPTIONS 预加载本文件:
// Math.random 换成与 src/core/rand.ts 相同的 mulberry32 序列,Date 固定在同一时刻。
// catbus 在确定性模式下给签名 vm 注入的是同样的东西(src/core/vm.ts)。
'use strict'
const seed = Number(process.env.CATBUS_GOLDEN_SEED)
const now = Number(process.env.CATBUS_GOLDEN_NOW)
if (Number.isFinite(seed) && Number.isFinite(now)) {
let a = seed >>> 0
Math.random = () => {
a = (a + 0x6d2b79f5) >>> 0
let t = Math.imul(a ^ (a >>> 15), a | 1)
t = (t + Math.imul(t ^ (t >>> 7), t | 61)) ^ t
return ((t ^ (t >>> 14)) >>> 0) / 4294967296
}
const RealDate = Date
class FixedDate extends RealDate {
constructor(...args) {
super(...(args.length ? args : [now]))
}
static now() {
return now
}
}
globalThis.Date = FixedDate
}