Show HN:Wasted Cycles – AI编程助手的本地挂钟时间分析器
Wasted Cycles 是一款无需安装、无需账户的本地工具,用于测量AI编程助手在编码过程中被机器阻塞的时间比例。它通过分析时间戳事件,提供详细的等待时间分布,帮助开发者识别瓶颈。
Wasted Cycles 是一款面向AI编程助手的本地挂钟时间分析器,旨在帮助开发者了解编码过程中究竟有多少时间被机器阻塞。该工具以单条curl命令运行,无需安装、无需注册账户、无需API密钥,也不会在机器上常驻后台。它从临时目录下载经校验和验证的二进制文件,运行完成后自动删除,确保不留痕迹。
工具的核心功能是回答几个关键问题:在AI代理运行期间,有多少时间因等待机器(如编译、测试、CI等)而浪费?哪些具体环节是瓶颈?是否存在重复的构建或测试?哪个编程助手的行为导致工作流反复等待?通过分析追踪数据中的时间戳事件,Wasted Cycles 将每个时间段分类到“代理工作”或“计算阻塞”两大组,并进一步细分。代理工作包括模型推理、读取搜索、代码修改及其他工具调用;计算阻塞则涵盖构建、测试、CI、容器、包管理及子代理等待。重复执行的命令会被标记为重复工作,因为机器做了两遍相同的事。
用户可通过内置演示数据集(--demo)快速体验输出格式。示例报告以表格形式展示各项耗时及占比,例如模型工作1小时4分钟(21%)、等待构建32分钟(11%)等。终端中,数据以实时TUI呈现,支持方向键切换视图,数字键7、0或字母y调整回溯窗口(7天、30天、年初至今),q键退出。
该工具支持多种编程助手的追踪数据源,包括Codex(~/.codex/sessions)、Claude Code(~/.claude/projects)、Cursor(~/.cursor/projects/*/agent-transcripts)和Grok Build(~/.grok/sessions)。它仅读取指定窗口内修改的JSONL追踪文件,不会写入或上传任何数据。Cursor因仅记录用户回合的挂钟时间,每个片段对应整个回合,并会检测并丢弃固定间隔调度的代理(避免虚增的120小时幻影工作)。
方法学上,Wasted Cycles 通过解析结构化事件重建时间片段,而非匹配文本日志,因此复制的日志或引用的命令不会被误判为真实活动。它测量挂钟时间,而非token数或成本。空闲时间处理采用双阈值:超过2小时的间隔视为会话中断,不计入;更短的间隔上限为30分钟,并标记为“低置信度夹断”。模型工作时间是推理代理,而非实际GPU计算时间——它代表用户消息或工具结果后到下一个动作之间的间隔,对部分工具是真实时长的上限。工具明确区分测量时间和推断时间。
启动命令简单:通过curl管道执行,并可附加参数。例如,--demo启动演示,--days N设定扫描天数(默认7天),--ytd从年初开始扫描,--json输出JSON报告,--plain输出纯文本摘要。TUI中支持动态切换窗口。所有分析仅使用时间戳、事件种类和粗略标签,提示文本和源代码永远不会被存储、渲染或上传。