关于 sizecheck
sizecheck 是一款本地工具,根据变更文件的修改量、受影响的导出符号和目录分布评估拉取请求的影响范围。它给出风险等级、突出显示高修改量文件,并为大型变更提供拆分建议。
主要功能
- 01计算分数和风险等级
- 02汇总文件数与行数
- 03按顶层目录分组变更
- 04列出修改量最高的五个文件
- 05为大型变更提供拆分建议
适用场景
- 01评估拉取请求的审查负担
- 02查找修改量最大的文件
- 03确定可拆分为独立变更的目录组
MCP 相关
向 MCP 客户端提供 `score_blast_radius` 工具,返回分数、风险、汇总数据、目录分布、高修改量文件和拆分建议。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| files | array | 是 | 拉取请求中已更改的文件(至少一个) |
详细介绍
sizecheck
一个拉取请求可能只改动一个文件中的三行,也可能改动半个代码库、分散在多个文件中的三千行,审查负担自然不同。sizecheck 接收变更文件列表——包括每个文件的路径、增删行数,以及可选的已变更导出符号数量——并将其汇总为一份影响范围报告:
- 评分和风险 — 一个整数评分:变更总量(新增行数加删除行数),每个受影响的导出符号加 25 分,以及从第二个顶层目录起每多一个目录加 10 分。评分对应一个风险等级:低于 100 为
small,100–399 为medium,400–999 为large,1000 及以上为huge。 - 总计 — 文件数以及新增行数、删除行数、变更总量和已变更导出符号数的总和,因此始终可以根据输入核对评分。
- 按目录统计变更分布 — 按顶层目录分组变更(路径中没有目录的文件计入
"(root)"),按变更总量降序、再按目录名称升序排序。 - 变更最集中的文件 — 按变更总量排列的前五个文件;若并列,则按路径升序排列,以便优先仔细审查影响最大的文件。
- 拆分建议 — 当风险为
large或huge时,会将最大目录组以外的每个目录组列为可单独合并的变更部分。风险为 small 或 medium 的变更,以及仅涉及单个目录的变更,不会提供建议。
每个变更文件都必须有唯一且非空的 path,以及非负整数 added 和 deleted 计数。
exports_changed 为可选项(默认值为 0),如有提供,必须为非负整数;kind 为可选项(默认值为 "code"),如有提供,必须为 "code"、"test"、"docs"、"config" 或 "other" 之一。该字段会经过验证,但不会影响评分。无效输入会产生一条指明出错路径的验证错误(例如 files[0].added must be an integer >= 0),且不会生成部分报告。计算过程是纯本地的:不访问网络、不需要配置,也不会读取你传入的输入之外的任何文件。
CLI
npx @reneturcios/sizecheck score --input args.json
npx @reneturcios/sizecheck --version
args.json 包含完整的参数对象:
{
"files": [
{ "path": "src/api.ts", "added": 120, "deleted": 30, "exports_changed": 3 },
{ "path": "src/api.test.ts", "added": 80, "deleted": 10, "kind": "test" },
{ "path": "docs/api.md", "added": 25, "deleted": 5, "kind": "docs" }
]
}
报告以 JSON 格式打印:
{
"score": 355,
"risk": "medium",
"files_count": 3,
"added": 225,
"deleted": 45,
"churn": 270,
"exports_changed": 3,
"by_directory": [
{ "directory": "src", "files": 2, "churn": 240 },
{ "directory": "docs", "files": 1, "churn": 30 }
],
"hottest_files": [
{ "path": "src/api.ts", "churn": 150 },
{ "path": "src/api.test.ts", "churn": 90 },
{ "path": "docs/api.md", "churn": 30 }
],
"split_suggestions": []
}
评分为 270(变更总量)+ 25 × 3(导出符号)+ 10 × 1(额外目录)= 355。
退出代码:成功时为 0,运行时错误时为 1(包括无法读取或无效的输入文件,或无效输入),用法错误时为 2。
MCP 服务
npx -y @reneturcios/sizecheck mcp
MCP 客户端配置:
{
"mcpServers": {
"sizecheck": {
"command": "npx",
"args": ["-y", "@reneturcios/sizecheck", "mcp"]
}
}
}
工具
score_blast_radius— 根据拉取请求的变更文件评估其影响范围。files(数组,必填,至少包含一个元素)— 文件对象{path, added, deleted, exports_changed?, kind?};集合中的path必须唯一
返回 {score, risk, files_count, added, deleted, churn, exports_changed, by_directory, hottest_files, split_suggestions}。
Docker
docker run -i ghcr.io/cloudcorprecords/sizecheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/sizecheck score --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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。