Nostr - 去中心化社交协议接入
Nostr(Notes and Other Stuff Transmitted by Relays)是一个极简的去中心化社交协议。与传统平台不同,Nostr 没有中心化服务器,所有消息通过 Relay(中继服务器)网络传播。OpenClaw 通过 Nostr 协议实现去中心化的 AI 交互。
前置要求
- 一个 Nostr 密钥对(nsec 私钥 / npub 公钥)
- 至少一个可用的 Relay 地址
- OpenClaw Gateway(网关)已安装并运行
安装插件
openclaw plugins install @openclaw/nostrNostr 基础概念
| 概念 | 说明 |
|---|---|
| nsec | Private Key(私钥),用于签名消息,绝不可泄露 |
| npub | Public Key(公钥),用于标识身份,可公开分享 |
| Relay | 中继服务器,负责转发和存储 Event(事件) |
| Event | Nostr 上的基本数据单元,包含消息、签名等 |
| NIP | Nostr Implementation Possibilities(协议扩展提案) |
生成密钥对
如果还没有密钥对,可以通过以下工具生成:
# 安装 nak CLI 工具
go install github.com/fiatjaf/nak@latest
# 生成密钥对
nak key generate# 安装 noscl
go install github.com/fiatjaf/noscl@latest
# 生成密钥对
noscl keygen私钥安全
nsec 私钥是你在 Nostr 上的唯一身份凭证,丢失无法找回,泄露则身份被盗。请使用安全的方式存储,切勿硬编码在代码仓库中。
配置 OpenClaw
{
channels: {
nostr: {
enabled: true,
privateKey: "nsec1xxxxx", // Bot 的 nsec 私钥
relays: [ // Relay 列表
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
],
dmPolicy: "pairing" // DM Policy(私信策略)
}
}
}也可以通过 Environment Variable(环境变量)设置:
export NOSTR_PRIVATE_KEY="nsec1xxxxx"启动与验证
openclaw gateway restart使用 Nostr 客户端(如 Damus、Amethyst、Snort)向 Bot 的 npub 发送 DM(加密私信),获取 Pairing Code(配对码)后批准:
openclaw pairing approve nostr <pairing-code>Relay 配置
选择合适的 Relay 对消息传递至关重要:
{
channels: {
nostr: {
relays: [
"wss://relay.damus.io", // 全球最大的公共 Relay
"wss://nos.lol", // 稳定的公共 Relay
"wss://relay.nostr.band", // 搜索优化 Relay
"wss://your-private-relay.com" // 自建私有 Relay
],
relayOptions: {
reconnectInterval: 5000, // 断线重连间隔(毫秒)
writeRelays: ["wss://nos.lol"], // 指定写入 Relay
readRelays: ["wss://relay.damus.io"] // 指定读取 Relay
}
}
}
}Relay 选择建议
建议配置 3-5 个 Relay 以确保消息冗余。混合使用大型公共 Relay 和小型社区 Relay 可获得最佳效果。
NIP 支持
OpenClaw 支持以下 Nostr NIP(协议扩展提案):
| NIP | 名称 | 说明 |
|---|---|---|
| NIP-01 | Basic Protocol | 基础事件协议 |
| NIP-04 | Encrypted DM | 加密私信(旧版) |
| NIP-17 | Private DM | 私信(新版,推荐) |
| NIP-09 | Event Deletion | 事件删除 |
| NIP-25 | Reactions | 消息表情回应 |
{
channels: {
nostr: {
nips: {
useDMNip: 17, // 使用 NIP-17 新版私信(默认)
allowReactions: true // 允许处理 Reaction 事件
}
}
}
}DM Policy(私信策略)
| 策略 | 说明 |
|---|---|
pairing | 用户需先获取 Pairing Code(配对码)验证 |
allowlist | 仅允许指定 npub 私聊 |
open | 所有人均可私聊(谨慎使用) |
{
channels: {
nostr: {
dmPolicy: "allowlist",
allowFrom: ["npub1xxx", "npub1yyy"]
}
}
}常见问题
消息无法送达
- 确认 Relay 连接正常:
openclaw channels status --probe - 确认对方客户端使用了至少一个与 Bot 相同的 Relay
- 检查 Gateway 日志中是否有 Relay 拒绝消息
私信解密失败
- 确认使用的 NIP 版本与对方客户端兼容
- NIP-04 已逐步被弃用,建议切换到 NIP-17
Relay 频繁断线
- 增加
reconnectInterval值 - 检查 Relay 是否有连接频率限制
- 考虑自建 Relay 以获得更稳定的连接
🇨🇳 中国用户须知
Nostr 在中国技术社区中有一定的使用基础,尤其在 Web3 和加密货币圈子中较为活跃。
网络访问:大部分公共 Relay 使用 WebSocket 协议(wss://),中国大陆可访问部分 Relay,但部分国际 Relay 可能不稳定。
推荐 Relay:优先选择亚太地区的 Relay 以获得更低延迟,或考虑自建 Relay 部署在国内服务器上。
客户端:Damus(iOS)、Amethyst(Android)等客户端在国内可能需要代理下载,但使用时连接自建 Relay 则无需代理。
适用场景:Web3 社区运营、去中心化应用交互、技术极客社群。
