10 个平台的 web 端全部用 TypeScript 移植自 cv-cat 的开源项目,请求与上游逐字节对拍。 统一的命令语法与 JSON 输出、按 平台 × 端 × 账号 隔离的登录态、给 AI Agent 用的技能与 llms.txt。
28 lines
902 B
JavaScript
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
|
|
}
|