You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.3 KiB
84 lines
2.3 KiB
/**
|
|
* AI 调试打印。统一前缀 `[AI操作]`,控制台可过滤。
|
|
* 默认全关;控制台 `setAiLogVerbose(true)` 后 `aiLog` / `aiOp` / `aiWarn` 才输出。
|
|
*/
|
|
|
|
/** 所有 AI 日志统一前缀(控制台过滤用) */
|
|
export const AI_LOG_PREFIX = '[AI操作]';
|
|
|
|
let _verbose = false;
|
|
|
|
/**
|
|
* 开关 AI 细节 console 打印。
|
|
* @param enabled 是否开启
|
|
*/
|
|
export function setAiLogVerbose(enabled: boolean): void {
|
|
_verbose = !!enabled;
|
|
}
|
|
|
|
/** 当前是否开启 AI 细节打印 */
|
|
export function isAiLogVerbose(): boolean {
|
|
return _verbose;
|
|
}
|
|
|
|
/**
|
|
* 给首参加上统一前缀。
|
|
* @param args 原始参数
|
|
*/
|
|
function _withPrefix(args: unknown[]): unknown[] {
|
|
if (args.length <= 0) return [AI_LOG_PREFIX];
|
|
const head = args[0];
|
|
const rest: unknown[] = [];
|
|
for (let i = 1; i < args.length; i++) {
|
|
const a = args[i];
|
|
if (a !== null && typeof a === 'object') continue;
|
|
rest.push(a);
|
|
}
|
|
if (typeof head === 'string') {
|
|
if (head.indexOf(AI_LOG_PREFIX) === 0) {
|
|
const out: unknown[] = [head];
|
|
for (let i = 0; i < rest.length; i++) out.push(rest[i]);
|
|
return out;
|
|
}
|
|
const out: unknown[] = [`${AI_LOG_PREFIX} ${head}`];
|
|
for (let i = 0; i < rest.length; i++) out.push(rest[i]);
|
|
return out;
|
|
}
|
|
const out: unknown[] = [AI_LOG_PREFIX];
|
|
if (head !== null && typeof head !== 'object') out.push(head);
|
|
for (let i = 0; i < rest.length; i++) out.push(rest[i]);
|
|
return out;
|
|
}
|
|
|
|
/**
|
|
* AI 细节日志;关闭时为空操作。
|
|
* @param args 打印参数
|
|
*/
|
|
export function aiLog(...args: unknown[]): void {
|
|
if (!_verbose) return;
|
|
console.log(..._withPrefix(args));
|
|
}
|
|
|
|
/**
|
|
* AI 操作链日志(摆放/取舍/合成等);关闭时为空操作。
|
|
* @param args 打印参数
|
|
*/
|
|
export function aiOp(...args: unknown[]): void {
|
|
if (!_verbose) return;
|
|
console.log(..._withPrefix(args));
|
|
}
|
|
|
|
/**
|
|
* AI 告警;关闭时为空操作(用 log 避免浏览器 warn 刷屏卡顿)。
|
|
* @param args 打印参数
|
|
*/
|
|
export function aiWarn(...args: unknown[]): void {
|
|
if (!_verbose) return;
|
|
console.log(..._withPrefix(args));
|
|
}
|
|
|
|
try {
|
|
(globalThis as { setAiLogVerbose?: typeof setAiLogVerbose }).setAiLogVerbose = setAiLogVerbose;
|
|
} catch {
|
|
/* ignore */
|
|
}
|
|
|