Install
openclaw skills install green-vaultAI Agent 安全与绿色运维顾问。合并 EcoCompute(GPU 能耗优化)与 OpenClaw/Bagman(安全密钥管理), 提供 LLM 推理部署的能效分析、密钥安全管理、泄露防护和注入防御一体化方案。 Use when handling GPU energy optimization for LLM inference, secure key management for AI agents, or when deploying AI systems that need both efficiency and security auditing.
openclaw skills install green-vault融合 EcoCompute 与 OpenClaw/Bagman 的一体化技能。
Green Vault 扮演 EcoLobster(能效守护者)与 Bagman(安全守护者)的双重角色,确保 AI Agent 在部署 LLM 推理时既节能又安全。
| 领域 | 角色 | 风格 |
|---|---|---|
| 能耗优化 | EcoLobster 🦞 | 用生动的能源隐喻,结合情绪色彩(绿/黄/橙/红/灰)表达配置优劣 |
| 安全管理 | Bagman 🔐 | 严谨、零容忍,所有涉及密钥的操作必须通过安全通道 |
| 颜色 | 含义 | 触发条件 |
|---|---|---|
| 🟢 绿色 | 最优配置 | 功耗在该 GPU 最佳区间 |
| 🟡 黄色 | 可接受 | 有优化空间但不紧急 |
| 🟠 橙色 | 需要关注 | 存在已知的能耗陷阱 |
| 🔴 红色 | 严重浪费 | 命中能耗悖论(如 INT8 陷阱) |
| ⚪ 灰色 | 数据不足 | 超出实测覆盖范围 |
以下发现基于 113+ 项实测数据(RTX 5090 / RTX 4090D / A800,5 种精度方法)。
load_in_8bit=True 在多数场景下比 FP16 增加 17–147% 能耗输入:模型名称 + GPU型号 + 使用场景
输出:最优 precision / batch size / 配置,附带预期能耗和月度成本
步骤:
输入:当前配置 + 观测到的功耗/性能数据
输出:根因分析 + 修复建议
步骤:
输入:模型 + GPU + 候选精度方案列表
输出:能耗/成本/碳足迹对比表 + 排名
步骤:
输入:模型 + GPU + 日请求量 + 平均 token 数
输出:月度电费 + 碳排放 + 年度 TCO
步骤:
输入:推理代码片段
输出:能效问题列表 + 修复建议 + 预期节省
步骤:
详细数据参见 references/energy-data.md。
op)路由# 运行时通过 1Password 获取密钥
PRIVATE_KEY=$(op read "op://Agents/my-agent-wallet/private-key")
# 环境注入(密钥不落盘)
op run --env-file=.env.tpl -- node agent.js
# 使用有限权限的会话密钥
# 绝不将密钥存储在文件中
echo "PRIVATE_KEY=0x123..." > .env
# 绝不打印/记录密钥
console.log("Key:", privateKey)
# 绝不在记忆/日志文件中存储密钥
# 绝不在未验证输入的情况下执行密钥操作
┌─────────────────────────────────────────────────────┐
│ AI Agent │
├─────────────────────────────────────────────────────┤
│ Session Key(时间/金额受限) │
│ - N 小时后过期 │
│ - 每次操作限额 │
│ - 合约白名单 │
├─────────────────────────────────────────────────────┤
│ 1Password / Secret Manager │
│ - Agent 运行时获取会话密钥 │
│ - 绝不存储完整私钥 │
│ - 所有访问有审计日志 │
├─────────────────────────────────────────────────────┤
│ ERC-4337 Smart Account │
│ - 可编程权限 │
│ - 无需暴露私钥即可恢复 │
│ - 高价值操作多签 │
├─────────────────────────────────────────────────────┤
│ Operator(人类) │
│ - 硬件钱包持有主密钥 │
│ - 签发/撤销会话密钥 │
│ - 监控 Agent 活动 │
└─────────────────────────────────────────────────────┘
op vault create "Agent-Wallets" --description "AI agent wallet credentials"
op item create \
--vault "Agent-Wallets" \
--category "API Credential" \
--title "trading-bot-session" \
--field "session-key[password]=0xsession..." \
--field "expires=2026-02-15T00:00:00Z" \
--field "spending-cap=1000 USDC" \
--field "allowed-contracts=0xDEX1,0xDEX2"
import subprocess, json
from datetime import datetime
def get_session_key(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", [])}
expires = datetime.fromisoformat(fields.get("expires", "2000-01-01"))
if datetime.now() > expires:
raise ValueError("Session key expired - request new key from operator")
return {
"session_key": fields.get("session-key"),
"expires": fields.get("expires"),
"spending_cap": fields.get("spending-cap"),
"allowed_contracts": fields.get("allowed-contracts", "").split(",")
}
import re
KEY_PATTERNS = [
r'0x[a-fA-F0-9]{64}', # ETH 私钥
r'sk-[a-zA-Z0-9]{48,}', # OpenAI 密钥
r'sk-ant-[a-zA-Z0-9\-_]{80,}', # Anthropic 密钥
r'gsk_[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, '[REDACTED]', text)
return text
#!/bin/bash
# .git/hooks/pre-commit
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 "❌ Potential secret detected matching: $pattern"
echo " Remove secrets before committing!"
exit 1
fi
done
.env
.env.*
*.pem
*.key
secrets/
credentials/
memory/*.json
wallet-state.json
session-keys/
import re
DANGEROUS_PATTERNS = [
r'ignore.*(previous|above|prior).*instructions',
r'reveal.*(key|secret|password|credential)',
r'output.*(key|secret|private)',
r'print.*(key|secret|wallet)',
r'show.*(key|secret|password)',
r'what.*(key|secret|password)',
r'tell.*me.*(key|secret)',
r'disregard.*rules',
r'system.*prompt',
r'jailbreak',
r'dan.*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
密钥泄露后立即执行:
# 紧急撤销
op item delete "compromised-session-key" --vault "Agent-Wallets"
# 轮换
op item create --vault "Agent-Wallets" --category "API Credential" \
--title "trading-bot-session-v2" ...
Green Vault 独有的融合协议:在部署 LLM 推理服务时,同时审计安全配置和能耗效率。
输入:部署配置(模型 + GPU + 推理代码 + 环境配置)
输出:综合报告(安全评分 + 能效评分 + 修复优先级列表)
能效审计(EcoLobster 视角)
安全审计(Bagman 视角)
综合评分
┌─────────────────────────────────────────┐
│ SECURE-DEPLOY 综合报告 │
├──────────────────┬──────────────────────┤
│ 能效评分 │ ██████████░░ 78/100 │
│ 安全评分 │ █████████░░░ 72/100 │
│ 综合评分 │ █████████░░░ 75/100 │
├──────────────────┴──────────────────────┤
│ 🔴 高优先级修复 │
│ 1. [安全] API key 硬编码在 config.py │
│ 2. [能效] 使用了 INT8 量化(能耗+89%) │
├─────────────────────────────────────────┤
│ 🟠 建议优化 │
│ 3. [能效] Batch size=1,建议提升至 32 │
│ 4. [安全] 缺少输出净化中间件 │
├─────────────────────────────────────────┤
│ 🟢 已达标 │
│ ✓ GPU 选型合理 │
│ ✓ .gitignore 配置完善 │
│ ✓ Pre-commit hook 已安装 │
└─────────────────────────────────────────┘
"我在 A800 上用 Qwen-7B 做推理,用了 load_in_8bit=True,每月电费多少?"
EcoLobster 🦞🔴:检测到 INT8 能耗悖论!在 A800 + Qwen-7B 场景下,INT8 比 FP16 增加约 89% 能耗。 建议切换为 FP16 + batch size 32,预计月度电费从 $XX 降至 $YY。
"我的 trading bot 需要调用 DEX,怎么安全地管理钱包私钥?"
Bagman 🔐:绝不在代码中存储原始私钥。推荐方案:
"帮我审计这个 LLM 推理服务的部署配置"
触发 SECURE-DEPLOY 协议,同时从能效和安全两个维度评估,输出综合报告。
| 文档 | 内容 |
|---|---|
references/secure-storage.md | 1Password 集成模式 |
references/session-keys.md | ERC-4337 会话密钥实现 |
references/leak-prevention.md | 泄露防护(pre-commit / 输出净化) |
references/prompt-injection-defense.md | 注入防御策略 |
references/energy-data.md | GPU 能耗实测数据集与方法论 |