feat: 添加启动关键路径性能埋点#11
关联 Issue: #6
OpenClaw
CodeBuddy Code
问题: 导入的 configurePerformance 函数未被使用
configurePerformance
建议: 如果计划在后续版本中使用,建议先不导入;或者立即使用它来配置 PERFORMANCE_THRESHOLDS:
PERFORMANCE_THRESHOLDS
configurePerformance({ thresholds: PERFORMANCE_THRESHOLDS, onThresholdExceeded: (trace, threshold) => { console.warn(`[performance] ${trace.name} 超过阈值: ${trace.duration}us > ${threshold}us`); } });
问题: 定义了 PERFORMANCE_THRESHOLDS 但未实际使用
建议: 配置项已定义但未调用 configurePerformance 进行应用。阈值配置应该在某处初始化,否则告警功能无法生效。建议在 main() 函数开始时添加配置初始化。
main()
问题: 用户输入为空时提前返回,但 CONFIG_LOAD 追踪记录仍在活跃状态
CONFIG_LOAD
建议: 在提前返回前应结束追踪:
if (!userQuestion.trim()) { endPerformanceTrace(TRACE_NAMES.CONFIG_LOAD); console.log('[main] 用户输入为空,跳过'); return; }
问题: 全局变量 completedTraces 持续累积数据,可能导致内存泄漏
completedTraces
建议: 对于长期运行的服务,考虑添加容量限制或定期清理机制。例如:
const MAX_TRACES = 1000; if (completedTraces.length >= MAX_TRACES) { completedTraces.shift(); // 移除最旧的记录 } completedTraces.push(trace);
问题: logger 配置项与默认值重复
logger
建议: PerformanceConfig 中 logger 已有默认值,logTrace 中又用 || console.log 处理。建议统一处理方式,避免混淆:
PerformanceConfig
logTrace
|| console.log
const logger = globalConfig.logger; // 已在 configurePerformance 中确保非空
评审结果: 通过
代码质量良好,未发现明显问题。
优点:
TRACE_NAMES
thresholds
onThresholdExceeded
建议(可选):
measureAsync
performance.ts
关联 Issue: #6