proof-of-commitment
Proof of Commitment
星星会撒谎。行为信号不会。
一个 MCP 服务器和 Web 工具,用于根据行为承诺对 npm 包、PyPI 包和 GitHub 仓库进行评分——这些信号比星星、README 或下载量更难伪造。
供应链问题
典型的 Node.js 项目中有三个包目前处于“关键”状态:
chalk — 每周 3.99 亿次下载,1 位维护者
zod — 每周 1.39 亿次下载,1 位维护者
axios — 每周 9600 万次下载,1 位维护者(2026 年 4 月 1 日遭受攻击)
星星和 README 的质量无法反映这一点。但行为信号可以。
立即尝试
终端(无需安装):
npx proof-of-commitment axios zod chalk
# or scan your own project:
npx proof-of-commitment --file package.json
# PyPI too:
npx proof-of-commitment --pypi litellm langchain requestsWeb 演示(无需安装): getcommit.dev/audit — 粘贴您的包,几秒钟内即可查看风险评分。
MCP 服务器(无需安装):
{
"mcpServers": {
"proof-of-commitment": {
"type": "streamable-http",
"url": "https://poc-backend.amdal-dev.workers.dev/mcp"
}
}
}将其添加到 Claude Desktop、Cursor、Windsurf 或任何兼容 MCP 的 AI 工具中。然后提问:
"Audit my package.json for supply chain risk" "Score axios, zod, chalk, lodash — which is highest risk?" "Is vercel/ai actively maintained?"
GitHub Action
将供应链审计添加到任何 CI 流水线中 — 自动检测 package.json 或 requirements.txt 中的包,将结果作为 PR 评论发布,写入 GitHub 步骤摘要,并可选择在发现“关键”包时使构建失败。
# .github/workflows/supply-chain-audit.yml
name: Supply Chain Audit
on: [push, pull_request]
jobs:
audit:
runs-on: ubuntu-latest
permissions:
pull-requests: write # needed for PR comments
steps:
- uses: actions/checkout@v4
- uses: piiiico/proof-of-commitment@main
with:
fail-on-critical: false # set true to block merges
comment-on-pr: true # posts audit table directly on the PR当 comment-on-pr: true(默认)时,该操作会自动将审计表作为评论发布在拉取请求上 — 并在重新运行时更新同一条评论,因此您不会收到垃圾评论。审查者无需离开 PR 即可查看风险表。
输入:
输入 | 默认值 | 描述 |
| (自动) | 以逗号分隔的包名称(如果未设置,则从 |
|
| 如果发现“关键”包,则使工作流失败 |
|
| 自动检测时审计的最大包数量 |
|
| 将审计结果作为 PR 评论发布(需要 |
输出: has-critical、critical-count、audit-summary(Markdown 表格,也会写入步骤摘要)。
示例 PR 评论 / 步骤摘要输出:
| Package | Risk | Score | Maintainers | Downloads/wk | Age |
|---------|-------------|-------|-------------|--------------|-------|
| chalk | 🔴 CRITICAL | 75 | 1 | 380M | 12.7y |
| zod | 🔴 CRITICAL | 83 | 1 | 133M | 6.1y |
| axios | 🔴 CRITICAL | 89 | 1 | 93M | 11.6y |README 徽章
为您维护或依赖的任何包添加承诺评分徽章:
示例:
包 | 徽章 URL |
axios |
|
zod |
|
litellm |
|
颜色:🟢 健康 (75+) · 🟡 良好 (60–74) · 🟡 中等 (40–59) · 🟠 高风险 (<40) · 🔴 关键(单人维护 + 每周 >1000 万次下载)
徽章在 Cloudflare 边缘缓存 5 分钟。无需 API 密钥。
REST API
无需 API 密钥。无需安装。
curl https://poc-backend.amdal-dev.workers.dev/api/audit \
-X POST \
-H "Content-Type: application/json" \
-d '{"packages": ["axios", "zod", "chalk", "lodash", "express"]}'{
"count": 5,
"results": [
{
"name": "chalk",
"ecosystem": "npm",
"score": 75,
"maintainers": 1,
"weeklyDownloads": 398397580,
"ageYears": 12.7,
"trend": "stable",
"riskFlags": ["CRITICAL"]
},
...
]
}7 个 MCP 工具
工具 | 描述 |
| 最多 20 个 npm/PyPI 包的批量风险审计 |
| 单个 npm 包的行为概况 |
| 单个 PyPI 包的行为概况 |
| GitHub 仓库承诺评分(寿命、提交频率、贡献者深度) |
| 挪威商业登记处 — 运营年限、员工、财务状况 |
| 同上,按组织编号查询 |
| 浏览器扩展行为数据(唯一验证访问者、重复率) |
评分衡量标准
每个包的评分范围为 0–100,涵盖:
寿命 — 包存在了多久?被遗弃的包常被重新激活用于攻击。
维护者深度 — 单人维护 + 每周数百万次下载 = LiteLLM 被利用的攻击面。
发布一致性 — 定期发布标志着积极的监督。长时间的间隔 = 漏洞积累。
下载趋势 — 增长中的包会吸引更多关注(和攻击)。稳定 = 风险较低。
风险标志:
CRITICAL— 单人维护 + 每周 >1000 万次下载(精确的 LiteLLM/axios 攻击特征)HIGH— 包龄 <1 年 + 快速采用WARN— 12 个月以上未发布
真实数据点
chalk — score 75, 1 maintainer, 399M/week ⚑ CRITICAL
zod — score 83, 1 maintainer, 139M/week ⚑ CRITICAL
axios — score 89, 1 maintainer, 96M/week ⚑ CRITICAL (attacked Apr 1 2026)
lodash — score 88, 3 maintainers, 68M/week
express — score 91, 5 maintainers, 35M/week
litellm — score 74, 1 maintainer ⚑ CRITICAL (supply chain attack Mar 2026)为什么选择行为信号
LiteLLM 攻击(2026 年 3 月)和 axios 攻击(2026 年 4 月)遵循相同的模式:凭据被盗 → 推送恶意包 → 9700 万台以上机器暴露。在攻击发生之前,这两个包根据这些指标都被评为“关键”。
声明式信号(星星、README 质量、CI 徽章)无法捕捉这种风险。行为承诺可以。
已在官方 MCP 注册表中列出
registry.modelcontextprotocol.io → io.github.piiiico/proof-of-commitment技术栈
层级 | 技术 |
后端 | Cloudflare Workers + D1 |
MCP | Model Context Protocol SDK |
数据 | npm 注册表、PyPI、GitHub API、Brønnøysund (NO) |
落地页 | Astro + Cloudflare Pages |
更广阔的愿景
供应链审计是第一个工具。其底层的原始概念是承诺图谱 — 能够取代跨领域基于内容的信任的行为信号。
当内容可以随意伪造(评论、星星、README)时,承诺就成了信号。一位在 12 年内发布了 847 个版本的维护者,其承诺程度与 2023 年发布过一次的维护者截然不同。
同样的逻辑适用于网站、企业和 AI 代理。两家卡组织独立指出了这一差距:Mastercard Verifiable Intent §9.2 明确将行为信任列为“未覆盖”。Visa TAP 识别代理,但没有回答是否应该信任它们。
Proof of Commitment 正是他们所指出的信任层。
本地运行
bun install
bun run dev:backend # local server with SQLite
bun run test:e2e # E2E test with mock World ID部署:
bun run deploy # deploys to Cloudflare WorkersLatest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/piiiico/proof-of-commitment'
If you have feedback or need assistance with the MCP directory API, please join our Discord server