mcpField
A
artifactbloat

artifactbloat

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 artifactbloat

artifactbloat 是用于按工作流追踪 GitHub Actions 构建产物大小的本地命令行工具和 MCP 服务。它比较带日期的快照,计算增长并标记超过可配置阈值的工作流。

主要功能

  1. 01按工作流汇总快照
  2. 02计算首末快照增长
  3. 03按阈值标记增长
  4. 04比较单个构建产物大小
  5. 05汇总总体字节数

适用场景

  1. 01发现构建产物快速增长的工作流
  2. 02查明构建产物何时新增或移除
  3. 03检查带日期快照间的大小变化

MCP 相关

提供 `track_artifact_sizes` 工具,接收工作流快照及可选增长阈值,并返回总量、工作流详情、标记列表和判定结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-artifactbloat": {
"command": "npx",
"args": [
"-y",
"@reneturcios/artifactbloat"
]
}
}
}
启动命令npx -y @reneturcios/artifactbloat

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/artifactbloat0.1.0
ocighcr.io/cloudcorprecords/artifactbloat:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
snapshotsarray是要跟踪的构件快照(至少一个)
growth_threshold_percentnumber否标记工作流的增长百分比阈值(可选,默认值为 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-DD
    • growth_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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。