关于 artifactbloat
artifactbloat 是用于按工作流追踪 GitHub Actions 构建产物大小的本地命令行工具和 MCP 服务。它比较带日期的快照,计算增长并标记超过可配置阈值的工作流。
主要功能
- 01按工作流汇总快照
- 02计算首末快照增长
- 03按阈值标记增长
- 04比较单个构建产物大小
- 05汇总总体字节数
适用场景
- 01发现构建产物快速增长的工作流
- 02查明构建产物何时新增或移除
- 03检查带日期快照间的大小变化
MCP 相关
提供 `track_artifact_sizes` 工具,接收工作流快照及可选增长阈值,并返回总量、工作流详情、标记列表和判定结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| snapshots | array | 是 | 要跟踪的构件快照(至少一个) |
| growth_threshold_percent | number | 否 | 标记工作流的增长百分比阈值(可选,默认值为 20) |
详细介绍
artifactbloat
CI 构建产物每周都在悄悄增长几个百分点——直到某个过去上传精简包的工作流开始上传庞然大物,却没人说得清是什么时候发生的。artifactbloat 会按日期记录构建产物大小快照,按工作流分组,并以直观的数字展示增长情况:
- 每个工作流的总量 — 按日期排序的快照,以及每个工作流的首个、最后一个和最大快照总量
- 增长变化量 — 首个快照到最后一个快照的字节数变化和百分比变化(四舍五入到小数点后四位;首个总量为零时为
null,因此从空状态开始的工作流不会发生除以零的情况) - 膨胀标记 — 当工作流的增长达到你设定的阈值时就会被标记(默认 20%,包含边界值);被标记的名称会单独列出,并据此给出判定结果:有任何工作流被标记时为
growth_flagged,否则为steady - 每个构建产物的详情 — 工作流曾生成的每个构建产物名称:它在首个和最后一个快照中的大小;如果该构建产物在相应快照中不存在,则对应一侧为
null(例如新建、已移除或仅在中间快照中出现的构建产物);两侧都存在时还会显示字节数变化量 - 总计 — 所有工作流首个和最后一个快照的总量之和
计算过程纯粹且在本地执行:不访问网络,无需配置,除传入的快照外不会读取其他文件。无效输入(缺少快照列表、快照缺少工作流、大小为负数、同一工作流在同一天记录了两次,或同一快照中有重名构建产物)会被拒绝,并显示指出问题路径的错误;不会生成不完整的报告。
CLI
npx @reneturcios/artifactbloat track --input args.json
npx @reneturcios/artifactbloat --version
args.json 包含完整的参数对象:
{
"snapshots": [
{
"workflow": "build",
"date": "2026-01-01",
"artifacts": [
{ "name": "app-bundle", "size_bytes": 1048576 },
{ "name": "source-maps", "size_bytes": 262144 }
]
},
{
"workflow": "build",
"date": "2026-02-01",
"artifacts": [
{ "name": "app-bundle", "size_bytes": 1572864 },
{ "name": "source-maps", "size_bytes": 262144 }
]
}
],
"growth_threshold_percent": 20
}
growth_threshold_percent 为可选项,默认值为 20。报告将以 JSON 格式输出。
退出代码:成功时为 0,发生运行时错误时为 1(包括无法读取或无效的输入文件,或无效输入),用法错误时为 2。
MCP 服务
npx -y @reneturcios/artifactbloat mcp
MCP 客户端配置:
{
"mcpServers": {
"artifactbloat": {
"command": "npx",
"args": ["-y", "@reneturcios/artifactbloat", "mcp"]
}
}
}
工具
track_artifact_sizes— 按工作流跟踪 Actions 构建产物大小的变化。snapshots(数组,必填,至少一个)— 快照对象,格式为{workflow, date, artifacts};其中每个构建产物的格式为{name, size_bytes},date为记录日期,格式为YYYY-MM-DDgrowth_threshold_percent(数字,可选,>= 0,默认值为 20)— 标记总量从首个到最后一个快照至少增长此百分比的工作流
返回 {workflow_count, total_first_bytes, total_last_bytes, workflows, flagged_workflows, verdict}。
Docker
docker run -i ghcr.io/cloudcorprecords/artifactbloat
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/artifactbloat track --input /w/args.json
开发
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
许可证
MIT — 版权所有 (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。