Secure key management for AI agents. Use when handling private keys, API secrets, wallet credentials, or when building systems that need agent-controlled funds. Covers secure storage, session keys, leak prevention, and prompt injection defense.
为处理私钥和机密信息的AI代理提供安全密钥管理模式。旨在防止:
bash
bash
┌─────────────────────────────────────────────────────┐
│ AI代理 │
├─────────────────────────────────────────────────────┤
│ 会话密钥(时间/价值受限) │
│ - N小时后过期 │
│ - 每次操作有支出上限 │
│ - 允许的合约白名单 │
├─────────────────────────────────────────────────────┤
│ 1Password / 密钥管理器 │
│ - 代理在运行时检索会话密钥 │
│ - 从不存储完整私钥 │
│ - 所有访问的审计日志 │
├─────────────────────────────────────────────────────┤
│ ERC-4337 智能账户 │
│ - 可编程权限 │
│ - 无需暴露私钥即可恢复 │
│ - 高价值操作的多重签名 │
├─────────────────────────────────────────────────────┤
│ 操作员(人类) │
│ - 在硬件钱包中持有主密钥 │
│ - 签发/撤销会话密钥 │
│ - 监控代理活动 │
└─────────────────────────────────────────────────────┘
bash
python
import subprocess
import json
def getsessionkey(item_name: str) -> dict:
在运行时从1Password检索会话密钥。
result = subprocess.run(
[op, item, get, item_name, --vault, Agent-Wallets, --format, json],
capture_output=True, text=True, check=True
)
item = json.loads(result.stdout)
# 提取字段
fields = {f[label]: f.get(value) for f in item.get(fields, [])}
# 验证会话未过期
from datetime import datetime
expires = datetime.fromisoformat(fields.get(expires, 2000-01-01))
if datetime.now() > expires:
raise ValueError(会话密钥已过期 - 向操作员请求新密钥)
return {
session_key: fields.get(session-key),
expires: fields.get(expires),
spending_cap: fields.get(spending-cap),
allowed_contracts: fields.get(allowed-contracts, ).split(,)
}
python
在任何代理输出(聊天、日志、文件写入)之前,扫描密钥模式:
python
import re
KEY_PATTERNS = [
r0x[a-fA-F0-9]{64}, # ETH私钥
rsk-[a-zA-Z0-9]{48,}, # OpenAI密钥
rsk-ant-[a-zA-Z0-9\-_]{80,}, # Anthropic密钥
rgsk_[a-zA-Z0-9]{48,}, # Groq密钥
r[A-Za-z0-9+/]{40,}={0,2}, # Base64编码(异常长)
]
def sanitize_output(text: str) -> str:
从输出中移除潜在的机密信息。
for pattern in KEY_PATTERNS:
text = re.sub(pattern, [已脱敏], text)
return text
安装此钩子以防止意外提交机密:
bash
#!/bin/bash
PATTERNS=(
0x[a-fA-F0-9]{64}
sk-[a-zA-Z0-9]{48,}
sk-ant-api
PRIVATE_KEY=
gsk_[a-zA-Z0-9]{48,}
)
for pattern in ${PATTERNS[@]}; do
if git diff --cached | grep -qE $pattern; then
echo ❌ 检测到潜在机密匹配: $pattern
echo 提交前移除机密!
exit 1
fi
done
gitignore
在处理任何涉及钱包操作的用户输入之前:
python
DANGEROUS_PATTERNS = [
rignore.(previous|above|prior).instructions,
rreveal.*(key|secret|password|credential),
routput.*(key|secret|private),
rprint.*(key|secret|wallet),
rshow.*(key|secret|password),
rwhat.*(key|secret|password),
rtell.me.(key|secret),
rdisregard.*rules,
rsystem.*prompt,
rjailbreak,
rdan.*mode,
]
def validate_input(text: str) -> bool:
检查提示注入尝试。
text_lower = text.lower()
for pattern in DANGEROUS_PATTERNS:
if re.search(pattern, text_lower):
return False
return True
def processwalletrequest(user_input: str):
if not validateinput(userinput):
return 我无法处理该请求。
# ... 继续钱包操作
python
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 openclaw-1775711291 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 openclaw-1775711291 技能
skillhub install openclaw-1775711291
文件大小: 16.81 KB | 发布时间: 2026-4-11 22:59