开流前的注销检查可以和读会话、解析模型同时进行;审核改到扣点前等待,不再挡住第一行;模型版本可以短缓存;两个领域可以一起算。本机没有数据库中位数,也没有带星盘网络库的镜像,所以默认仍是关闭、缓存 0、领域逐个算。 自测:tsc 0 错;lint 0 error;相关测试失败 0、取消 0。test:db 未跑。 Co-Authored-By: Grok (agent loop)
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
/** Call-time switches for consult preparation. Read on each request, not at import. */
|
||
|
||
const warned = new Set<string>();
|
||
|
||
function warnOnce(name: string, raw: string): void {
|
||
if (warned.has(name)) return;
|
||
warned.add(name);
|
||
console.warn(`[consult-prep] ${name} 的值无法识别,按默认处理`);
|
||
void raw;
|
||
}
|
||
|
||
function readRaw(env: Readonly<Record<string, string | undefined>>, name: string): string | undefined {
|
||
const raw = env[name];
|
||
if (raw === undefined) return undefined;
|
||
const trimmed = raw.trim();
|
||
return trimmed ? trimmed : undefined;
|
||
}
|
||
|
||
export function consultPrepParallelEnabled(
|
||
env: Readonly<Record<string, string | undefined>> = process.env,
|
||
): boolean {
|
||
const raw = readRaw(env, "CONSULT_PREP_PARALLEL");
|
||
if (raw === undefined) return false;
|
||
const value = raw.toLowerCase();
|
||
if (value === "on") return true;
|
||
if (value === "off") return false;
|
||
warnOnce("CONSULT_PREP_PARALLEL", raw);
|
||
return false;
|
||
}
|
||
|
||
/** 0 closes the cache. Anything outside 0–15000 stays on the default, which is off. */
|
||
export function modelVersionCacheTtlMs(
|
||
env: Readonly<Record<string, string | undefined>> = process.env,
|
||
): number {
|
||
const raw = readRaw(env, "MODEL_VERSION_CACHE_TTL_MS");
|
||
if (raw === undefined) return 0;
|
||
if (!/^\d+$/.test(raw)) {
|
||
warnOnce("MODEL_VERSION_CACHE_TTL_MS", raw);
|
||
return 0;
|
||
}
|
||
const parsed = Number(raw);
|
||
if (parsed > 15_000) {
|
||
warnOnce("MODEL_VERSION_CACHE_TTL_MS", raw);
|
||
return 0;
|
||
}
|
||
return parsed;
|
||
}
|
||
|
||
/** 1 is today's serial loop. 2 starts the capped domains together. */
|
||
export function consultDomainConcurrency(
|
||
env: Readonly<Record<string, string | undefined>> = process.env,
|
||
): 1 | 2 {
|
||
const raw = readRaw(env, "CONSULT_DOMAIN_CONCURRENCY");
|
||
if (raw === undefined || raw === "1") return 1;
|
||
if (raw === "2") return 2;
|
||
warnOnce("CONSULT_DOMAIN_CONCURRENCY", raw);
|
||
return 1;
|
||
}
|
||
|
||
export function resetConsultPrepFlagWarningsForTests(): void {
|
||
warned.clear();
|
||
}
|