Tlon 是建構於 Urbit 上的去中心化通訊工具。OpenClaw 會連線到你的 Urbit 船艦,並回應 DM 與群組聊天訊息。群組回覆預設需要 @ 提及,並在其上疊加授權規則與擁有者核准流程。
狀態:內建外掛。支援 DM、群組提及、討論串、富文字、圖片上傳/下載,以及擁有者核准系統。不支援反應與投票。
內建外掛
Tlon 已內建於目前的 OpenClaw 發行版本;封裝建置不需要另外安裝。
在較舊的建置或排除它的自訂安裝中,請從 npm 安裝:
openclaw plugins install @openclaw/tlon
使用裸套件名稱可追蹤目前的發行標籤。只有在需要可重現安裝時,才釘選版本(@openclaw/tlon@x.y.z)。
從本機 checkout 安裝:
openclaw plugins install ./path/to/local/tlon-plugin
詳細資訊:外掛
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrup
或直接編輯設定:
{
channels: {
tlon: {
enabled: true,
ship: "~sampel-palnet",
url: "https://your-ship-host",
code: "lidlut-tabwed-pillex-ridrup",
ownerShip: "~your-main-ship", // recommended: your ship, always authorized
},
},
}
直接編輯設定後請重新啟動閘道。接著 DM 機器人,或在群組頻道中 @ 提及它。
私有/LAN 船艦
OpenClaw 預設會封鎖私有/內部主機名稱與 IP 範圍,以提供 SSRF 防護。如果你的船艦執行在私有網路上(localhost、LAN IP、內部主機名稱),請明確選擇啟用:
{
channels: {
tlon: {
url: "http://localhost:8080",
network: {
dangerouslyAllowPrivateNetwork: true,
},
},
},
}
適用於像 http://localhost:8080、http://192.168.x.x:8080 和 http://my-ship.local:8080 這類目標。只應為你信任的船艦 URL 啟用此選項;它會停用該帳號 HTTP 請求的 SSRF 防護。
channels.tlon.allowPrivateNetwork(扁平鍵)已淘汰。openclaw doctor --fix 會自動將它移至 channels.tlon.network.dangerouslyAllowPrivateNetwork。
群組頻道
手動釘選頻道,或開啟自動探索:
{
channels: {
tlon: {
groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],
autoDiscoverChannels: true,
},
},
}
autoDiscoverChannels 在設定中未設定時預設為 false;設定精靈會將提示預設為是,並明確寫入 true。開啟後,OpenClaw 會在啟動時 scry 已加入的群組、在接受群組邀請時監看新頻道,並每 2 分鐘重新檢查一次。
存取控制
DM 允許清單(空白 = 除非傳送者是 ownerShip,否則不允許任何 DM):
{
channels: {
tlon: {
dmAllowlist: ["~zod", "~nec"],
},
},
}
群組授權預設每個頻道為 restricted。設定 defaultAuthorizedShips 作為基準,並依頻道 nest 覆寫:
{
channels: {
tlon: {
defaultAuthorizedShips: ["~zod"],
authorization: {
channelRules: {
"chat/~host-ship/general": {
mode: "restricted",
allowedShips: ["~zod", "~nec"],
},
"chat/~host-ship/announcements": {
mode: "open",
},
},
},
},
},
}
機器人一旦在討論串內回覆,就會持續回應該討論串中的後續訊息,而不需要再次提及。
擁有者與核准系統
{
channels: {
tlon: {
ownerShip: "~your-main-ship",
},
},
}
擁有者船艦在任何地方都已授權:DM 邀請一律自動接受、群組邀請一律自動接受,且頻道訊息一律通過授權。擁有者不需要列在 dmAllowlist、defaultAuthorizedShips 或 groupInviteAllowlist 中。
設定 ownerShip 後,未授權請求不會只是被丟棄,而是會佇列為待核准項目並 DM 擁有者:
- 來自不在
dmAllowlist 中船艦的 DM 請求
- 傳送者在頻道中未通過授權時的提及
- 來自不在
groupInviteAllowlist 中船艦的群組邀請(自動接受關閉時,或已開啟但邀請者不在允許清單中時)
擁有者可在 DM 中回覆以處理請求:
| 擁有者回覆 | 效果 |
|---|
approve / deny / block | 處理最近的待核准項目 |
approve <id> / deny <id> | 依 id 處理特定核准項目 |
block | 也會原生封鎖該船艦,使其無法重新連線 |
unblock ~ship | 解除原生封鎖 |
blocked | 列出目前已封鎖的船艦 |
pending | 列出待核准請求 |
未設定 ownerShip 時,未授權的 DM 與頻道提及只會被丟棄並記錄;不會出現核准提示。
自動接受設定
自動接受來自已在 dmAllowlist 中船艦的 DM 邀請(無論此旗標如何,擁有者一律會自動接受):
{
channels: {
tlon: {
autoAcceptDmInvites: true,
},
},
}
自動接受來自允許清單的群組邀請(封閉失敗:若 autoAcceptGroupInvites: true 且 groupInviteAllowlist 為空,則不會接受任何非擁有者邀請):
{
channels: {
tlon: {
autoAcceptGroupInvites: true,
groupInviteAllowlist: ["~zod"],
},
},
}
透過 Urbit 設定儲存區熱重新載入
上述大多數設定(dmAllowlist、groupInviteAllowlist、groupChannels、defaultAuthorizedShips、autoDiscoverChannels、autoAcceptDmInvites、autoAcceptGroupInvites、ownerShip、showModelSignature)會在首次執行時鏡像到船艦的 %settings 代理程式(desk moltbot、bucket tlon),之後會從該處即時讀取,因此透過 Landscape 用戶端或內建技能的設定命令所做的變更,無需重新啟動閘道即可套用。channelRules 與待核准項目也會以 JSON 持久化在該處。檔案設定仍是從未寫入設定儲存區之值的真實來源。
傳遞目標(命令列介面/排程)
搭配 openclaw message send 或排程傳遞使用:
- DM:
~sampel-palnet 或 dm/~sampel-palnet
- 群組:
chat/~host-ship/channel 或 group:~host-ship/channel
內建技能
此外掛內建 @tloncorp/tlon-skill,這是一個用於直接 Urbit 操作的命令列介面;安裝外掛後即可自動使用:
- 活動:提及、回覆、未讀
- 頻道:列出、建立、重新命名
- 聯絡人:列出/取得/更新個人資料
- 群組:建立、加入、邀請/請求流程、角色
- 鉤子:管理頻道鉤子
- 訊息:歷史、搜尋
- DM:傳送、反應、接受/拒絕
- 貼文:反應、刪除
- 筆記本:張貼到日記頻道
- 設定:透過上述設定儲存區熱重新載入外掛設定
| 功能 | 狀態 |
|---|
| 直接訊息 | 支援 |
| 群組/頻道 | 支援(預設由提及門控) |
| 討論串 | 支援(一旦加入就會持續回覆) |
| 富文字 | Markdown 會轉換為 Tlon 的原生格式 |
| 圖片 | 下載傳入圖片、上傳傳出圖片 |
| 反應 | 僅可透過內建技能使用 |
| 投票 | 不支援 |
| 原生命令 | 預設僅限擁有者 |
疑難排解
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
常見失敗:
- DM 被忽略:傳送者不在
dmAllowlist 中,且未設定用於核准流程的 ownerShip。
- 群組訊息被忽略:頻道未被探索/釘選,或傳送者未通過授權且沒有
ownerShip 可佇列核准。
- 連線錯誤:檢查船艦 URL 是否可連線;針對本機船艦設定
network.dangerouslyAllowPrivateNetwork。
- 驗證錯誤:登入碼會輪替,請從你的船艦複製目前的代碼。
設定參考
完整設定:設定
| 鍵 | 意義 |
|---|
channels.tlon.enabled | 啟用/停用頻道啟動。 |
channels.tlon.ship | 機器人的 Urbit 船艦名稱(例如 ~sampel-palnet)。 |
channels.tlon.url | 船艦 URL(例如 https://sampel-palnet.tlon.network)。 |
channels.tlon.code | 船艦登入碼。 |
channels.tlon.network.dangerouslyAllowPrivateNetwork | 允許 localhost/LAN 船艦 URL(SSRF 選擇啟用)。 |
channels.tlon.ownerShip | 擁有者船艦:一律授權,接收核准請求。 |
channels.tlon.dmAllowlist | 允許 DM 的船艦(空白 = 除擁有者外無)。 |
channels.tlon.autoAcceptDmInvites | 自動接受來自 dmAllowlist 中船艦的 DM。 |
channels.tlon.autoAcceptGroupInvites | 自動接受來自 groupInviteAllowlist 的群組邀請。 |
channels.tlon.groupInviteAllowlist | 群組邀請會被自動接受的船艦。 |
channels.tlon.autoDiscoverChannels | 自動探索已加入的群組頻道(預設:false)。 |
channels.tlon.groupChannels | 手動釘選的頻道 nest。 |
channels.tlon.defaultAuthorizedShips | 授權所有頻道的船艦(沒有規則相符時使用)。 |
channels.tlon.authorization.channelRules | 每個頻道 nest 的驗證模式 + 允許清單。 |
channels.tlon.showModelSignature | 將 _[Generated by <model>]_ 附加到回覆。 |
channels.tlon.responsePrefix | 加到傳出回覆前方的靜態前綴。 |
channels.tlon.accounts.<id> | 額外的具名帳號(多船艦設定)。 |
- 群組回覆需要 @ 提及(例如
~your-bot-ship),除非機器人已加入該討論串。
- 討論串回覆會落在討論串內;機器人也會取得前置給代理程式的最後 10 則討論串內容訊息。
- 富文字(粗體、斜體、程式碼、標題、清單)會轉換為 Tlon 的原生格式。
- 傳送要求頻道摘要的傳入訊息(例如「summarize this channel」)會觸發內建的歷史摘要,而不是一般回覆流程。
- 頻道總覽 — 所有支援的頻道
- 配對 — DM 驗證與配對流程
- 群組 — 群組聊天行為與提及門控
- 頻道路由 — 訊息的工作階段路由
- 安全性 — 存取模型與強化