Section: 訊息平台 · URL: https://hermesbible.com/docs/user-guide/messaging/simplex
SimpleX Chat
SimpleX Chat 是一個去中心化的私密訊息平台,使用者擁有自己的聯絡人與群組。與其他平台不同,SimpleX 不會指派持久性的使用者 ID — 每個聯絡人都以連線時產生的不透明內部 ID 標識,使其成為目前最私密的通訊軟體之一。
執行
hermes gateway setup並選擇 SimpleX 以獲得引導式設定流程。
前置需求
- simplex-chat CLI 已安裝並以 daemon 模式運作
- 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 自行從原始碼建構。
啟動 daemon
simplex-chat -p 5225
daemon 預設透過 WebSocket 監聽於 ws://127.0.0.1:5225。
設定 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 daemon 的 WebSocket URL |
SIMPLEX_ALLOWED_USERS | 建議 | 以逗號分隔的允許清單。每個項目可以是數字 contactId 或顯示名稱 — 兩種格式皆可。 |
SIMPLEX_ALLOW_ALL_USERS | 選用 | 設為 true 以允許所有聯絡人(請謹慎使用) |
SIMPLEX_AUTO_ACCEPT | 選用 | 自動接受傳入的聯絡人請求(預設:true) |
SIMPLEX_GROUP_ALLOWED | 選用 | 以逗號分隔的群組 ID 清單,或設為 * 允許所有群組。省略此欄位將忽略所有群組訊息 |
SIMPLEX_HOME_CHANNEL | 選用 | 排程任務(cron job)的預設聯絡人/群組 ID |
SIMPLEX_HOME_CHANNEL_NAME | 選用 | 頻道的人類可讀標籤 |
HERMES_SIMPLEX_TEXT_BATCH_DELAY | 選用 | 靜默期秒數(預設:0.8),用於將快速連續傳入的文字訊息合併為單一事件 |
查找你的聯絡人 ID 或顯示名稱
啟動 daemon 後,與你的 agent 聯絡人開啟對話。數字 contactId 會出現在工作階段日誌中,或透過 hermes send_message action=list 查詢。如果你偏好使用 SimpleX 介面中顯示的名稱,同樣可以運作 — SIMPLEX_ALLOWED_USERS 接受任一格式。
授權機制
預設情況下所有聯絡人都會被拒絕。你必須:
- 將
SIMPLEX_ALLOWED_USERS設為以逗號分隔的contactId和/或顯示名稱清單(例如SIMPLEX_ALLOWED_USERS=4,alice會匹配 contactId 4 或顯示名稱為 "alice" 的聯絡人),或 - 使用 DM 配對 — 任意向 bot 發送訊息,它會回覆一組配對代碼。透過
hermes pairing approve simplex <CODE>輸入該代碼即可完成授權。
群組聊天
適配器預設會忽略群組訊息 — 否則群組中的 bot 會處理所有成員的訊息流量。需要明確啟用:
SIMPLEX_GROUP_ALLOWED=12,34 # 特定群組 ID
# 或
SIMPLEX_GROUP_ALLOWED=* # bot 所在的任何群組
在 send_message 或排程任務的 deliver= 目標中,以 group: 前綴加上 chat ID 來指定群組,例如 simplex:group:12。
附件
適配器支援雙向的 SimpleX 原生附件:
- 接收 — 透過 daemon 的 XFTP 流程接受傳入的圖片、語音訊息和檔案(
rcvFileDescrReady→/freceive→ 等待rcvFileComplete),並以MessageEvent.media_urls呈現,搭配對應的MessageType(PHOTO、VOICE、TEXT+ 文件)。 - 傳送 —
send_image_file、send_voice、send_document和send_video皆使用帶有filePath的結構化/_send格式,使接收端的 SimpleX 用戶端能以內嵌方式顯示圖片和播放語音訊息,而非將其作為下載檔案。
Agent 回覆也可以在純文字中嵌入 MEDIA:/path/to/file 標籤 — 適配器會從訊息中移除該標籤,並將檔案以語音訊息(音訊副檔名)或文件形式傳送。
在排程任務中使用 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
- 與 daemon 的連線為本地 WebSocket(
ws://127.0.0.1:5225)— 資料不會離開你的裝置 - 訊息在到達 daemon 之前已透過 SimpleX 協議進行端對端加密
疑難排解
「無法連線至 daemon」 — 確認 simplex-chat -p 5225 正在運作,且連接埠與 SIMPLEX_WS_URL 一致。
「websockets not installed」 — 執行 pip install websockets。
訊息未被接收 — 檢查聯絡人的 ID 是否在 SIMPLEX_ALLOWED_USERS 中,或透過 DM 配對進行授權。