Skip to Content
👋 欢迎来到 HowToUseMoltbot 快速入门
频道Nostr

Nostr

状态:可选插件(默认禁用)。Nostr 是面向社交的去中心化协议。本频道让 Moltbot 通过 NIP-04 接收并回复加密私聊(DM)。

安装(按需)

引导(推荐)

  • 引导向导(moltbot onboard)和 moltbot channels add 会列出可选频道插件。
  • 选择 Nostr 会提示按需安装插件。

安装默认:

  • Dev 频道 + 有 git 检出:使用本地插件路径。
  • Stable/Beta:从 npm 下载。

可在提示中覆盖选择。

手动安装

moltbot plugins install @moltbot/nostr

本地检出(开发流程):

moltbot plugins install --link <path-to-moltbot>/extensions/nostr

安装或启用插件后需重启网关。

快速设置

  1. 生成 Nostr 密钥对(若需要):
# 使用 nak nak key generate
  1. 写入配置:
{ "channels": { "nostr": { "privateKey": "${NOSTR_PRIVATE_KEY}" } } }
  1. 导出密钥:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. 重启网关。

配置参考

类型默认说明
privateKeystring必填私钥,nsec 或十六进制格式
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']Relay URL(WebSocket)
dmPolicystringpairing私聊访问策略
allowFromstring[][]允许的发件人公钥
enabledbooleantrue是否启用频道
namestring-显示名
profileobject-NIP-01 个人资料元数据

个人资料元数据

个人资料以 NIP-01 kind:0 事件发布。可在控制台(Channels -> Nostr -> Profile)管理,或直接在配置中设置。示例:

{ "channels": { "nostr": { "privateKey": "${NOSTR_PRIVATE_KEY}", "profile": { "name": "moltbot", "displayName": "Moltbot", "about": "Personal assistant DM bot", "picture": "https://example.com/avatar.png", "banner": "https://example.com/banner.png", "website": "https://example.com", "nip05": "moltbot@example.com", "lud16": "moltbot@example.com" } } } }

说明:

  • 个人资料 URL 必须使用 https://
  • 从 relay 导入会合并字段并保留本地覆盖。

访问控制

私聊策略

  • pairing(默认):未知发件人收到配对码。
  • allowlist:仅 allowFrom 中的公钥可发私聊。
  • open:公开接收私聊(需 allowFrom: ["*"])。
  • disabled:忽略入站私聊。

白名单示例

{ "channels": { "nostr": { "privateKey": "${NOSTR_PRIVATE_KEY}", "dmPolicy": "allowlist", "allowFrom": ["npub1abc...", "npub1xyz..."] } } }

密钥格式

接受格式:

  • 私钥nsec... 或 64 字符十六进制
  • 公钥(allowFromnpub... 或十六进制

Relays

默认:relay.damus.ionos.lol

{ "channels": { "nostr": { "privateKey": "${NOSTR_PRIVATE_KEY}", "relays": [ "wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine" ] } } }

建议:

  • 使用 2–3 个 relay 做冗余。
  • 避免过多 relay(延迟、重复)。
  • 付费 relay 可提高稳定性。
  • 本地 relay 适合测试(ws://localhost:7777)。

协议支持

NIP状态说明
NIP-01支持基础事件格式 + 个人资料元数据
NIP-04支持加密私聊(kind:4
NIP-17计划中Gift-wrapped 私聊
NIP-44计划中版本化加密

测试

本地 relay

# 启动 strfry docker run -p 7777:7777 ghcr.io/hoytech/strfry
{ "channels": { "nostr": { "privateKey": "${NOSTR_PRIVATE_KEY}", "relays": ["ws://localhost:7777"] } } }

手动测试

  1. 从日志中记下机器人公钥(npub)。
  2. 打开 Nostr 客户端(Damus、Amethyst 等)。
  3. 向机器人公钥发私聊。
  4. 验证回复。

故障排查

收不到消息

  • 确认私钥有效。
  • 确认 relay URL 可访问且使用 wss://(本地可用 ws://)。
  • 确认 enabled 不为 false
  • 在网关日志中查看 relay 连接错误。

发不出回复

  • 确认 relay 接受写入。
  • 确认出站连通性。
  • 注意 relay 限速。

重复回复

  • 使用多个 relay 时可能出现。
  • 消息按 event id 去重;仅首次投递会触发回复。

安全

  • 切勿提交私钥。
  • 用环境变量存放密钥。
  • 生产环境机器人建议使用 allowlist

限制(MVP)

  • 仅私聊(无群聊)。
  • 无媒体附件。
  • 仅 NIP-04(NIP-17 gift-wrap 计划中)。
最后更新于: