关于 sizeverdict
sizeverdict 是一个 MCP 服务和命令行工具,可根据调用方提供的模块大小估算依赖带来的新增包体积。它会扣除已随现有依赖发布的模块,并报告重叠情况、体积档位及可选的预算检查结果。
主要功能
- 01计算候选依赖与共享字节数
- 02识别重叠的模块路径
- 03按新增体积分档给出判断
- 04检查新增字节是否超出预算
- 05校验输入并报告错误
适用场景
- 01估算新增依赖带来的包体积
- 02比较候选模块与已发布依赖
- 03检查依赖是否符合字节预算
MCP 相关
向 MCP 客户端提供 assess_bundle_cost 工具。它根据输入数据计算候选依赖大小、与已安装依赖的重叠部分、新增字节数、体积分档及可选的预算结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| candidate | object | 是 | 正在权衡的依赖项 |
| candidate.name | string | 是 | 候选软件包名称 |
| candidate.modules | array | 是 | 候选软件包包含的模块 |
| installed | array | 否 | 已包含的依赖项,形状相同(可选) |
| budget_bytes | integer | 否 | 可选的新增字节数预算,用于检查 |
详细介绍
sizeverdict
添加依赖很容易达成一致,却很难评估代价。 软件包列表中醒目的大小并非你 实际付出的代价:部分新增代码可能已经在你的 构建包中,由你已依赖的依赖项提供。 sizeverdict 根据你 已有的数据计算实际代价。你需要提供候选项的模块及其 路径和字节大小,并提供你已随应用发布的 依赖项的相同信息,还可以选择设置新增字节数的 预算。sizeverdict 会返回候选项的总字节数、 已随应用发布的字节数、净新增成本、重叠列表 和判定等级。它绝不会下载、安装或测量 软件包;它只根据你提供的数据进行计算。
当候选模块的确切 路径出现在至少一个已安装依赖项的模块列表中时,该模块就算重叠。 共享字节数按候选模块的大小求和,每个重叠模块只 计算一次,即使两个已安装依赖项都包含相同路径也是如此—— 绝不会使用已安装依赖项中该路径对应的大小。重叠 列表中每个重叠模块各有一项,按路径排序,每项包含 候选模块的大小,以及包含该路径的已安装依赖项的不同名称,并按升序排序。 净新增字节数等于候选项字节数减去共享字节数。
判定等级根据净新增成本得出。净新增字节数为零时是 free_overlap。
不超过 10240 字节时是
negligible,不超过 102400 字节时是 small,不超过 512000 字节时是 moderate,超过该值则是 large。每个
阈值都包含对应等级的上限:10240 仍属于
negligible,10241 则属于 small,以此类推。当你
提供 budget_bytes 时,结果还会报告净新增成本是否
超过预算;恰好达到预算不算超过。
格式错误的输入——缺少候选项,名称缺失、为空
或不是字符串,模块列表缺失或为空,模块缺少路径或路径为空,或者字节大小为负数或
小数;已安装依赖项中存在相同错误;或预算无效——
都会导致验证错误,并指出有问题的路径,不会返回部分结果。同一软件包内有两个模块使用相同路径、两个
已安装依赖项名称相同,以及候选项名称与某个已安装依赖项相同
(candidate already installed: X),也都会报错。
未知的额外字段会被忽略。
命令行界面
npx @reneturcios/sizeverdict assess --input args.json
npx @reneturcios/sizeverdict --version
args.json 包含完整的参数对象:
{
"candidate": {
"name": "left-pad-plus",
"modules": [
{ "path": "index.js", "bytes": 4000 },
{ "path": "lib/util.js", "bytes": 9000 },
{ "path": "lib/extra.js", "bytes": 2000 }
]
},
"installed": [
{
"name": "utils-kit",
"modules": [
{ "path": "lib/util.js", "bytes": 8500 }
]
}
],
"budget_bytes": 10000
}
评估结果将以 JSON 格式打印:
{
"candidate": "left-pad-plus",
"candidate_bytes": 15000,
"shared_bytes": 9000,
"net_new_bytes": 6000,
"overlap": [
{ "path": "lib/util.js", "bytes": 9000, "also_in": ["utils-kit"] }
],
"verdict": "negligible",
"budget": {
"budget_bytes": 10000,
"net_new_bytes": 6000,
"over_budget": false
}
}
请注意,共享模块贡献的是候选项的 9000
字节,而不是已安装副本的 8500 字节。退出代码:成功时为 0,运行时错误(包括输入文件无法读取或无效,以及输入无效)时为
1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/sizeverdict mcp
MCP 客户端配置:
{
"mcpServers": {
"sizeverdict": {
"command": "npx",
"args": ["-y", "@reneturcios/sizeverdict", "mcp"]
}
}
}
工具
-
assess_bundle_cost— 根据调用方提供的模块大小,评估候选依赖的实际打包成本: 总字节数、已通过已安装依赖打包的模块(共享字节数)、新增净成本,以及评估等级。candidate(对象,必填)— 正在评估的依赖:name(字符串,必填,非空)— 候选包名称modules(数组,必填,至少 1 项)— 候选依赖打包的模块;每项包含:path(字符串,必填,非空)— 包内的模块路径bytes(整数,必填,至少为 0)— 模块大小(字节)
installed(数组,可选)— 已打包的依赖,结构与候选依赖相同;每项包含name和格式相同的modules列表。未提供时表示没有已打包的依赖。budget_bytes(整数,可选,至少为 0)— 用于检查新增净字节数的预算
返回
{candidate, candidate_bytes, shared_bytes, net_new_bytes, overlap, verdict, budget},其中candidate返回候选依赖的名称,overlap包含每个重叠候选模块对应的{path, bytes, also_in},并按路径排序;verdict的值为free_overlap、negligible、small、moderate或large;若未提供预算,budget为{budget_bytes, net_new_bytes, over_budget}或null。
Docker
docker run -i ghcr.io/cloudcorprecords/sizeverdict
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/sizeverdict assess --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 — Copyright (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。