凌晨两点线上数据库磁盘满了。第二天早上打开邮箱才看到告警邮件已经过去了 6 个小时用户投诉早就堆满了客服群。如果当时能立刻收到微信通知5 分钟就能处理完。这件事之后我就一直在想——有没有一种推送方式能做到免费、实时到达、不用装额外的 App、锁屏也能弹窗提醒答案其实很简单微信。每个人手机上都有消息实时到达锁屏弹窗带声音。更关键的是微信公众平台提供了测试号不需要企业资质个人开发者扫码就能申请每天 10 万次推送额度完全免费。唯一的门槛是微信的模板消息接口用起来比较繁琐。所以我把这些都封装好了用 C# 写了个开箱即用的推送服务。CSharp-WXPushGitHubhttps://github.com/hueifeng/CSharp-WXPush一个 HTTP 请求就能把消息推到你的微信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}}前面必须加点文案(比如内容:)不然推送出来是空白的。第二步一行命令启动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?titleHellocontent我的第一条推送或者用 curlcurl http://localhost:5566/wxsend?titleHellocontent我的第一条推送返回{errcode:0,errmsg:ok}—— 去看微信消息已经到了。也支持 POST方便对接 Webhookcurl -X POST http://localhost:5566/wxsend \ -H Content-Type: application/json \ -d {title:构建通知,content:main 分支构建成功}实战场景用了一段时间基本上能想到的通知需求都能覆盖分享几个我自己在用的。AI Agent 任务通知现在越来越多的工作交给 AI Agent 去跑——代码生成、数据分析、文档整理、批量翻译... 这些任务丢出去之后你不可能一直盯着等它跑完。接上推送服务Agent 干完活自动通知你import requests # AI Agent 完成任务后回调 def on_task_complete(task_name, result_summary): requests.get(http://your-server:5566/wxsend, params{ title: fAgent 任务完成{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: fAgent 异常{task_name}, content: f错误信息{error} })不管你在开会、吃饭还是遛弯Agent 的工作进度随时掌握。服务器监控告警写个脚本丢到 crontab 里每分钟检测一次站点挂了立刻通知#!/bin/bash if ! curl -sf http://yoursite.com /dev/null 21; then curl http://localhost:5566/wxsend?title站点告警contentyoursite.com 无法访问请立即检查 fiCI/CD 构建通知在 GitHub Actions 的 workflow 最后加一步- name: 推送结果到微信 if: always() run: | curl http://your-server:5566/wxsend?title构建${{ job.status }}content${{ github.repository }} ${{ github.ref_name }}数据库备份 / 长任务完成提醒# 备份完成通知 pg_dump mydb backup_$(date %Y%m%d).sql \ curl http://localhost:5566/wxsend?title备份完成contentmydb 数据库备份成功 # 模型训练完成通知 python train.py \ curl http://localhost:5566/wxsend?title训练完成content模型训练结束准确率98.5%25不用一直盯着终端了该干嘛干嘛完了微信告诉你。智能家居 / IoT树莓派、ESP32 之类的设备条件触发时推一条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但某次想推给另一个人请求时带上useridxxx就行不用重启服务。Docker 一键部署生产环境推荐用 Dockerdocker build -t csharp-wxpush . docker run -d -p 5566:5566 --name wxpush --restartalways csharp-wxpush \ -appid 你的appID \ -secret 你的appsecret \ -userid 你的openid \ -template_id 你的模板ID \ -base_url https://你的域名配好-base_url微信里点消息就能跳到详情页看完整内容。写在最后这个项目的初衷很简单用最少的代码解决第一时间知道这个问题。一个文件、一行命令、一个 curl搞定所有推送需求。无论是传统的运维告警还是现在越来越多的 AI Agent 工作流只要你需要事情做完了通知我一声——它都能帮到你。如果你也有类似的需求欢迎试试GitHubhttps://github.com/hueifeng/CSharp-WXPush觉得有用的话欢迎 Star 和推荐有问题随时提 Issue。
AI Agent 跑完任务怎么通知你?我写了个微信推送服务
凌晨两点线上数据库磁盘满了。第二天早上打开邮箱才看到告警邮件已经过去了 6 个小时用户投诉早就堆满了客服群。如果当时能立刻收到微信通知5 分钟就能处理完。这件事之后我就一直在想——有没有一种推送方式能做到免费、实时到达、不用装额外的 App、锁屏也能弹窗提醒答案其实很简单微信。每个人手机上都有消息实时到达锁屏弹窗带声音。更关键的是微信公众平台提供了测试号不需要企业资质个人开发者扫码就能申请每天 10 万次推送额度完全免费。唯一的门槛是微信的模板消息接口用起来比较繁琐。所以我把这些都封装好了用 C# 写了个开箱即用的推送服务。CSharp-WXPushGitHubhttps://github.com/hueifeng/CSharp-WXPush一个 HTTP 请求就能把消息推到你的微信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}}前面必须加点文案(比如内容:)不然推送出来是空白的。第二步一行命令启动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?titleHellocontent我的第一条推送或者用 curlcurl http://localhost:5566/wxsend?titleHellocontent我的第一条推送返回{errcode:0,errmsg:ok}—— 去看微信消息已经到了。也支持 POST方便对接 Webhookcurl -X POST http://localhost:5566/wxsend \ -H Content-Type: application/json \ -d {title:构建通知,content:main 分支构建成功}实战场景用了一段时间基本上能想到的通知需求都能覆盖分享几个我自己在用的。AI Agent 任务通知现在越来越多的工作交给 AI Agent 去跑——代码生成、数据分析、文档整理、批量翻译... 这些任务丢出去之后你不可能一直盯着等它跑完。接上推送服务Agent 干完活自动通知你import requests # AI Agent 完成任务后回调 def on_task_complete(task_name, result_summary): requests.get(http://your-server:5566/wxsend, params{ title: fAgent 任务完成{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: fAgent 异常{task_name}, content: f错误信息{error} })不管你在开会、吃饭还是遛弯Agent 的工作进度随时掌握。服务器监控告警写个脚本丢到 crontab 里每分钟检测一次站点挂了立刻通知#!/bin/bash if ! curl -sf http://yoursite.com /dev/null 21; then curl http://localhost:5566/wxsend?title站点告警contentyoursite.com 无法访问请立即检查 fiCI/CD 构建通知在 GitHub Actions 的 workflow 最后加一步- name: 推送结果到微信 if: always() run: | curl http://your-server:5566/wxsend?title构建${{ job.status }}content${{ github.repository }} ${{ github.ref_name }}数据库备份 / 长任务完成提醒# 备份完成通知 pg_dump mydb backup_$(date %Y%m%d).sql \ curl http://localhost:5566/wxsend?title备份完成contentmydb 数据库备份成功 # 模型训练完成通知 python train.py \ curl http://localhost:5566/wxsend?title训练完成content模型训练结束准确率98.5%25不用一直盯着终端了该干嘛干嘛完了微信告诉你。智能家居 / IoT树莓派、ESP32 之类的设备条件触发时推一条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但某次想推给另一个人请求时带上useridxxx就行不用重启服务。Docker 一键部署生产环境推荐用 Dockerdocker build -t csharp-wxpush . docker run -d -p 5566:5566 --name wxpush --restartalways csharp-wxpush \ -appid 你的appID \ -secret 你的appsecret \ -userid 你的openid \ -template_id 你的模板ID \ -base_url https://你的域名配好-base_url微信里点消息就能跳到详情页看完整内容。写在最后这个项目的初衷很简单用最少的代码解决第一时间知道这个问题。一个文件、一行命令、一个 curl搞定所有推送需求。无论是传统的运维告警还是现在越来越多的 AI Agent 工作流只要你需要事情做完了通知我一声——它都能帮到你。如果你也有类似的需求欢迎试试GitHubhttps://github.com/hueifeng/CSharp-WXPush觉得有用的话欢迎 Star 和推荐有问题随时提 Issue。