Nostr
状态: 可选插件(默认禁用)。 Nostr 是一种用于社交网络的去中心化协议。此通道使 OpenClaw 能够通过 NIP-04 接收并响应加密的私信(DM)。按需安装
引导设置(推荐)
- 引导向导(
openclaw onboard)和openclaw channels add列出了可选的通道插件。 - 选择 Nostr 后,系统会提示您按需安装该插件。
- 开发通道 + 可用 Git 检出: 使用本地插件路径。
- 稳定版/测试版: 从 npm 下载。
手动安装
快速设置
- 生成 Nostr 密钥对(如需要):
- 添加到配置:
- 导出密钥:
- 重启网关。
配置参考
| 键 | 类型 | 默认值 | 描述 |
|---|---|---|---|
privateKey | 字符串 | 必填 | 私钥,采用 nsec 或十六进制格式 |
relays | 字符串数组 | ['wss://relay.damus.io', 'wss://nos.lol'] | 中继 URL(WebSocket) |
dmPolicy | 字符串 | pairing | DM 访问策略 |
allowFrom | 字符串数组 | [] | 允许的发送方公钥 |
enabled | 布尔值 | true | 启用/禁用通道 |
name | 字符串 | - | 显示名称 |
profile | 对象 | - | NIP-01 个人资料元数据 |
个人资料元数据
个人资料数据以 NIP-01kind:0 事件的形式发布。您可以通过控制 UI(通道 -> Nostr -> 个人资料)进行管理,或直接在配置中设置。
示例:
- 个人资料 URL 必须使用
https://。 - 从中继导入时会合并字段,并保留本地覆盖。
访问控制
DM 策略
- 配对(默认):未知发件人会收到配对码。
- 白名单:只有
allowFrom中的公钥可以发送 DM。 - 开放:公开接收 DM(需要
allowFrom: ["*"])。 - 禁用:忽略入站 DM。
白名单示例
密钥格式
接受的格式:- 私钥:
nsec...或 64 字符十六进制 - 公钥(
allowFrom):npub...或十六进制
中继
默认设置:relay.damus.io 和 nos.lol。
- 使用 2–3 个中继以实现冗余。
- 避免使用过多中继(延迟、重复)。
- 付费中继可提高可靠性。
- 本地中继适用于测试(
ws://localhost:7777)。
协议支持
| NIP | 状态 | 描述 |
|---|---|---|
| NIP-01 | 支持 | 基本事件格式 + 个人资料元数据 |
| NIP-04 | 支持 | 加密 DM(kind:4) |
| NIP-17 | 计划中 | 礼品包装的 DM |
| NIP-44 | 计划中 | 版本化加密 |
测试
本地中继
手动测试
- 从日志中记下机器人公钥(npub)。
- 打开 Nostr 客户端(Damus、Amethyst 等)。
- 向机器人公钥发送 DM。
- 验证响应。
故障排除
未收到消息
- 验证私钥是否有效。
- 确保中继 URL 可达,并使用
wss://(或ws://用于本地)。 - 确认
enabled不是false。 - 检查网关日志中是否存在中继连接错误。
无法发送响应
- 检查中继是否接受写入。
- 验证出站连接是否正常。
- 注意中继的速率限制。
重复响应
- 在使用多个中继时属正常现象。
- 消息按事件 ID 去重;只有首次传递会触发响应。
安全性
- 切勿提交私钥。
- 使用环境变量存储密钥。
- 对于生产机器人,考虑
allowlist。
局限性(MVP)
- 仅支持直接消息(不支持群聊)。
- 不支持媒体附件。
- 仅支持 NIP-04(计划支持 NIP-17 礼品包装)。