关于 abandoncheck
abandoncheck 根据调用方提供的仓库信号评估依赖维护状况,供团队检查依赖健康度。它使用固定的本地评分规则返回判定和理由,不会获取仓库或检查代码。
主要功能
- 01评估仓库维护信号
- 02返回判定、分数和理由
- 03划分发布与提交的时效区间
- 04验证输入并指出错误字段
适用场景
- 01维护工作中审查依赖健康度
- 02依据提供的信号比较依赖
MCP 相关
MCP 服务提供 `check_dep_maintenance`,根据调用方提供的信号返回判定、分数、信号和理由。该工具不会进行网络查询。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 依赖项名称 |
| archived | boolean | 是 | 依赖项的仓库是否已归档 |
| open_issues | integer | 否 | 未解决问题数(可选;仅报告,不计分) |
| last_commit_days | integer | 否 | 距上次提交的天数(可选;未知时省略) |
| maintainer_count | integer | 否 | 活跃维护者数量(可选) |
| last_release_days | integer | 否 | 距上次发布的天数(可选;从未发布时省略) |
| recent_commits_90d | integer | 否 | 过去 90 天的提交数(可选) |
详细介绍
abandoncheck
依赖树中的每个依赖都曾在某个时刻被选中,通常是几年前,而之后真正重要的问题很简单:还有人在维护它吗?abandoncheck 无需猜测,就能回答这个问题。你只需提供已有的事实信号——仓库是否已归档、距上次发布和上次提交分别过了多久、过去 90 天内有多少次提交、有多少位维护者活跃,以及有多少个未关闭的问题——它就会返回判定、分数、这些信号所属的区间,以及分数背后的具体原因。
不会获取任何信息,也不会推断代码本身的情况。仓库一旦归档,问题就有了定论:分数为 0,判定为 abandoned,无论其他信号看起来有多新都一样。否则,分数从 100 开始,按固定顺序因缺少或过时的发布信息、缺少或过时的提交信息、过去 90 天毫无动静,以及维护者人手不足而扣分,最低不低于 0。未关闭的问题数会在信号中原样返回,并且明确不参与评分:问题跟踪器繁忙,既可能意味着项目很受欢迎,也可能意味着项目无人维护,而此工具只采用指向单一结论的信号。
这些区间让分数一目了然、便于核查。距上次发布不超过 180 天为 fresh,之后到 365 天为 aging,到 730 天为 stale,超过则为 dormant;如果没有发布信息,区间为 unknown。提交采用更短的时间尺度:不超过 90 天为 active,到 180 天为 slowing,到 365 天为 quiet,超过则为 silent。分数达到 80 为 maintained,达到 50 为 at_risk,大于 0 为 likely_abandoned,而 0 为 abandoned。如果完全没有触发扣分项,唯一的原因是“no adverse signals”;否则,每条原因都会按应用顺序指出触发的扣分项。
格式错误的输入——缺失、为空或不是字符串的 name,缺失或不是布尔值的 archived,或任何不是大于等于 0 的整数的可选计数——都会导致验证错误,并指出出错的路径,不会返回部分结果。未知的额外字段会被忽略。计算是纯粹的本地操作:不联网、不需要配置,也不会读取或触碰任何仓库。
CLI
npx @reneturcios/abandoncheck check --input args.json
npx @reneturcios/abandoncheck --version
args.json 包含完整的参数对象:
{
"name": "leftpad",
"archived": false,
"last_release_days": 45,
"last_commit_days": 12,
"recent_commits_90d": 18,
"maintainer_count": 3,
"open_issues": 27
}
结果会以 JSON 格式输出:
{
"name": "leftpad",
"verdict": "maintained",
"score": 100,
"signals": {
"archived": false,
"last_release_band": "fresh",
"last_commit_band": "active",
"recent_commits_90d": 18,
"maintainer_count": 3,
"open_issues": 27
},
"reasons": ["no adverse signals"]
}
未提供的可选信号会在 signals 中显示为 null,其区间为 "unknown"。退出码:成功时为 0,运行时错误时为 1(包括无法读取或内容无效的输入文件,或输入无效),用法错误时为 2。
MCP 服务
npx -y @reneturcios/abandoncheck mcp
MCP 客户端配置:
{
"mcpServers": {
"abandoncheck": {
"command": "npx",
"args": ["-y", "@reneturcios/abandoncheck", "mcp"]
}
}
}
工具
-
check_dep_maintenance— 仅根据调用方提供的事实信号,判断某个依赖是否有人维护。name(字符串,必填,不能为空)— 依赖名称archived(布尔值,必填)— 依赖的仓库是否已归档last_release_days(整数,可选,至少为 0)— 距上次发布的天数;没有发布记录时省略last_commit_days(整数,可选,至少为 0)— 距上次提交的天数;未知时省略recent_commits_90d(整数,可选,至少为 0)— 过去 90 天内的提交数maintainer_count(整数,可选,至少为 0)— 活跃维护者人数open_issues(整数,可选,至少为 0)— 未关闭的问题数;会报告,但不参与评分
返回
{name, verdict, score, signals, reasons},其中signals为{archived, last_release_band, last_commit_band, recent_commits_90d, maintainer_count, open_issues}。
Docker
docker run -i ghcr.io/cloudcorprecords/abandoncheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/abandoncheck check --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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。