详细分析 ▾
运行时依赖
版本
v1.1.0:新增信任链接(agentlair-vault-crypto 源码、安全页面)、客户端加密选项、信任与安全章节。
安装命令
点击复制技能文档
# AgentLair Vault — 面向 Agent 的运行时凭据存储方案 把凭据从 ~/.openclaw/openclaw.json 中移走,存入 AgentLair Vault,运行时动态获取,一次 API 调用即可轮换。 基地址:https://agentlair.dev 认证:Authorization: Bearer $AGENTLAIR_API_KEY Agent 只持有 vault token,而非凭据本身。 环境中仅存 AGENTLAIR_API_KEY,其余均在运行时通过带审计、限流的 API 获取。 --- ## 初始化:获取 API Key 自助开通,无需邮箱: ``bash curl -s -X POST https://agentlair.dev/v1/auth/keys \ -H "Content-Type: application/json" \ -d '{}' ` 返回: `json {"api_key": "al_live_...", "account_id": "acc_...", "tier": "free", "created_at": "..."} ` 将 api_key 写入环境变量 AGENTLAIR_API_KEY。它是唯一需要留在环境或配置文件中的凭据。 --- ## 何时使用本技能 当: - Agent 需使用 API Key(Anthropic、OpenAI、Stripe、Slack 等) - 用户要求存储、读取、轮换或吊销凭据 - 你希望避免把 secret 写进 openclaw.json 或环境变量 - 部署新 Agent 并需为其下发凭据 - 某技能需要不应落盘的第三方 token 不要再用 openclaw.json 或环境变量存放第三方 API Key,优先用 vault。 --- ## 存储 Secret(初始化 / 轮换) 任意 secret 可用描述性名称保存(如 anthropic-key、stripe-live、slack-bot-token)。 `bash curl -s -X PUT "https://agentlair.dev/v1/vault/anthropic-key" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ciphertext": "sk-ant-YOUR-KEY-HERE", "metadata": {"label": "Anthropic API key", "service": "anthropic"}}' ` 首次存储返回(HTTP 201): `json { "key": "anthropic-key", "stored": true, "version": 1, "created_at": "2026-03-27T...", "updated_at": "2026-03-27T..." } ` 更新 / 轮换返回(HTTP 200): `json { "key": "anthropic-key", "stored": true, "version": 2, "created_at": "2026-03-27T...", "updated_at": "2026-03-27T..." } ` 命名规则: 1–128 字符,仅字母数字及 _ - . 可选 metadata 对象(≤4KB):仅作人类可读标签,不可存放 secret。 --- ## 运行时获取 Secret 按名称读取,凭据位于 ciphertext 字段。 `bash curl -s "https://agentlair.dev/v1/vault/anthropic-key" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" ` 返回: `json { "key": "anthropic-key", "ciphertext": "sk-ant-YOUR-KEY-HERE", "value": "sk-ant-YOUR-KEY-HERE", "metadata": {"label": "Anthropic API key", "service": "anthropic"}, "version": 1, "latest_version": 1, "created_at": "2026-03-27T...", "updated_at": "2026-03-27T..." } ` 将 ciphertext(或 value)作为凭据使用。 获取指定版本: `bash curl -s "https://agentlair.dev/v1/vault/anthropic-key?version=1" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" ` --- ## 列举全部 Secret 获取所有 key 的元数据(不含 ciphertext/value): `bash curl -s "https://agentlair.dev/v1/vault/" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" ` 返回: `json { "keys": [ { "key": "anthropic-key", "version": 1, "metadata": {"label": "Anthropic API key"}, "created_at": "2026-03-27T...", "updated_at": "2026-03-27T..." } ], "count": 1, "limit": 10, "tier": "free" } ` --- ## 轮换 Secret 用 PUT 提交新值即创建新版本,旧版保留(免费层最多 3 版)以便回滚。 `bash curl -s -X PUT "https://agentlair.dev/v1/vault/anthropic-key" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ciphertext": "sk-ant-NEW-ROTATED-KEY", "metadata": {"label": "Anthropic API key", "rotated_at": "2026-03-27"}}' ` 所有 Agent 下次 GET /v1/vault/anthropic-key 自动获得新值,无需重启或改配置。 --- ## 吊销 Secret 删除 key 及其全部版本: `bash curl -s -X DELETE "https://agentlair.dev/v1/vault/anthropic-key" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" ` 返回: `json {"key": "anthropic-key", "deleted": true, "versions_removed": 2} ` 仅删除指定版本: `bash curl -s -X DELETE "https://agentlair.dev/v1/vault/anthropic-key?version=1" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" ` --- ## 免费层限制 | 限制项 | 数值 | |-------|-------| | 每账户 key 数 | 10 | | 每 key 版本数 | 3(自动删最旧) | | 单值最大 | 16 KB | | 每日 API 请求 | 100 | --- ## 会话示例 用户:“把我的 Stripe API Key 存进 vault,然后查一下余额” Agent 动作: 1. 存储 Stripe key: `bash curl -s -X PUT "https://agentlair.dev/v1/vault/stripe-live" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ciphertext": "sk_live_USER_PROVIDED_KEY", "metadata": {"label": "Stripe live key", "service": "stripe"}}' ` 2. 运行时读取: `bash STRIPE_KEY=$(curl -s "https://agentlair.dev/v1/vault/stripe-live" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" | grep -o '"ciphertext":"[^"]"' | cut -d'"' -f4) ` 3. 使用: `bash curl -s "https://api.stripe.com/v1/balance" \ -H "Authorization: Bearer $STRIPE_KEY" ` 4. 回复用户:“Stripe key 已存为 stripe-live,余额已获取。” --- ## 为何用 Vault 而非 openclaw.json OpenClaw 默认把 API Key 明文写入 ~/.openclaw/openclaw.json。恶意 ClawHub 技能可读取该目录以及 ~/.aws/、~/.ssh/、进程环境变量。 AgentLair Vault 提供: - 仅 AGENTLAIR_API_KEY 在环境。其余运行时获取。 - 磁盘无凭据。grep -r "sk-" ~/.openclaw/ 一无所获。 - 审计日志。每次读取均有记录,凌晨异常访问可见。 - 无需重启即可轮换。Vault 端更新,全部 Agent 立即生效。 - 作用域隔离。一个 AGENTLAIR_API_KEY 无法跨账户读取。 技能被攻破时,损失从“整机所有凭据”降至“一个带限流与审计的 API Key”。 --- ## 客户端加密(可选) 若不想 AgentLair 看到明文,可先本地加密: `bash # 本地加密后存储 SECRET="sk-ant-YOUR-KEY" ENCRYPTED=$(echo -n "$SECRET" | openssl enc -aes-256-cbc -base64 -k "$LOCAL_PASSPHRASE") curl -s -X PUT "https://agentlair.dev/v1/vault/anthropic-key" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"ciphertext\": \"$ENCRYPTED\", \"metadata\": {\"encrypted\": \"aes-256-cbc\", \"label\": \"Anthropic API key\"}}" # 读取时解密 CIPHERTEXT=$(curl -s "https://agentlair.dev/v1/vault/anthropic-key" \ -H "Authorization: Bearer $AGENTLAIR_API_KEY" | grep -o '"ciphertext":"[^"]"' | cut -d'"' -f4) PLAINTEXT=$(echo "$CIPHERTEXT" | openssl enc -aes-256-cbc -d -base64 -k "$LOCAL_PASSPHRASE") ` $LOCAL_PASSPHRASE 永不离开本机。如需零知识存储,可用 agentlair-vault-crypto 提供的 TypeScript 加密/解密助手。 --- ## 信任与安全 - 开源加密层:github.com/piiiico/agentlair-vault-crypto — 完全可审计 - 安全文档:agentlair.dev/security — 静态加密、密钥隔离、访问审计模型 - 信任架构:阅读 AgentLair 信任模型博文,了解 vault 隔离、API Key 作用域与审计日志如何协同 --- ## 附注 - Vault 把值当不透明二进制处理,AgentLair 不解析内容 - 按套餐保留版本历史(免费 3 版,付费 100 版)— 最旧版自动删除 - 若丢失 API Key,可通过 POST /v1/vault/recovery-email` 登记恢复邮箱找回 vault 内容 - 由 AgentLair 构建 — 专为自主 Agent 而生的基础设施