实战:脚本输出推送到聊天
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