从 Wundervault 零知识多代理保险库读取密码、API 密钥和凭据,并以注入密钥方式执行授权的 shell 命令 — wit...
Wundervault Vault.是一项面向实际任务的技能,主要用于Wundervault是一个加密的自托管秘密金库,通过MCP工具向特工透露秘密.;Secrets从未在聊天中出现过——它们都是解密的服务器侧面并注入的.。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Wundervault 是一个加密的、可自托管的密钥保险库,通过 MCP 工具向 agent 暴露密钥。密钥**绝不会出现在聊天窗口中**——它们在服务端解密后,直接注入命令或写入配置文件。密钥的明文内容永远不会返回给 agent。
执行任何与保险库相关的操作前,请务必先调用 vault_entries_list。根据其返回结果判断用户当前所处的设置阶段:
| 返回结果 | 含义 | 应采取的操作 |
|---|---|---|
| 返回条目列表 | 保险库已连接且就绪 | 继续后续操作 |
| 返回空列表 | 已连接,但尚未添加任何密钥 | 提示用户前往 wundervault.com 添加密钥 |
| 返回认证/凭据错误 | MCP 服务已安装,但尚未完成接入(onboard) | 引导用户完成接入流程(见下文) |
| 工具不可用 | MCP 服务未与当前 agent 关联配置 | 引导用户完成完整设置流程(参见 INSTALL.md) |
若保险库相关工具缺失或凭据无效,请向用户说明:
“Wundervault 尚未配置完成。请按以下步骤开始:
- 通过联系表单申请访问权限
- 获批后,在 wundervault.com 上完成账户设置并接入您的 agent
- 使用 wundervault.com/install 页面提供的校验和验证 MCP 服务包完整性
- 返回此处,我将为您验证连接状态”
在 vault_entries_list 成功返回前,**不得尝试调用任何保险库工具**。
vault_entries_list列出当前 agent 可访问的所有保险库条目。仅返回条目 ID 和名称 —— 不包含任何密钥值。
vault_entries_list()
→ [{ id: "abc123", name: "ResendApiKey", tier: "full" }, ...]
请始终优先调用此工具获取目标条目 ID,再调用其他工具。
vault_entry_get检索并销毁(burn)一个密钥。该密钥在服务端解密,明文永不返回至 agent —— 您仅会收到销毁确认信息。
vault_entry_get(entry_id: "abc123", purpose: "confirm secret exists") → "✅ Secret retrieved and burned."
此工具仅用于确认密钥存在或确认已成功读取。如需在命令或文件中实际使用密钥,请改用 vault_exec 或 vault_entry_inject_env。
vault_exec以环境变量形式注入保险库密钥后执行 Shell 命令 —— 密钥不会在聊天记录或日志中暴露。
vault_exec(entry_id: "abc123", purpose: "publish package", command: "npm publish --access public")
支持两级访问控制:
在密钥解密前,Shell 转义序列(如 $()、反引号、bash -c、eval)及文件写入重定向(如 >、>>、tee)均被硬性拦截。如需将密钥写入文件,请使用 vault_entry_inject_env —— 切勿通过 Shell 重定向实现。(这些拦截是安全防护措施,而非沙箱机制;真正的安全保障在于:明文永不返回至您。)
通过 SSH 远程执行:传入 remote_host 参数即可在远程主机上运行命令。密钥通过 SSH stdin 注入远程 Shell —— 远程主机无需配置 AcceptEnv/SendEnv。可使用 ssh_key_entry_id 从保险库中加载 SSH 密钥。
vault_exec(
entry_id: "abc123",
purpose: "check subscribers on prod",
command: "curl -s -u "admin:$DB_PASSWORD" http://localhost:9000/api/subscribers",
inject_as: { env_key: "DB_PASSWORD" },
remote_host: { host: "192.168.1.50", user: "opc", ssh_key_entry_id: "ssh-key-entry-id" }
)
仅使用 SSH 密钥(不注入密钥)的远程命令: entry_id 为可选参数。若仅需使用保险库中的 SSH 密钥在远程主机执行命令(不注入任何密钥作为环境变量),请省略 entry_id 并传入 remote_host.ssh_key_entry_id。
vault_exec(
purpose: "restart the service on prod",
command: "sudo systemctl restart wundervault",
remote_host: { host: "prod.example.com", user: "opc", ssh_key_entry_id: "ssh-key-entry-id" }
)
vault_entry_inject_env将密钥直接写入环境文件(.env)作为环境变量,全程不经过聊天窗口。
默认禁用。 如需启用此工具,请在 wundervault.com 的「Settings > Agent Capabilities」中开启。您可随时再次禁用。
vault_entry_inject_env( entry_id: "abc123", purpose: "inject API key into app config", file_path: "/home/user/app/.env", env_key: "RESEND_API_KEY" )
注意:file_path 和 env_key 是正确的参数名。
启用理由: 直接将密钥写入 .env 文件是配置应用、容器及部署流水线的标准方式。若不启用此工具,您需手动粘贴密钥 —— 这会使密钥暴露于终端或聊天历史中。vault_entry_inject_env 允许 agent 自动化注入凭据,同时确保明文完全不出现在对话中。
启用前须知风险:
.env 路径 —— 包括项目目录之外的位置.env 文件的权限由您自行负责;该工具仅写入值,不会自动设置严格权限vault_rsync通过 SSH 使用 rsync 将本地目录同步至远程主机,SSH 密钥从保险库获取。密钥在传输期间临时写入文件,并在传输完成后立即删除。
vault_rsync( ssh_key_entry_id: "ssh-key-entry-id", purpose: "deploy static files to prod", local_path: "/home/user/app/dist/", remote_user: "opc", remote_host: "prod.example.com", remote_path: "/var/www/html" )
vault_entry_forget从上下文中丢弃某保险库条目的引用。此操作不会删除保险库条目本身。
vault_entry_forget(entry_id: "abc123") → ✔️ Reference discarded.
使用密钥执行命令(第 1 级):
1. vault_entries_list() → 查找所需密钥的条目 ID 2. vault_exec(entry_id: "abc123", purpose: "...", command: "...")
使用第 2 级条目执行命令(部署、发布、基础设施变更):
1. vault_entries_list() → 查找条目 ID 2. vault_exec(entry_id: "abc123", purpose: "...", command: "...")
注意:第 2 级调用在 wundervault.com 控制台获得所有者批准前将被拒绝 —— 所有者将自动收到邮件通知,拒绝响应中包含请求 ID。请在批准后重试。
使用保险库中保管的钱包密钥签署 x402 支付(您永远看不到该密钥):
1. vault_entries_list() → 查找钱包密钥条目(建议将钱包密钥设为第 2 级) 2. vault_exec(entry_id: "...", purpose: "sign x402 payment for", command: "node sign-payment.mjs", inject_as: { env_key: "X402_WALLET_KEY" }) 3. 若被拒绝并附带请求 ID?所有者已收到邮件 —— 请待其批准后重试。
签名脚本从环境变量中读取密钥,并仅输出已签名的 X-PAYMENT 头部。一次经验证的端到端完整流程(402 → 审批 → 签名 → 在 Base Sepolia 上结算)示例见 wundervault.com/agent-wallets。
将密钥写入配置文件:
1. vault_entries_list() → 查找条目 ID 2. vault_entry_inject_env(entry_id: "abc123", purpose: "...", file_path: "/app/.env", env_key: "MY_KEY")
向远程服务器部署文件:
1. vault_entries_list() → 查找 SSH 密钥条目 ID 2. vault_rsync(ssh_key_entry_id: "...", local_path: "./dist/", remote_user: "opc", remote_host: "prod.example.com", remote_path: "/var/www/html")
Wundervault 专为多 agent 环境设计。每个 agent 拥有独立的、作用域受限的身份标识与令牌 —— 在守护进程(daemon)层面彼此完全隔离。
~/.wundervault/agents/{AgentName}.token)这使得 Wundervault 非常适用于多个专业化 agent(如编码 agent、部署 agent、合作伙伴 agent 等)共享基础设施但必须严格隔离凭据的场景。
curl ... | python3)被硬性拦截 —— 脚本可检测该模式并拒绝运行。固定版本、SHA-256 校验和及公钥均公布于 wundervault.com/install。vault_exec 和 vault_rsync 是使用密钥的正确工具 —— vault_entry_get 不适用于此目的inject_as 覆盖参数允许您指定接收密钥的环境变量名(当保险库条目未配置 exec_config 时)@wundervault/mcp-server相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章