跳到內容

設定 OpenClaw Nostr 頻道:快速啟用去中心化訊息功能

想要在去中心化社交網路上架設機器人,卻發現處理加密訊息和中繼站連線比想像中還麻煩?如果你正打算讓你的 AI 助手進入 Nostr 宇宙,這篇指南會幫你省下不少摸索的時間。

Nostr 是一個去中心化的社交網路協定。這個 Channel 讓 OpenClaw 能夠透過 NIP-04 接收並回覆加密的直接訊息 (DMs)。

狀態: 選配 Plugin(預設停用)。

  • 使用 Onboarding (openclaw onboard) 或 openclaw channels add 會列出可選的 Channel Plugin。
  • 選擇 Nostr 後,系統會提示你按需安裝該 Plugin。

安裝預設值:

  • Dev channel + 可使用 git checkout: 使用本地 Plugin 路徑。
  • Stable/Beta: 從 npm 下載。

你隨時可以在提示字元中覆蓋這些選擇。

Terminal window
openclaw plugins install @openclaw/nostr

使用本地 checkout(開發工作流):

Terminal window
openclaw plugins install --link <path-to-local-nostr-plugin>

安裝或啟用 Plugin 後,請重啟 Gateway。

Terminal window
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" --relay-urls "wss://relay.damus.io,wss://relay.primal.net"

使用 --use-env 可以將 NOSTR_PRIVATE_KEY 保留在環境變數中,而不是存放在設定檔裡。

  1. 產生 Nostr 金鑰對(如果需要):
Terminal window
# Using nak
nak key generate
  1. 加入設定檔:
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
},
},
}
  1. 匯出金鑰:
Terminal window
export NOSTR_PRIVATE_KEY="nsec1..."
  1. 重啟 Gateway。
KeyTypeDefaultDescription
privateKeystringrequiredPrivate key in nsec or hex format
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']Relay URLs (WebSocket)
dmPolicystringpairingDM access policy
allowFromstring[][]Allowed sender pubkeys
enabledbooleantrueEnable/disable channel
namestring-Display name
profileobject-NIP-01 profile metadata

個人資料會以 NIP-01 kind:0 事件發佈。你可以從 Control 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: "openclaw@example.com",
lud16: "openclaw@example.com",
},
},
},
}

注意:

  • Profile URL 必須使用 https://。
  • 從中繼站匯入時會合併欄位,並保留本地的覆蓋設定。
  • pairing (預設):未知的傳送者會收到配對碼。
  • allowlist:只有在 allowFrom 中的 pubkey 可以傳送 DM。
  • open:公開接收 DM(需要設定 allowFrom: ["*"])。
  • disabled:忽略所有傳入的 DM。

執行說明:

  • 在進行簽章驗證和 NIP-04 解密之前,會先檢查傳送者策略。
  • 配對回覆會在不處理原始 DM 內容的情況下送出。
  • 傳入的 DM 會受到速率限制,且過大的內容會在解密前被捨棄。
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
dmPolicy: "allowlist",
allowFrom: ["npub1abc...", "npub1xyz..."],
},
},
}

支援的格式:

  • Private key: nsec... 或 64 字元 hex
  • Pubkeys (allowFrom): npub... 或 hex

預設值: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)。
NIPStatusDescription
NIP-01SupportedBasic event format + profile metadata
NIP-04SupportedEncrypted DMs (kind:4)
NIP-17PlannedGift-wrapped DMs
NIP-44PlannedVersioned encryption
Terminal window
# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
relays: ["ws://localhost:7777"],
},
},
}
  1. 從日誌中記錄機器人的 pubkey (npub)。
  2. 開啟 Nostr 用戶端(如 Damus, Amethyst 等)。
  3. 傳送 DM 給機器人的 pubkey。
  4. 驗證回覆內容。
  • 驗證 Private key 是否有效。
  • 確保中繼站 URL 可以連線,且使用 wss://(本地測試則用 ws://)。
  • 確認 enabled 沒有被設為 false。
  • 檢查 Gateway 日誌是否有中繼站連線錯誤。
  • 檢查中繼站是否接受寫入。
  • 驗證對外連線能力。
  • 注意中繼站的速率限制。
  • 使用多個中繼站時這是正常現象。
  • 訊息會透過事件 ID 進行去重;只有第一次送達會觸發回覆。
  • 絕對不要提交 Private key 到版本控制系統。
  • 使用環境變數來管理金鑰。
  • 生產環境的機器人建議考慮使用 allowlist。
  • 配對和白名單策略會在解密前執行,因此未知傳送者無法強制消耗加密運算資源。
  • 僅支援直接訊息(不支援群組聊天)。
  • 不支援媒體附件。
  • 僅支援 NIP-04(已規劃支援 NIP-17 gift-wrap)。

AI Setup Assistant

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。