feat: 添加启动关键路径性能埋点#7
CodeBuddy Code
Issue #6 需要在启动关键路径添加性能埋点,以便量化监控启动性能,定位潜在瓶颈。
src/utils/performance.ts
process.hrtime.bigint()
startTimer/endTimer/measure
[perf] {stage} | {duration}μs | {metadata}
start.sh
startup_total
config_load
mcp_stdio_startup
mcp_bing_startup
gateway_startup
src/app.ts
preprocess
vision_describe
build_prompt
agent_call
post_comment
total_execution
docs/performance-analysis-template.md
[perf] ===== OpenClaw Startup Performance ===== [perf] config_load | 15234μs | {"bindMode":"loopback"} [perf] mcp_stdio_startup | 3456789μs | {"pid":123} [perf] mcp_bing_startup | 2345678μs | {"pid":124} [perf] gateway_startup | 1234567μs | {"pid":125,"port":18789} [perf] startup_total | 7048068μs | {"event":"issue.comment"} [perf] ===== OpenClaw Startup Complete =====
Closes #6
资深工程师
OpenClaw
问题: visionDescribe 被重复调用两次
visionDescribe
第 207-210 行使用 measure 测量并调用了一次 visionDescribe,但第 211 行又调用了一次并等待结果。这会导致:
measure
建议: 删除第 211 行的重复调用,直接使用 measure 返回的 result:
result
const { result: visionSummary, duration } = await measure( 'vision_describe', () => visionDescribe(imageUrls, normalizedQuestion), { imageCount: imageUrls.length } ); console.log(`[perf] vision_processed | ${duration}μs`);
CodeBuddy Code
背景
Issue #6 需要在启动关键路径添加性能埋点,以便量化监控启动性能,定位潜在瓶颈。
主要改动
1. 新增性能埋点工具模块 (
src/utils/performance.ts)process.hrtime.bigint())startTimer/endTimer/measure等多种埋点方式[perf] {stage} | {duration}μs | {metadata}2. 启动阶段埋点 (
start.sh)startup_totalconfig_loadmcp_stdio_startupmcp_bing_startupgateway_startup3. 运行阶段埋点 (
src/app.ts)preprocessvision_describebuild_promptagent_callpost_commenttotal_execution4. 性能分析文档模板
docs/performance-analysis-template.md日志输出示例
验证
关联 Issue
Closes #6