SimpleX Chat
SimpleX Chat 是一個私密、去中心化的消息平臺,用戶擁有自己的聯繫人和群組。與其他平臺不同,SimpleX 不分配持久的用戶 ID — 每個聯繫人都由一個在連接時生成的不透明內部 ID 標識,這使其成為最私密的信使之一。
運行
hermes gateway setup並選擇 SimpleX 以獲取引導式 walkthrough。
先決條件
- 安裝並作為守護進程運行的 simplex-chat CLI
- Python 包 websockets (
pip install websockets)
安裝 simplex-chat
從 simplex-chat GitHub releases 頁面下載最新版本:
# Linux / macOS binary
curl -L https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-chat-ubuntu-22_04-x86_64 -o simplex-chat
chmod +x simplex-chat
SimpleX Chat 項目未發佈聊天客戶端的預構建 Docker 鏡像;要在 Docker 下運行它,請從 simplex-chat repository 源碼構建。
啟動守護進程
simplex-chat -p 5225
默認情況下,守護進程在 ws://127.0.0.1:5225 監聽 WebSocket。
配置 Hermes
通過設置嚮導
hermes gateway setup
選擇 SimpleX Chat 並按照提示操作。
通過環境變量
將這些添加到 ~/.hermes/.env:
SIMPLEX_WS_URL=ws://127.0.0.1:5225
SIMPLEX_ALLOWED_USERS=<contact-id-1>,<contact-id-2>
SIMPLEX_HOME_CHANNEL=<contact-id>
| 變量 | 必需 | 描述 |
|---|---|---|
SIMPLEX_WS_URL | 是 | simplex-chat 守護進程的 WebSocket URL |
SIMPLEX_ALLOWED_USERS | 推薦 | 逗號分隔的允許列表。每個條目可以是數字 contactId 或 顯示名稱 — 兩種形式均有效。 |
SIMPLEX_ALLOW_ALL_USERS | 可選 | 設置為 true 以允許所有聯繫人(請謹慎使用) |
SIMPLEX_AUTO_ACCEPT | 可選 | 自動接受傳入的聯繫人請求(默認:true) |
SIMPLEX_GROUP_ALLOWED | 可選 | 機器人參與的群組 ID 的逗號分隔列表,或 * 表示任何群組。省略則完全忽略群組消息 |
SIMPLEX_HOME_CHANNEL | 可選 | 用於 cron 作業交付的默認聯繫人/群組 ID |
SIMPLEX_HOME_CHANNEL_NAME | 可選 | 主通道的人類可讀標籤 |
HERMES_SIMPLEX_TEXT_BATCH_DELAY | 可選 | 靜默期秒數(默認:0.8),用於將快速連續的入站文本消息合併為一個事件 |
查找您的聯繫人 ID 或顯示名稱
啟動守護進程後,打開與您代理聯繫人的對話。數字 contactId 出現在會話日誌中,或通過 hermes send_message action=list 查看。如果您更願意使用 SimpleX UI 中顯示的顯示名稱,那也是可以的 — SIMPLEX_ALLOWED_USERS 接受這兩種形式。
授權
默認情況下 所有聯繫人都被拒絕。您必須:
- 將
SIMPLEX_ALLOWED_USERS設置為contactId和/或顯示名稱的逗號分隔列表(例如SIMPLEX_ALLOWED_USERS=4,alice匹配 contactId 4 或顯示名稱為 "alice" 的聯繫人),或者 - 使用 DM 配對 — 向機器人發送任何消息,它將回復一個配對代碼。通過
hermes pairing approve simplex <CODE>輸入該代碼。
群組聊天
默認情況下,適配器忽略群組消息 — 否則群組中的機器人會處理每個成員的流量。需顯式選擇加入:
SIMPLEX_GROUP_ALLOWED=12,34 # specific group IDs
# or
SIMPLEX_GROUP_ALLOWED=* # any group the bot is in
通過在聊天 ID 前添加 group: 前綴來尋址群組,例如在 send_message 中或作為 cron deliver= 目標時使用 simplex:group:12。
附件
適配器支持雙向的原生 SimpleX 附件:
- 入站 — 傳入的圖片、語音筆記和文件通過守護進程的 XFTP 流程接受(
rcvFileDescrReady→/freceive→ 等待rcvFileComplete),並作為帶有適當MessageType(PHOTO、VOICE、TEXT+ 文檔)的MessageEvent.media_urls呈現。 - 出站 —
send_image_file、send_voice、send_document和send_video都使用帶有filePath的結構化/_send表單,因此接收方的 SimpleX 客戶端會內聯渲染圖片並內聯播放語音筆記,而不是將其作為下載提供。
代理回覆也可以在純文本中嵌入 MEDIA:/path/to/file 標籤 — 適配器會從正文中剝離該標籤,並將文件作為語音筆記(音頻擴展名)或文檔發送。
在 cron 作業中使用 SimpleX
cronjob(
action="create",
schedule="every 1h",
deliver="simplex", # uses SIMPLEX_HOME_CHANNEL
prompt="Check for alerts and summarise."
)
或定位特定聯繫人:
send_message(target="simplex:<contact-id>", message="Done!")
隱私說明
- SimpleX 從不洩露電話號碼或電子郵件地址 — 聯繫人使用不透明 ID
- Hermes 與守護進程之間的連接是本地 WebSocket (
ws://127.0.0.1:5225) — 沒有數據離開您的機器 - 消息在到達守護進程之前由 SimpleX 協議進行端到端加密
故障排除
"Cannot reach daemon" — 確保 simplex-chat -p 5225 正在運行且端口與 SIMPLEX_WS_URL 匹配。
"websockets not installed" — 運行 pip install websockets。
Messages not received — 檢查聯繫人的 ID 是否在 SIMPLEX_ALLOWED_USERS 中,或通過 DM 配對批准他們。