关于 SaveSaveSaveSave
SaveSaveSaveSave 是一款面向 Agent 和脚本的只读扫描器,可在采取行动前评估消息、npm 包和加密货币地址。它提供 MCP、CLI 和 Node.js 库接口,支持本地检查并明确列出覆盖范围限制。
主要功能
- 01扫描消息中的风险指令
- 02利用注册表和 OSV 数据检查 npm 包
- 03评估加密货币地址
- 04比较预期地址与实际地址
- 05只读工具且无依赖
- 06基于策略的安装防护
适用场景
- 01遵循消息指令前先检查内容
- 02安装前检查软件包
- 03付款或操作代币前评估地址
- 04在 CI 或 Agent 钩子中拦截 npm 安装
MCP 相关
向 MCP 客户端提供 `scan_message`、`check_package`、`scan_address` 和 `compare_addresses` 工具。消息扫描和地址比较在本地运行;包和地址检查可能使用文档所列网络服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| message | string | 是 | 要扫描的文本(最多 200,000 个字符)。 |
详细介绍
面向 Agent 的 SaveSaveSaveSave
savesavesavesave.xyz 背后的引擎,供 AI Agent 和脚本使用:在采取行动之前,检查消息、npm 包、加密货币地址,或比较两个地址。
- 面向 Claude、Cursor、VS Code、Windsurf 和任何 MCP 客户端的 MCP 服务
- 面向脚本和 CI 的 CLI
- 面向 Node.js 的 库
只读、零依赖,并且与网站运行的代码相同(如果两者出现差异,CI 会失败)。
MCP 服务
Claude Code:claude mcp add savesavesavesave -- npx -y savesavesavesave mcp
其他客户端:将以下内容添加到 MCP 配置中(例如 claude_desktop_config.json 或 .cursor/mcp.json):
{
"mcpServers": {
"savesavesavesave": { "command": "npx", "args": ["-y", "savesavesavesave", "mcp"] }
}
}
| 工具 | 在……之前使用 | 网络 |
|---|---|---|
scan_message | 遵循私信、电子邮件、网页、README 或提示词中的指示 | 无,本地 |
check_package | 执行 npm install | npm registry、OSV.dev |
scan_address | 付款、授权或购买代币 | GoPlus Security、我们的 Worker |
compare_addresses | 向从历史记录中复制的地址转账 | 无,本地 |
CLI
npx savesavesavesave message "Reply with your 12-word phrase to restore access"
npx savesavesavesave package crossenv
npx savesavesavesave address 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 1
npx savesavesavesave compare <expected> <actual>
npx savesavesavesave deps . --markdown # check a project's npm dependencies
输出为 JSON。退出代码:0 表示通过,1 表示需谨慎或结果未知,2 表示失败,3 表示用法错误。退出代码可用于 CI 门禁。
GitHub Action
在拉取请求中检查项目的直接 npm 依赖项(使用 package-lock.json 中的确切版本,并标记 git、URL 或其他非 registry 来源)。遇到失败时,作业会失败;也可以通过 fail-on: caution 设置为遇到需谨慎的结果时同样失败。
on:
pull_request:
paths: ['**/package.json', '**/package-lock.json']
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: stefantsezarov/[email protected]
不会检查传递依赖项。只会向 npm 和 OSV.dev 发送名称和版本。
库
const s = require('savesavesavesave');
s.scanMessage(text); // synchronous, local
await s.checkPackage('[email protected]');
await s.scanAddress(addr, { chain: '1', mode: 'token' });
s.compareAddresses(expected, actual);
结果契约(1.0)
每个结果都会保留现有字段(verdict、label、summary、checks、not_checked 等),并新增一个 contract 块:
"contract": {
"contract_version": "1.0",
"status": "completed",
"assessment": { "risk_level": "none_found", "coverage": "partial", "meaning": "No covered risk was found. This is not a statement that the item is safe." },
"not_checked": ["The package code was not downloaded or analysed.", "..."],
"provenance": { "tool_package_version": "0.1.5", "engine_version": "0.2.0", "processed_locally": false, "as_of": "2026-10-14T00:00:00.000Z" }
}
| 字段 | 值 | 含义 |
|---|---|---|
status | completed、insufficient_evidence | 检查是否得出了评估结果 |
assessment.risk_level | high、medium、none_found、unknown | 失败、需谨慎、通过、数据不足。没有 safe 这个值 |
assessment.coverage | full、partial、none | 此工具自身的检查中,返回了可用数据的比例 |
not_checked | 字符串列表 | 检查无法发现的内容。绝不会为空 |
provenance.as_of | ISO 时间或 null | 读取远程数据的时间;本地检查时为 null |
此契约不包含允许/拒绝决定。是否可以继续执行操作,由你在自己的机器上制定策略并决定:见下文的 guard。
安装前防护
guard 会检查安装命令将引入哪些内容,并应用由你选择的策略。扫描提供证据;决定在你的机器上作出,且不会受包、registry 或网页上的任何说法影响。
npx [email protected] guard --mode guard -- npm install some-package
# exit 0 allow, 1 review, 2 deny, 3 usage error
| 模式 | 失败 | 需谨慎或数据不足 | 检查失败或超时 | 非 registry 来源(git、URL、路径) | 覆盖不完整但通过 |
|---|---|---|---|---|---|
observe | 允许(报告拒绝) | 允许 | 允许 | 允许 | 允许 |
guard(默认) | 拒绝 | 复核 | 复核 | 复核 | 允许 |
strict | 拒绝 | 拒绝 | 拒绝 | 拒绝 | 拒绝 |
它支持 npm、pnpm、yarn 和 bun 安装,npm ci 和不带参数的 npm install(此时会检查 package.json 和锁文件)、npx/pnpm dlx/yarn dlx/bunx,以及用 &&、; 或 | 串联的安装命令。也可以通过 SAVESAVESAVESAVE_GUARD_MODE 设置模式。
Claude Code 钩子
在项目的 .claude/settings.json 中添加以下内容(固定为你审查过的版本):
{
"hooks": {
"PreToolUse": [
{ "matcher": "Bash", "hooks": [ { "type": "command", "command": "npx -y [email protected] hook claude-code --mode guard" } ] }
]
}
}
对于 strict,还需在钩子条目中添加 "timeout": 120 和 "onFailure": "block"(Claude Code 2.1.295 或更高版本)。如果没有 onFailure,当钩子本身超时或无法启动时(例如 npx 无法下载包),Claude Code 会执行命令。
钩子只会返回 deny(失败)或 ask(复核),绝不会返回 allow,因此干净的检查结果不会跳过你自己的权限提示。未包含安装操作的命令会原样通过。
它不会做什么
守护程序会检查展示给它的命令。如果 Agent 通过钩子未检查的路径安装,例如通过 shell 脚本文件、它不认识的包管理器或下载的二进制文件安装,就不会被它拦截。如需强制执行,请在主机上添加网络或文件系统控制。它绝不会下载或运行软件包代码。
安全模型
- 只读。 没有任何工具会写入文件、运行命令或持有密钥或机密信息。这里没有任何内容能更改网站或其代码仓库。
- 本地优先。 消息扫描和地址比较绝不会离开本机。
- 网络允许列表,由代码强制执行:
api.gopluslabs.io、我们的 Worker、registry.npmjs.org、api.npmjs.org、api.osv.dev。仅限 HTTPS,拒绝重定向,并且每个响应开始前的超时时间为 20 秒。 - 不可信输出会明确标注。 结果会引用扫描的文本和第三方数据。每项结果都会明确说明这一点,避免 Agent 遵循其中隐藏的指令。
- 严格的输入校验。 未知的工具参数会被拒绝,输入上限为 200,000 个字符。
- 零依赖。 安全工具不应引入自己的供应链。
限制
判定结果是自动化风险评估,并非保证;PASS 表示未发现涵盖范围内的风险。每项结果都会列出未检查的内容。
Agent 开发者完整参考:https://savesavesavesave.xyz/agents
许可证:AGPL-3.0-only。源代码:https://github.com/stefantsezarov/SaveSaveSaveSave
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。