Photon——macOS 上的 iMessage 接入
Hermes 消息平台接入第24篇:Photon。Mac 上的 iMessage 桥接。
Photon——macOS 上的 iMessage 接入
之前我们聊过用 BlueBubbles 把 iMessage 接进 Hermes,但前提是你得有一台 Mac 当“传话筒”。今天介绍的 Photon 则完全不需要——它是一家托管服务,帮你搞定了 Apple 线路分配和防滥用层,你连自己的 Mac 中继都不用跑。
免费就能用,真的
Photon 的免费档用的是共享线路池——不同的人给你发消息,看到的号码可能不一样,但每个会话的号码是稳定的。付费 Business 档则会给所有用户分配同一个专属号码。官方推荐从免费档开始,不需要订阅,只要提供一个能收 iMessage 的手机号绑定账号就行。
架构:持久连接,没有 Webhook
Photon 和 Discord、Slack 一样走持久连接,不需要公网 URL,不需要 Webhook,也不需要管理签名密钥。
它内部用的是 TypeScript 写的 spectrum-ts SDK,通过 gRPC 长连接和 Photon 通信。因为 SDK 只支持 TypeScript,Hermes 就在一个受监督的 Node 边车进程里跑它,然后通过 loopback 通信:
- 收消息:边车消费 SDK 的
app.messagesgRPC 流,转发给 Python 适配器,适配器去重后交给 agent,断线自动重连 - 发消息:回复通过 loopback POST 给边车,边车调用
space.send(...)
Python 插件会自动启动、监督和关闭这个边车。
前置条件
- Photon 账号(去 app.photon.codes 注册)
- Node.js 18.17 或更新版本(
node --version检查) - 一个能收 iMessage 的手机号(用来绑定账号)
就这些,不需要公网 URL 或隧道。
首次设置
可以跑统一网关向导,选 Photon iMessage:
hermes gateway setup
或者直接跑 Photon 设置(向导内部也是调这个):
hermes photon setup --phone +15551234567
设置过程按顺序做六件事:设备登录 → 查找/创建项目 → 启用 Spectrum 并轮换密钥 → 注册手机号 → 打印分配给你的 iMessage 线路 → 在边车目录里跑 npm install。如果安装目录只读(比如 Docker 镜像),边车会自动回退到 ~/.hermes/photon/sidecar 下的可写镜像,也可以用 PHOTON_SIDECAR_DIR 指定位置。
运行时凭证写在 ~/.hermes/.env(PHOTON_PROJECT_ID 和 PHOTON_PROJECT_SECRET),和其他通道一样。
授权用户
Photon 和其他 Hermes 通道用同一套授权模型:
DM 配对(默认):陌生号码发消息,Hermes 回复配对码,然后:
hermes pairing approve photon <CODE>
预授权号码(在 ~/.hermes/.env 里):
PHOTON_ALLOWED_USERS=+15551234567,+15559876543
完全开放(仅开发环境):
PHOTON_ALLOW_ALL_USERS=true
注意:设置了 PHOTON_ALLOWED_USERS 后,陌生号码会被静默忽略,不会收到配对码。
群聊里要求 @ 提及
默认 Hermes 回复所有授权的 DM 和群消息。想改成群聊必须 @ 才响应,在配置里加:
gateway:
platforms:
photon:
enabled: true
require_mention: true
默认匹配 Hermes 和 @Hermes agent 变体。想自定义名字就设正则:
gateway:
platforms:
photon:
require_mention: true
mention_patterns:
- '(?<![\w@])@?amos\b[,:\-]?'
启动网关
hermes gateway start
看到类似输出就成功了:
[photon] connected — sidecar on 127.0.0.1:8789, streaming inbound over gRPC
给你的号码发条 iMessage,Hermes 就会回复。
状态与排障
hermes photon status
会打印凭证、边车健康状态、你的注册号码和分配的 iMessage 线路。常见问题:
sidecar deps : ✗— 跑hermes photon install-sidecardevice token : ✗ missing— 跑hermes photon setup重新登录No iMessage line assigned yet— Spectrum 启用了但还没分配线路,重跑 setup 即可
Photon 把最麻烦的 Apple 线路分配全包了,免费档够用,上手成本极低。快去试试吧!
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/photon