brunnojob/cifuse
开发工具把嘈杂的 CI 日志分组为失败信号、证据和排查步骤。
项目做什么
CIFuse 读取纯文本 CI 日志,把重复出现的诊断信息归并为若干信号,并附上文件和行号证据。它识别依赖、编译器、测试和基础设施等 12 类模式,还能把新报告与基线报告对比,区分新增、已存在和已解决的签名。
它有三种使用方式:离线 CLI、把报告追加到 job summary 的复用型 GitHub Action,以及中英双语的浏览器工作台。输出为 JSON 或 Markdown,支持英文和巴西葡萄牙语;加载完成后无需后端、账号、AI key 或运行时依赖。
快速使用
README 给出的前置条件是 Node.js 22+ 和 Git。先运行内置示例:
npx --yes github:brunnojob/cifuse --demo
再分析真实日志并与已保存的报告对比:
npx --yes github:brunnojob/cifuse build.log --format json > report.json
npx --yes github:brunnojob/cifuse next.log --baseline report.json --fail-on new
首次通过 GitHub 安装会下载源码。若改用工作台,可打开 在线工作台 点击 Load example,或克隆仓库后运行 npm run demo。在 GitHub Actions 中,需要先捕获现有命令的输出并保留其退出状态,再把日志文件通过 log 输入传给 Action,可选 lang;baseline 和 fail-on 的取值说明见 README 中的 Action 配置,fail-on 接受 findings 或 new。
CLI 行为与退出码
CLI 接受文件路径,或用 - 读取标准输入:cat build.log | node bin/cifuse.js - --format json。退出码 0 表示分析完成,1 表示命中选定阈值,2 表示参数或输入无效。默认只输出报告;加上 --fail-on findings 才会让发现项导致运行失败。
使用约束
输入上限为 100 个文件、合计 5 MiB,每组保留最多 10 处位置。日志在内存中以文本处理,不支持 ZIP 压缩包,需先解压或解码。
CIFuse 基于确定性模式匹配:它提示去哪里排查,但不证明根因、不修复代码、不识别不稳定测试,也不替代测试退出状态。凭据脱敏只是尽力而为,不是密钥扫描器。Action 只读取一个本地文本文件,不拉取私有工作流日志,也不发表评论;生产环境应固定到审核过的 commit SHA,而不是 main。除 checkout 所需的 contents: read 外不需要额外 token 权限。
仓库与网站
浏览器端和 CLI 都导入 src/engine.js。网站默认英文,可持久切换 PT-BR,且只保存语言偏好;日志和报告不会被持久化。贡献者流程使用 npm test 和 npm run build,dist/ 可用任意静态服务器托管。
项目采用 MIT 许可证。设计取舍见 架构文档,规则见 规则目录,限制见 限制说明。
HotRepo 点评
CIFuse 在 2026 年 11 月 13 日进入 HotRepo 新项目榜,在约 1.5 小时的观测窗口内记录到 6 颗新增 Star,总 Star 为 106、Fork 为 0。站内没有该项目在全语言日榜的最好名次记录,也没有可引用的 HN 讨论。它的卖点是把 CI 日志从手动 grep 或粘贴给 LLM 变为确定性、离线的分组与基线对比,同一引擎复用于 CLI、Action 和浏览器;上述无需 API key、本地处理的特性可由代码和入口点核查,但当前记录的增长规模还不足以说明采用情况。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。