🤖HermesBlog
Hermes 消息平台接入 · 第8篇2026/8/9· Easy Understand Hermes Agent

短信接入——手机号直接指挥 AI

Hermes 消息平台接入第8篇:SMS。用手机短信和 Hermes 通信。

messaging-sms

簡訊接入——手機號碼直接指揮 AI

有沒有想過,不裝 App、不開 Telegram,直接用最原始的傳簡訊就能指揮你的 AI 幹活?沒錯,Hermes 現在支援透過 Twilio 接簡訊了。你發一則簡訊到指定號碼,AI 就回你一則——跟 Telegram 或 Discord 上聊天一模一樣,只不過走的是電信商網路。

準備工作

  • Twilio 帳號twilio.com 免費註冊)
  • 一個支援簡訊的 Twilio 電話號碼
  • 一台公網可達的伺服器——Twilio 收到簡訊後會透過 webhook 通知你的伺服器
  • 安裝簡訊依賴:cd ~/.hermes/hermes-agent && uv pip install -e ".[sms]"

小提示:如果你之前配過 Twilio 語音或一次性簡訊,那 TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_PHONE_NUMBER 這三個憑證直接複用,不用重新申請。

第一步:拿到 Twilio 憑證

登入 Twilio Console,在首頁複製 Account SIDAuth Token,再去 Phone Numbers → Manage → Active Numbers 記下你的號碼(E.164 格式,例如 +15551234567)。

第二步:設定 Hermes

推薦用互動式精靈,一條指令搞定:

hermes gateway setup

選擇 SMS (Twilio),按提示填入憑證即可。

手動設定也行,編輯 ~/.hermes/.env

TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_PHONE_NUMBER=+15551234567

# 安全:只允許指定號碼(強烈建議)
SMS_ALLOWED_USERS=+15559876543,+15551112222

# 可選:排程任務結果推送到哪個號碼
SMS_HOME_CHANNEL=+15559876543

第三步:設定 Twilio Webhook

去 Twilio Console → Phone Numbers → Manage → Active Numbers,點你的號碼,在 Messaging → A MESSAGE COMES IN 裡設定:

  • Webhookhttps://你的伺服器:8080/webhooks/twilio
  • HTTP MethodPOST

本機除錯的話,用隧道工具把 localhost 暴露出去:

# cloudflared
cloudflared tunnel --url http://localhost:8080

# 或 ngrok
ngrok http 8080

把產生的公網 URL 填到 Twilio 裡,同時必須設定 SMS_WEBHOOK_URL 為同一個 URL——這是 Twilio 簽章驗證的要求,不設的話閘道會拒絕啟動:

SMS_WEBHOOK_URL=https://你的伺服器:8080/webhooks/twilio

連接埠預設 8080,想改就加一行 SMS_WEBHOOK_PORT=3000

第四步:啟動閘道

hermes gateway

看到類似輸出就成功了:

[sms] Twilio webhook server listening on 127.0.0.1:8080, from: +1555***4567

如果報錯 Refusing to start: SMS_WEBHOOK_URL is required,回去檢查第三步的 SMS_WEBHOOK_URL 是否設定。

然後給你的 Twilio 號碼發則簡訊試試——AI 會直接回你!

簡訊特有的行為

  • 純文字:Markdown 會被自動去掉,因為簡訊裡顯示的是原始字元
  • 1600 字元限制:超長回覆會在自然斷句處拆成多則傳送
  • 防迴聲:自己 Twilio 號碼傳來的訊息會被忽略,防止無窮迴圈
  • 隱私保護:日誌中的電話號碼會自動打碼

安全提醒

預設拒絕所有使用者,必須設定白名單:

# 建議:只允許特定號碼
SMS_ALLOWED_USERS=+15559876543,+15551112222

# 或者放行所有人(不建議,除非你清楚風險)
SMS_ALLOW_ALL_USERS=true

另外,Hermes 會驗證 Twilio 的 X-Twilio-Signature 簽章,防止偽造訊息。本機開發可以暫時設 SMS_INSECURE_NO_SIGNATURE=true 關掉驗證,但千萬別在生產環境這麼幹

最後提醒一句:簡訊沒有加密,別拿它處理敏感操作。真要安全,還是用 Signal 或 Telegram 吧。

收不到訊息?排查三步走

  1. 檢查 Twilio 裡的 webhook URL 是否正確且公網可存取
  2. 確認 TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKEN 沒填錯
  3. 去 Twilio Console → Monitor → Logs → Messaging 看投遞日誌,並確認你的號碼在白名單裡

搞定,去發則簡訊試試吧!📱✨

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/sms