Hona/strobe
开发工具一个预发布阶段的分析工具,测量网页、Electron、Bun/Node 或任意进程的性能并给出可辩护的结论。
项目介绍
Strobe 面向网页、Electron 应用、Bun/Node 进程以及任意原生进程做性能测量。它把 CPU、I/O、GPU、帧时序等系统级指标记录在同一条时钟上,然后基于记录到的证据给出结论,而不是靠猜测。对于平台无法可靠测量的指标,它会说明原因并拒绝输出,而不是打印成 0。工具形态包括 CLI、每用户守护进程、MCP 服务端和一个内置的 opencode 技能,因此人和编程 Agent 可以用相同的命令名和 JSON 结构查询同一份记录。被测应用通过自己的 strobe.json 描述如何构建、启动或在隔离环境中运行。
支持 Windows x64、macOS(arm64/x64)和 Linux(x64/arm64)。项目明确处于预发布阶段,设计写在 SPEC.md 中,而实际已实现的范围以 skill/SKILL.md 和 strobe --help 为准。
快速使用
建议按项目安装 Strobe,确保所有跑基准的人都用同一版本。先把它加为开发依赖,再执行一次机器级别的初始化,安装引擎、守护进程、MCP 和技能:
bun add -d @hona/strobe
bunx strobe up
初始化后可以比较分支、录制运行中的应用,或查询某次记录:
strobe bench perf/timeline.bench.ts --base origin/dev --head .
strobe record app:desktop --for 10s
strobe query rec_3f9a hotspots --by package
strobe report experiment exp_8c21 --open
基准是小型 TypeScript 文件,声明目标与用例,类似 BenchmarkDotNet。一个用例定义主指标(例如 frames.presented.p95)以及在页面上分阶段交互的 run 函数,示例见基准文件写法。运行基准文件后会得到对比结果,以及可以继续下钻的查询句柄。
平台权限
部分测量依赖操作系统权限,Strobe 不会主动申请。在 macOS 上,驱动原生应用或摆放窗口需要辅助功能权限;读取帧或像素需要屏幕录制权限。这两项权限归属于 Strobe 运行时所在的应用(终端、Agent 应用或远程 shell 守护进程),strobe status 会指出具体是谁。在 Linux 上,采集原生调用栈要求 kernel.perf_event_paranoid 不高于 2,或授予 CAP_PERFMON;驱动原生应用需要会话的辅助功能总线(at-spi2-core)。
各平台支持的指标并不一致。例如,按线程统计 CPU 唤醒在 Windows 和 Linux 可用,macOS 只能按进程;GPU VRAM 在 macOS 统一内存下会被拒绝,Linux 的 NVIDIA 专有驱动也不支持。Windows 上原生窗口测量走 Win32,Linux 依赖 X11,因此原生 Wayland 窗口对其他应用不可见。
使用约束
Strobe 是预发布软件,命令行为和覆盖范围可能变化。仓库目前没有声明许可证,商业使用或再分发前需要留意。录制网页时,工具需要项目内的配置告诉它如何启动或访问应用;没有该配置时,应用需要已经在运行且可被寻址。依赖精细系统计数器的测量(周期计数器、Mach time、ETW 事件)可能需要上述提到的提权配置。
HotRepo 点评
Strobe 在 2026-11-04 出现在 HotRepo 的 Rust 新项目榜中,当时 102 Star、4 Fork,一小时内净增 2 Star。这是一条非常早期的快照,没有记录到全部语言日榜名次,因此这些数字只说明项目处于早期阶段,不能当作趋势判断。技术上值得关注的是它的拒绝策略:无法可靠测量的指标以带原因的报错呈现,而不是输出 0,这对给 Agent 用的 MCP 输出来说比朴素的分析器更容易被信任。实际实现是否与设计一致,还取决于 README 所指向的 skill/SKILL.md 中列出的预发布范围。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。