實戰:腳本輸出推送到聊天
Hermes 實戰教學第18篇:腳本輸出推送。命令結果發到手機。
這篇教學教你用 Hermes Agent 的 hermes send 命令,把任何腳本的輸出直接推送到 Telegram、Discord、Slack 等聊天平台——就像給通知裝了個萬能快遞員。
它解決什麼問題?
想像你寫了很多小腳本:監控記憶體的、跑 CI 的、定時備份的。以前每個腳本都要單獨寫一段「呼叫 API 發訊息」的程式碼,還得各自保管 bot token。現在 hermes send 把這些全統一了——它重用 Hermes 已有的設定,一條命令搞定所有平台,不需要閘道器在執行,也不需要大型語言模型參與。
第1步:先發一條試試
最簡單的用法,直接發文字到某個平台的「預設頻道」:
hermes send --to telegram "部署完成了!"
也可以把任何命令的輸出「管道」給它:
echo "記憶體佔用92%" | hermes send --to telegram
第2步:指定具體接收人
--to 參數支援多種格式,看幾個例子就懂:
| 格式 | 範例 | 含義 |
|---|---|---|
telegram |
發到 Telegram 預設頻道 | 最省事 |
telegram:-1001234567890 |
指定群組/使用者 ID | 精確投遞 |
discord:#ops |
按頻道名稱發 | 不用記數字 |
signal:+15551234567 |
按手機號碼發 | 適合 Signal/簡訊 |
第3步:發檔案、加標題
# 傳送檔案內容
hermes send --to discord:#ops --file /tmp/報告.md
# 加個標題列,像郵件主旨
hermes send --to slack:#eng --subject "[CI] 建置日誌" --file build.log
第4步:寫進你的腳本
監控告警——記憶體超過才發:
ram_pct=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$ram_pct" -ge 85 ]; then
hermes send --to telegram --subject "⚠ 記憶體告警" \
"RAM ${ram_pct}% on $(hostname)"
fi
CI/CD 通知——部署成功或失敗:
if ./scripts/deploy.sh; then
hermes send --to slack:#deploys "✅ 部署成功"
else
tail -n 100 deploy.log | hermes send \
--to slack:#deploys --subject "❌ 部署失敗"
exit 1
fi
定時任務——每天早上9點發日報(搭配 cron):
0 9 * * * /usr/local/bin/generate-metrics.sh \
| hermes send --to telegram --subject "每日數據 $(date +%Y-%m-%d)"
第5步:腳本裡用得上的小技巧
--quiet:成功時不輸出任何內容,只回傳結束碼,適合腳本判斷--json:輸出原始 JSON,可以拿到訊息 ID 做後續操作- 結束碼:
0成功,1平台投遞失敗,2參數錯誤——和curl一樣標準
# 投遞失敗就讓腳本報錯結束
hermes send --to telegram --quiet "心跳" || {
echo "Telegram 投遞失敗" >&2
exit 1
}
查看有哪些可用的接收目標
hermes send --list # 列出所有
hermes send --list telegram # 只看 Telegram
需要閘道器在執行嗎?
通常不需要。 對 Telegram、Discord、Slack 這類平台,hermes send 直接呼叫平台的 REST 介面,發完就結束。只有少數依賴長連線的插件平台才需要閘道器,遇到會報清晰錯誤提示。
小提醒:如果你的看門狗腳本是用來監控系統資源(比如記憶體爆了),建議還是用最原始的
curl直發——萬一 Python 都跑不起來了,你還需要一條能發出去的救命訊息。
總結
hermes send 就是通知界的「瑞士刀」——一條命令,所有平台,重用設定,即發即走。從監控告警到 CI 通知,從定時日報到訓練完成提醒,它都能優雅搞定。
下篇預告:如果想讓 AI 自己決定發什麼內容,而不是手動拼字串,我們下篇聊聊 「用 Cron 自動跑智慧體任務」——讓 Hermes 定時替你思考並回報結果。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › guides/pipe-script-output