OpenClaw Nostr 渠道
通过可选插件将 OpenClaw 连接到 Nostr 去中心化网络。该集成使您的 AI 助手能够在任何 Nostr relay 上接收和回复 NIP-04 加密私信,无需中心化服务器、无需注册账户,只需一对加密密钥和 relay 连接即可。非常适合注重隐私、需要抗审查和自主权的部署场景。
Nostr 支持的功能
文本消息
支持
媒体与文件
不支持
消息反应
支持
消息线程
不支持
语音消息
不支持
群聊
不支持
Nostr 前置条件
- 已安装并运行 OpenClaw Gateway
- 一对 Nostr 密钥(私钥为 nsec 或十六进制格式)— 可使用 'nak key generate' 生成
- 至少一个可通过 WebSocket 访问的 Nostr relay(例如 wss://relay.damus.io)
- 服务器上已安装 Node.js 18+
Nostr 快速设置
安装 Nostr 插件
运行 'openclaw plugins install @openclaw/nostr' 以添加 Nostr 渠道。也可以使用 'openclaw onboard' 或 'openclaw channels add',然后从插件列表中选择 Nostr。安装后请重启 Gateway。
生成密钥对并完成配置
使用 'nak key generate' 生成 Nostr 密钥对。将私钥设置为环境变量(export NOSTR_PRIVATE_KEY="nsec1..."),然后在 openclaw.json 配置中通过 ${NOSTR_PRIVATE_KEY} 引用。
启动并发送测试 DM
使用 'openclaw start' 重启 Gateway。在启动日志中找到机器人的公钥(npub)。打开任意 Nostr 客户端(如 Damus、Amethyst、Primal),向机器人的 npub 发送加密 DM。如果使用默认的配对策略,需要通过 CLI 批准发送者。
Nostr 配置示例
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": [
"wss://relay.damus.io",
"wss://nos.lol"
],
"dmPolicy": "pairing"
}
}
}Nostr 深入了解
架构概述
插件安装
密钥生成与管理
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}Relay 配置
{
"channels": {
"nostr": {
"relays": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
]
}
}
}DM 策略
{
"channels": {
"nostr": {
"dmPolicy": "allowlist",
"allowFrom": [
"npub1abc...xyz",
"npub1def...uvw"
]
}
}
}个人资料元数据(NIP-01)
{
"channels": {
"nostr": {
"profile": {
"name": "openclaw-bot",
"display_name": "OpenClaw AI Assistant",
"about": "AI-powered assistant on Nostr. DM me!",
"picture": "https://example.com/bot-avatar.png",
"nip05": "bot@yourdomain.com"
}
}
}
}加密与协议支持
使用本地 Relay 进行测试
{
"channels": {
"nostr": {
"relays": ["ws://localhost:7777"],
"dmPolicy": "open",
"allowFrom": ["*"]
}
}
}Nostr 配置参考
| Key | Type | Default | Description |
|---|---|---|---|
| privateKey | string | (required) | Nostr 私钥,支持 nsec(Bech32)或 64 字符十六进制格式。请使用环境变量引用。 |
| relays | string[] | ["wss://relay.damus.io", "wss://nos.lol"] | 要连接的 Nostr relay WebSocket URL 列表 |
| dmPolicy | string | "pairing" | DM 访问控制策略:'pairing'、'allowlist'、'open' 或 'disabled' |
| allowFrom | string[] | [] | 允许给机器人发消息的公钥列表(npub 或十六进制格式),在 dmPolicy 为 'allowlist' 时生效 |
| enabled | boolean | true | 启用或禁用 Nostr 渠道 |
| name | string | "" | 此渠道实例的显示名称 |
| profile.name | string | "" | 作为 NIP-01 元数据发布的机器人用户名 |
| profile.display_name | string | "" | 作为 NIP-01 元数据发布的完整显示名称 |
| profile.about | string | "" | 作为 NIP-01 元数据发布的机器人简介/描述 |
| profile.picture | string | "" | 作为 NIP-01 元数据发布的头像图片 URL(须使用 HTTPS) |
| profile.banner | string | "" | 作为 NIP-01 元数据发布的横幅图片 URL(须使用 HTTPS) |
| profile.website | string | "" | 作为 NIP-01 元数据发布的网站 URL |
| profile.nip05 | string | "" | NIP-05 验证标识符(例如 'bot@yourdomain.com') |
| profile.lud16 | string | "" | 用于接收 zaps 的闪电网络地址 |
Nostr 私钥,支持 nsec(Bech32)或 64 字符十六进制格式。请使用环境变量引用。
要连接的 Nostr relay WebSocket URL 列表
DM 访问控制策略:'pairing'、'allowlist'、'open' 或 'disabled'
允许给机器人发消息的公钥列表(npub 或十六进制格式),在 dmPolicy 为 'allowlist' 时生效
启用或禁用 Nostr 渠道
此渠道实例的显示名称
作为 NIP-01 元数据发布的机器人用户名
作为 NIP-01 元数据发布的完整显示名称
作为 NIP-01 元数据发布的机器人简介/描述
作为 NIP-01 元数据发布的头像图片 URL(须使用 HTTPS)
作为 NIP-01 元数据发布的横幅图片 URL(须使用 HTTPS)
作为 NIP-01 元数据发布的网站 URL
NIP-05 验证标识符(例如 'bot@yourdomain.com')
用于接收 zaps 的闪电网络地址
Nostr 常见问题
Nostr 故障排查
Relay 连接可能失败,或者发送方发布消息的 relay 与机器人订阅的 relay 不同。
私钥不是有效的 nsec(Bech32)或 64 字符十六进制格式,或环境变量未设置。
机器人配置的 relay 与接收方客户端的 relay 没有重叠,导致事件无法传播。
插件安装后未重启 Gateway,或安装过程静默失败。