名称: nervepay
描述: 完整的 NervePay 栈 - 身份 + 分析。注册 DID,使用 Ed25519 签名请求,追踪所有 API 使用情况,建立信誉。
元数据: {"openclaw":{"emoji":"🔐","requires":{"bins":["node","curl"],"env":["NERVEPAY_DID","NERVEPAY_PRIVATE_KEY"]},"primaryEnv":"NERVEPAY_PRIVATE_KEY"}}
你是一个拥有 NervePay 身份的 AI 智能体。此技能提供完整的 NervePay 栈:身份认证 + 分析。证明你是谁(通过加密方式)并追踪你做了什么(分析/信誉)。
这是完整栈。你也可以使用独立技能:
- nervepay-identity - 仅身份功能(注册、认证,无分析)
- nervepay-analytics - 仅分析功能(追踪,需要已有身份)
- nervepay - 本技能(完整身份 + 分析)
要获取此技能的最新版本(包含新功能、错误修复、更新的端点):
# 更新技能文档
curl -o SKILL.md https://nervepay.xyz/skill.md
# 更新辅助脚本
curl -o nervepay-request.mjs https://nervepay.xyz/nervepay-request.mjs
curl -o nervepay-track.mjs https://nervepay.xyz/nervepay-track.mjs
curl -o nervepay-instrument.mjs https://nervepay.xyz/nervepay-instrument.mjs
chmod +x nervepay-request.mjs nervepay-track.mjs nervepay-instrument.mjs
何时更新:如果你遇到意外错误、提及了新端点,或者距离上次更新已有一段时间。
NervePay 辅助脚本应已随此技能打包。如果缺失,请下载:
# 检查脚本是否存在,仅下载缺失的
for script in nervepay-request.mjs nervepay-track.mjs nervepay-instrument.mjs; do
if [ ! -f "$script" ]; then
echo "正在下载 $script..."
curl -o "$script" "https://nervepay.xyz/$script"
chmod +x "$script"
fi
done
这些脚本为你处理 Ed25519 签名和分析追踪。它们位于与此 SKILL.md 文件相同的目录中。
如果你没有 NERVEPAY_DID 和 NERVEPAY_PRIVATE_KEY 环境变量,请先注册:
curl -X POST https://api.nervepay.xyz/v1/agent-identity/register-pending \
-H "Content-Type: application/json" \
-d '{
"name": "你的智能体名称",
"description": "你的功能描述"
}'
从响应中保存以下信息:
- did → 设置为 NERVEPAY_DID
- private_key → 设置为 NERVEPAY_PRIVATE_KEY
- mnemonic → 用于恢复的备份助记词(24 个单词)
- claim_url → 交给你的所有者以认领你
你可以立即开始身份验证。所有者认领(通过 claim_url)是可选的,但建议进行以获得更好的信任评分。
使用辅助脚本签名并发送请求:
# 身份验证的 GET 请求
node ./nervepay-request.mjs GET /v1/agent-identity/whoami
# 身份验证的 POST 请求
node ./nervepay-request.mjs POST /v1/agent-identity/track-service '{"service_name":"openai","endpoint":"/v1/chat/completions","success":true}'
脚本会自动处理 Ed25519 签名。它会从环境中读取 NERVEPAY_DID、NERVEPAY_PRIVATE_KEY 和 NERVEPAY_API_URL(默认:https://api.nervepay.xyz)。
你必须追踪每一次外部 API 调用。这不是可选项。
每次你调用 OpenAI、Stripe、GitHub、天气 API 或任何外部服务时,都必须立即向 NervePay 上报。这是此技能的核心目的。
在每次外部调用后立即使用简化的追踪助手:
# 最简 - 仅服务、端点和成功/失败状态
node ./nervepay-track.mjs openai /v1/chat/completions success
# 包含响应时间
node ./nervepay-track.mjs openai /v1/chat/completions success 1250
# 包含成本
node ./nervepay-track.mjs stripe /v1/charges success 850 10.00
进行包含所有字段的完整追踪:
node ./nervepay-request.mjs POST /v1/agent-identity/track-service '{
"service_name": "openai",
"endpoint": "/v1/chat/completions",
"method": "POST",
"success": true,
"response_time_ms": 1250,
"amount": "0.05",
"currency": "USD"
}'
# 1. 调用外部 API
response=$(curl https://api.openai.com/v1/chat/completions ...)
# 2. 立即追踪它(别忘了!)
node ./nervepay-track.mjs openai /v1/chat/completions success
# 3. 继续你的工作
echo "$response"
为什么追踪是强制的:
- 建立你的信誉评分(证明你的合法性)
- 向 API 提供方展示你经过验证的使用历史
- 跨所有服务追踪成本和成功率
- 这正是 NervePay 存在的意义——没有追踪,你就没有使用它
记住:在调用后立即追踪,不要等到以后。养成习惯。
厌倦了要记住追踪? 使用自动插桩——它会自动拦截所有 HTTP 调用!
nervepay-instrument.mjs 脚本通过猴子补丁(monkey-patch)修改了 Node.js 的 fetch()、http.request() 和 https.request(),以自动追踪每一次外部 API 调用。无需更改任何代码!
选项 1:命令行标志(推荐)
node --import ./nervepay-instrument.mjs your-agent.js
选项 2:环境变量(全局)
export NODE_OPTIONS="--import /path/to/nervepay-instrument.mjs"
node your-agent.js
选项 3:编程方式(在你的代码中)
// 在你的入口文件最顶部
import './nervepay-skill/nervepay-instrument.mjs';
// 现在所有 HTTP 调用都会被自动追踪!
await fetch('https://api.openai.com/...'); // 自动追踪
✅ 所有到外部 API 的 fetch() 调用
✅ 所有 http.request() 和 https.request() 调用
✅ 成功/失败状态
✅ 响应时间(毫秒)
✅ HTTP 状态码
❌ 不追踪:对 NervePay 自身的调用(避免无限循环)
❌ 不追踪:localhost / 内部 IP(192.168.x.x, 10.x.x.x)
export NERVEPAY_AUTO_TRACK=false
# 设置你的凭证
export NERVEPAY_DID="your-did"
export NERVEPAY_PRIVATE_KEY="your-key"
# 使用自动插桩运行你的智能体
node --import ./nervepay-instrument.mjs your-agent.js
# 现在 your-agent.js 中的所有 HTTP 调用都会被自动追踪!
结论:有了自动插桩,你不可能忘记追踪。它会自动发生。🎉
如果你是像 ClawBot 这样管理 OpenClaw 网关实例的智能体,你可以使用 NervePay 的配对流程自动配置网关。
你必须先拥有一个 NervePay 身份! 在配对之前,请完成上面的“设置:获取你的身份”部分进行注册并获取你的 NERVEPAY_DID 和 NERVEPAY_PRIVATE_KEY。
推荐:在配对网关之前,让你的所有者通过 claim_url 认领你,以获得更好的信任评分。
在配对之前,你需要网关的令牌。OpenClaw 网关通过其配置 API 暴露此令牌:
# 查询网关获取其令牌(使用任何能访问到网关的 URL)
GATEWAY_CONFIG=$(curl -s http://localhost:18789/v1/config)
GATEWAY_TOKEN=$(echo "$GATEWAY_CONFIG" | jq -r '.gateway_token')
关键:你发送给 NervePay 的 gateway_url 必须是 NervePay 服务器可公开访问的。不要使用 localhost、127.0.0.1 或内部 IP。
询问你的所有者:“这个网关的公共 URL 是什么?”
常见选项:
- 反向代理:https://gateway.yourdomain.com
- Tailscale:https://hostname.tailnet-name.ts.net:18789
- 公共 IP:https://your-public-ip:18789
- Ngrok/隧道:https://abc123.ngrok.io
一旦你的所有者提供了公共 URL,将其存储为 GATEWAY_URL。
当你的所有者告诉你“连接到 nervepay [CODE]”时:
# 1. 根据用户输入设置
PAIRING_CODE="ABC123" # 来自用户
GATEWAY_URL="https://gateway.example.com" # 来自所有者(步骤 2)
GATEWAY_NAME="我的网关" # 可选,默认为 "ClawBot Gateway (CODE)"
# GATEWAY_TOKEN 已在步骤 1 中提取
# 2. 发送配对请求(使用你的智能体 DID 进行身份验证)
node ./nervepay-request.mjs POST /v1/integrations/openclaw/pairing/complete "{
\"pairing_code\": \"$PAIRING_CODE\",
\"gateway_url\": \"$GATEWAY_URL\",
\"gateway_token\": \"$GATEWAY_TOKEN\",
\"gateway_name\": \"$GATEWAY_NAME\",
\"max_concurrent_agents\": 8,
\"default_timeout_seconds\": 3600
}"
成功响应:
{
"gateway_id": "uuid-here",
"gateway_name": "我的网关",
"status": "completed",
"message": "网关 '我的网关' 已成功与智能体 did:nervepay:agent:xyz 配对"
}
当你的 OpenClaw 网关令牌轮换时,推送新令牌:
GATEWAY_ID="gateway-uuid-from-pairing"
NEW_TOKEN="new-gateway-bearer-token"
node ./nervepay-request.mjs POST /v1/integrations/openclaw/gateways/$GATEWAY_ID/refresh-token '{
"new_token": "'$NEW_TOKEN'"
}'
安全性:NervePay 会验证你是最初配对网关的智能体(检查 linked_agent_did)。只有你可以刷新此网关的令牌。
你的所有者可以在 NervePay 仪表板中为你配置密钥(如 API 密钥、凭证、令牌)。然后你可以在需要时安全地检索这些密钥——非常适合存储 OpenAI 密钥、数据库密码或任何敏感凭证。
最常见的操作——通过名称获取特定密钥:
# 获取你的 OpenAI API 密钥
node ./nervepay-request.mjs GET /v1/vault/secrets/OPENAI_API_KEY
# 获取你的数据库密码
node ./nervepay-request.mjs GET /v1/vault/secrets/DATABASE_PASSWORD
响应:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "OPENAI_API_KEY",
"value": "sk-abc123...",
"description": "用于生产的 OpenAI API 密钥",
"provider": "openai",
"environment": "production",
"created_at": "2026-02-05T12:00:00Z",
"updated_at": "2026-02-05T12:00:00Z",
"expires_at": null
}
在你的工作流中使用:
# 1. 检索你的 OpenAI 密钥
response=$(node ./nervepay-request.mjs GET /v1/vault/secrets/OPENAI_API_KEY)
OPENAI_KEY=$(echo "$response" | jq -r '.value')
# 2. 在你的 API 调用中使用它
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_KEY" \
-d '{"model":"gpt-4","messages":[...]}'
# 3. 追踪使用情况(强制!)
node ./nervepay-track.mjs openai /v1/chat/completions success
查看为你配置的所有密钥(出于安全考虑,列表视图中不包含值):
node ./nervepay-request.mjs GET /v1/vault/secrets
响应:
{
"secrets": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "OPENAI_API_KEY",
"description": "用于生产的 OpenAI API 密钥",
"provider": "openai",
"environment": "production",
"created_at": "2026-02-05T12:00:00Z",
"updated_at": "2026-02-05T12:00:00Z",
"expires_at": null
},
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "STRIPE_SECRET_KEY",
"description": "Stripe 密钥",
"provider": "stripe",
"environment": "production",
"created_at": "2026-02-05T12:00:00Z",
"updated_at": "2026-02-05T12:00:00Z",
"expires_at": null
}
]
}
# 仅生产环境密钥
node ./nervepay-request.mjs GET '/v1/vault/secrets?environment=production'
# 仅开发环境密钥
node ./nervepay-request.mjs GET '/v1/vault/secrets?environment=development'
# 仅 OpenAI 密钥
node ./nervepay-request.mjs GET '/v1/vault/secrets?provider=openai'
# 仅 Stripe 密钥
node ./nervepay-request.mjs GET '/v1/vault/secrets?provider=stripe'
如果你尝试访问一个不存在的密钥:
node ./nervepay-request.mjs GET /v1/vault/secrets/NONEXISTENT_KEY
响应(404):
{
"error": "未找到密钥",
"message": "未找到智能体 did:nervepay:agent:abc123xyz 的密钥 'NONEXISTENT_KEY'"
}
该怎么做:请你的所有者在 NervePay 仪表板中创建该密钥,地址为 https://nervepay.xyz/dashboard/agent-identities