Nostr
狀態: 選用外掛(預設停用)。
Nostr 是一個去中心化的社交網路協定。此頻道讓 OpenClaw 能透過 NIP-04 接收和回覆加密私訊(DM)。
安裝(依需求)
引導安裝(推薦)
- 引導精靈(
openclaw onboard)和openclaw channels add會列出可選的頻道外掛。 - 選擇 Nostr 會提示你依需求安裝外掛。
安裝預設:
- 開發頻道 + 可用 git checkout: 使用本機外掛路徑。
- 穩定版/測試版: 從 npm 下載。
你隨時可以在提示中覆蓋選擇。
手動安裝
openclaw plugins install @openclaw/nostr
使用本機 checkout(開發流程):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
安裝或啟用外掛後請重啟 Gateway。
快速設定
- 產生 Nostr 金鑰對(如有需要):
# 使用 nak
nak key generate
- 加入設定:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- 匯出金鑰:
export NOSTR_PRIVATE_KEY="nsec1..."
- 重啟 Gateway。
設定參考
| 設定鍵 | 類型 | 預設值 | 說明 |
|---|---|---|---|
privateKey | string | 必填 | nsec 或十六進位格式的私鑰 |
relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | 中繼站 URL(WebSocket) |
dmPolicy | string | pairing | 私訊存取政策 |
allowFrom | string[] | [] | 允許的發送者公鑰 |
enabled | boolean | true | 啟用/停用頻道 |
name | string | - | 顯示名稱 |
profile | object | - | NIP-01 個人檔案中繼資料 |
個人檔案中繼資料
個人檔案資料會以 NIP-01 kind:0 事件發布。你可以從控制面板 UI(Channels -> Nostr -> Profile)管理,或直接在設定中設定。
範例:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"profile": {
"name": "openclaw",
"displayName": "OpenClaw",
"about": "Personal assistant DM bot",
"picture": "https://example.com/avatar.png",
"banner": "https://example.com/banner.png",
"website": "https://example.com",
"nip05": "[email protected]",
"lud16": "[email protected]"
}
}
}
}
備註:
- 個人檔案 URL 必須使用
https://。 - 從中繼站匯入會合併欄位並保留本機覆寫。
存取控制
私訊政策
- pairing(預設):未知發送者會收到配對代碼。
- allowlist:只有
allowFrom中的公鑰可以私訊。 - open:開放接收私訊(需設定
allowFrom: ["*"])。 - disabled:忽略接收的私訊。
許可清單範例
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}
金鑰格式
接受的格式:
- 私鑰:
nsec...或 64 字元十六進位 - 公鑰(
allowFrom):npub...或十六進位
中繼站
預設: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 個中繼站以確保冗餘。
- 避免太多中繼站(延遲、重複)。
- 付費中繼站可以提高可靠性。
- 本機中繼站適合測試(
ws://localhost:7777)。
協定支援
| NIP | 狀態 | 說明 |
|---|---|---|
| NIP-01 | 支援 | 基本事件格式 + 個人檔案中繼資料 |
| NIP-04 | 支援 | 加密私訊(kind:4) |
| NIP-17 | 計劃中 | 禮物包裝私訊 |
| NIP-44 | 計劃中 | 版本化加密 |
測試
本機中繼站
# 啟動 strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}
手動測試
- 從日誌記下機器人公鑰(npub)。
- 開啟 Nostr 用戶端(Damus、Amethyst 等)。
- 私訊機器人公鑰。
- 確認回覆。
疑難排解
未收到訊息
- 確認私鑰有效。
- 確保中繼站 URL 可連線且使用
wss://(本機用ws://)。 - 確認
enabled不是false。 - 檢查 Gateway 日誌中的中繼站連接錯誤。
未發送回覆
- 檢查中繼站是否接受寫入。
- 確認外連網路連線。
- 注意中繼站頻率限制。
重複回覆
- 使用多個中繼站時預期會發生。
- 訊息以事件 ID 去重;只有第一次送達會觸發回覆。
安全性
- 絕對不要提交私鑰。
- 使用環境變數管理金鑰。
- 正式環境的機器人建議使用
allowlist。
限制(MVP)
- 僅限私訊(不支援群組聊天)。
- 不支援媒體附件。
- 僅支援 NIP-04(NIP-17 禮物包裝計劃中)。