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安装或启用插件后需重启网关。
快速设置
- 生成 Nostr 密钥对(若需要):
# 使用 nak
nak key generate- 写入配置:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}- 导出密钥:
export NOSTR_PRIVATE_KEY="nsec1..."- 重启网关。
配置参考
| 键 | 类型 | 默认 | 说明 |
|---|---|---|---|
privateKey | string | 必填 | 私钥,nsec 或十六进制格式 |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | Relay URL(WebSocket) |
dmPolicy | string | pairing | 私聊访问策略 |
allowFrom | string[] | [] | 允许的发件人公钥 |
enabled | boolean | true | 是否启用频道 |
name | string | - | 显示名 |
profile | object | - | 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 字符十六进制 - 公钥(
allowFrom):npub...或十六进制
Relays
默认:relay.damus.io 和 nos.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"]
}
}
}手动测试
- 从日志中记下机器人公钥(npub)。
- 打开 Nostr 客户端(Damus、Amethyst 等)。
- 向机器人公钥发私聊。
- 验证回复。
故障排查
收不到消息
- 确认私钥有效。
- 确认 relay URL 可访问且使用
wss://(本地可用ws://)。 - 确认
enabled不为false。 - 在网关日志中查看 relay 连接错误。
发不出回复
- 确认 relay 接受写入。
- 确认出站连通性。
- 注意 relay 限速。
重复回复
- 使用多个 relay 时可能出现。
- 消息按 event id 去重;仅首次投递会触发回复。
安全
- 切勿提交私钥。
- 用环境变量存放密钥。
- 生产环境机器人建议使用
allowlist。
限制(MVP)
- 仅私聊(无群聊)。
- 无媒体附件。
- 仅 NIP-04(NIP-17 gift-wrap 计划中)。
最后更新于: