AI Agent 跑完任务怎么通知你?我写了个微信推送服务

凌晨两点,线上数据库磁盘满了。第二天早上打开邮箱才看到告警邮件,已经过去了 6 个小时,用户投诉早就堆满了客服群。

如果当时能立刻收到微信通知,5 分钟就能处理完。

这件事之后我就一直在想------有没有一种推送方式,能做到免费、实时到达、不用装额外的 App、锁屏也能弹窗提醒

答案其实很简单:微信 。每个人手机上都有,消息实时到达,锁屏弹窗带声音。更关键的是,微信公众平台提供了测试号 ,不需要企业资质,个人开发者扫码就能申请,每天 10 万次推送额度,完全免费。

唯一的门槛是微信的模板消息接口用起来比较繁琐。所以我把这些都封装好了,用 C# 写了个开箱即用的推送服务。

CSharp-WXPush

GitHub:https://github.com/hueifeng/CSharp-WXPush

一个 HTTP 请求就能把消息推到你的微信:

bash 复制代码
curl "http://你的服务器:5566/wxsend?title=磁盘告警&content=数据库服务器磁盘使用率已达95%25"

几秒后,手机上就弹出了微信通知:

点开消息,跳转到自带的详情页,支持 Markdown 渲染:

技术上有什么特点?

项目基于 .NET 9 Minimal API 构建,整个核心逻辑就一个 Program.cs,不到 160 行:

  • 零第三方依赖 ------ 只用了 ASP.NET Core 内置组件,没有引入任何 NuGet 包
  • 单文件架构 ------ 路由、微信 API 调用、参数解析、模型定义全在一个文件里,风格类似 Go 的 main.go
  • 嵌入式资源 ------ 详情页 HTML 通过 EmbeddedResource 编译进 DLL,部署时只需要一个可执行文件
  • 同时支持 GET 和 POST ------ GET 方便浏览器和 curl 直接调用,POST 方便对接 Webhook

没有数据库,没有 Redis,没有消息队列。启动就能用。

3 分钟跑起来

第一步:拿到微信测试号的 4 个参数

打开 微信测试号申请页面,微信扫码登录。

登录后你需要拿到 4 样东西:

1) appID 和 appsecret ------ 页面最上面就能看到

2) 你的 openid ------ 用微信扫描页面上的测试号二维码关注,然后在"用户列表"里找到

3) template_id ------ 在"模板消息接口"那里新增一个模板

模板内容这样填:

复制代码
标题: {{title.DATA}}
内容: {{content.DATA}}

有个坑要注意:模板内容不能只写 {{content.DATA}},前面必须加点文案(比如"内容:"),不然推送出来是空白的。

第二步:一行命令启动

bash 复制代码
git clone https://github.com/hueifeng/CSharp-WXPush.git
cd CSharp-WXPush
dotnet run -- \
  -appid "你的appID" \
  -secret "你的appsecret" \
  -userid "你的openid" \
  -template_id "你的模板ID"

看到这个输出就 OK 了:

复制代码
Server is running on: http://127.0.0.1:5566

第三步:发一条试试

浏览器直接打开:

复制代码
http://localhost:5566/wxsend?title=Hello&content=我的第一条推送

或者用 curl:

bash 复制代码
curl "http://localhost:5566/wxsend?title=Hello&content=我的第一条推送"

返回 {"errcode":0,"errmsg":"ok"} ------ 去看微信,消息已经到了。

也支持 POST,方便对接 Webhook:

bash 复制代码
curl -X POST http://localhost:5566/wxsend \
  -H "Content-Type: application/json" \
  -d '{"title":"构建通知","content":"main 分支构建成功"}'

实战场景

用了一段时间,基本上能想到的通知需求都能覆盖,分享几个我自己在用的。

AI Agent 任务通知

现在越来越多的工作交给 AI Agent 去跑------代码生成、数据分析、文档整理、批量翻译... 这些任务丢出去之后,你不可能一直盯着等它跑完。接上推送服务,Agent 干完活自动通知你:

python 复制代码
import requests

# AI Agent 完成任务后回调
def on_task_complete(task_name, result_summary):
    requests.get("http://your-server:5566/wxsend", params={
        "title": f"Agent 任务完成:{task_name}",
        "content": f"执行结果:{result_summary}\n耗时:3 分 28 秒"
    })

# 也可以在异常时告警
def on_task_error(task_name, error):
    requests.get("http://your-server:5566/wxsend", params={
        "title": f"Agent 异常:{task_name}",
        "content": f"错误信息:{error}"
    })

不管你在开会、吃饭还是遛弯,Agent 的工作进度随时掌握。

服务器监控告警

写个脚本丢到 crontab 里,每分钟检测一次,站点挂了立刻通知:

bash 复制代码
#!/bin/bash
if ! curl -sf http://yoursite.com > /dev/null 2>&1; then
  curl "http://localhost:5566/wxsend?title=站点告警&content=yoursite.com 无法访问,请立即检查"
fi

CI/CD 构建通知

在 GitHub Actions 的 workflow 最后加一步:

yaml 复制代码
- name: 推送结果到微信
  if: always()
  run: |
    curl "http://your-server:5566/wxsend?title=构建${{ job.status }}&content=${{ github.repository }} ${{ github.ref_name }}"

数据库备份 / 长任务完成提醒

bash 复制代码
# 备份完成通知
pg_dump mydb > backup_$(date +%Y%m%d).sql && \
curl "http://localhost:5566/wxsend?title=备份完成&content=mydb 数据库备份成功"

# 模型训练完成通知
python train.py && \
curl "http://localhost:5566/wxsend?title=训练完成&content=模型训练结束,准确率98.5%25"

不用一直盯着终端了,该干嘛干嘛,完了微信告诉你。

智能家居 / IoT

树莓派、ESP32 之类的设备,条件触发时推一条:

bash 复制代码
curl "http://your-server:5566/wxsend?title=家庭告警&content=客厅烟雾传感器触发,请注意安全"

参数一览

启动时设置默认值,请求时可以临时覆盖任意参数:

参数 说明 默认值
-port 服务端口 5566
-appid 微信 AppID -
-secret 微信 AppSecret -
-userid 接收者 OpenID -
-template_id 模板 ID -
-title 默认标题 -
-content 默认内容 -
-base_url 详情页公网地址 http://127.0.0.1:{port}
-tz 时区 Asia/Shanghai

比如启动时设好了默认的 userid,但某次想推给另一个人,请求时带上 userid=xxx 就行,不用重启服务。

Docker 一键部署

生产环境推荐用 Docker:

bash 复制代码
docker build -t csharp-wxpush .
docker run -d -p 5566:5566 --name wxpush --restart=always csharp-wxpush \
  -appid "你的appID" \
  -secret "你的appsecret" \
  -userid "你的openid" \
  -template_id "你的模板ID" \
  -base_url "https://你的域名"

配好 -base_url,微信里点消息就能跳到详情页看完整内容。

写在最后

这个项目的初衷很简单:用最少的代码,解决"第一时间知道"这个问题

一个文件、一行命令、一个 curl,搞定所有推送需求。无论是传统的运维告警,还是现在越来越多的 AI Agent 工作流,只要你需要"事情做完了通知我一声"------它都能帮到你。

如果你也有类似的需求,欢迎试试:

GitHub:https://github.com/hueifeng/CSharp-WXPush

觉得有用的话,欢迎 Star 和推荐,有问题随时提 Issue。