ByteNoteByteNote

字节笔记本

2026年6月21日

hermes教程-标题:SimpleX Chat

API中转
¥120

前提条件

  • 已安装并运行 simplex-chat CLI 守护进程
  • 已安装 Python 包 websockets (pip install websockets)

安装 simplex-chat

simplex-chat GitHub releases 页面下载最新版本:

bash
## Linux / macOS 二进制文件
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 仓库 源码构建。

启动守护进程

bash
simplex-chat -p 5225

守护进程默认在 ws://127.0.0.1:5225 上监听 WebSocket。

配置 Hermes

使用设置向导

bash
hermes gateway setup

选择 SimpleX Chat 并按提示操作。

使用环境变量

将这些变量添加到 ~/.hermes/.env

text
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_URLsimplex-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 接受两种形式。

授权

默认情况下 所有联系人被拒绝。你必须执行以下操作之一:

  1. SIMPLEX_ALLOWED_USERS 设置为逗号分隔的 contactId 和/或显示名称列表(例如 SIMPLEX_ALLOWED_USERS=4,alice 匹配 contactId 4 或显示名称为 "alice" 的联系人),或者
  2. 使用 DM 配对——向机器人发送任意消息,它将回复一个配对码。通过 hermes pairing approve simplex <CODE> 输入该码。

群聊

默认情况下适配器忽略群组消息——否则群组中的机器人会处理每个成员的消息。需要显式选择加入:

text
SIMPLEX_GROUP_ALLOWED=12,34          # 特定群组 ID
## 或
SIMPLEX_GROUP_ALLOWED=*              # 机器人所在的任何群组

在聊天 ID 前加上 group: 前缀来指定群组,例如在 send_message 或作为 cron deliver= 目标中使用 simplex:group:12

附件

适配器支持双向的原生 SimpleX 附件:

  • 入站——传入的图片、语音笔记和文件通过守护进程的 XFTP 流程(rcvFileDescrReady/freceive → 等待 rcvFileComplete)接收,并以 MessageEvent.media_urls 形式呈现,附带相应的 MessageTypePHOTOVOICETEXT + 文档)。
  • 出站——send_image_filesend_voicesend_documentsend_video 均使用带有 filePath 的结构化 /_send 表单,因此接收方的 SimpleX 客户端会内联渲染图片并内联播放语音笔记,而不是提供下载链接。

机器人回复也可以在纯文本中嵌入 MEDIA:/path/to/file 标签——适配器会从正文中剥离该标签,并将文件作为语音笔记(音频扩展名)或文档发送。

在 cron 任务中使用 SimpleX

python
cronjob(
    action="create",
    schedule="every 1h",
    deliver="simplex",          # 使用 SIMPLEX_HOME_CHANNEL
    prompt="检查警报并总结。"
)

或者指定特定联系人:

python
send_message(target="simplex:<contact-id>", message="完成!")

隐私说明

  • SimpleX 从不透露电话号码或电子邮件地址——联系人使用不透明 ID
  • Hermes 与守护进程之间的连接是本地 WebSocket(ws://127.0.0.1:5225)——数据不会离开你的机器
  • 消息在到达守护进程之前已通过 SimpleX 协议进行端到端加密

故障排除

"无法连接守护进程"——确保 simplex-chat -p 5225 正在运行,并且端口与 SIMPLEX_WS_URL 匹配。

"websockets 未安装"——运行 pip install websockets

未收到消息——检查联系人 ID 是否在 SIMPLEX_ALLOWED_USERS 中,或通过 DM 配对批准。



分享: