AI不再等你找它:通知Skill,让它主动发微信、写邮件、弹提醒


你有没有发现——
到现在为止,你跟 AI 的互动模式都是“你找它”。你问它答,你叫它动。
但很多时候,你需要的是"它找你"。
-
报表生成了,你能不能主动微信我一下?
-
网页监控到变化了,你能不能给我发封邮件?
-
明天上午有会,你能不能提前弹个提醒?
就像一个助理——不只是你叫他才动,而是事情有结果了,他主动跑过来告诉你。
今天这一课,给 AI 装上“主动联系你”的能力。学会之后,你的 AI 不再是“被动响应”,而是“主动汇报”。
一、通知类 Skill 的三种渠道
微信 日常通知、报表推送 秒级 微信机器人 API
邮件 正式报告、对外沟通 分钟级 SMTP 发送
系统通知 桌面弹窗提醒 秒级 节点通知器
三选一,或者三个都要。每种渠道的实现方式不同,但套路完全一样:接收消息内容 → 调用发送接口 → 返回发送结果。
二、实战一:微信通知 技能
需求:日报生成了,Agent 自动把日报内容发到你微信上。
文件结构
skills/
└── wechat_notify/
├── SKILL.md
├── skill.json
└── index.jsSKILL.md
# 微信通知 ## 功能
通过微信向指定用户发送消息。 ## 使用场景
- Agent 完成任务后通知用户
- 定时任务的结果推送
- 异常情况的及时报警 ## 输入参数
- message(必填):要发送的消息内容
- userId(选填):接收者的微信 ID,默认发送给自己 ## 输出格式
返回发送结果:成功或失败原因。skill.json
{
"name": "wechat_notify",
"version": "1.0.0",
"description": "通过微信发送通知消息",
"author": "我",
"keywords": ["微信", "通知", "消息"],
"permissions": ["network"]
}index.js
' 微信通知 Skill
' 前提:你的 OpenCLAW 已经配好了微信通道
export default async function(query) {
try {
' ===== 1. 取参数 =====
const message = query.message
if (!message) {
return '⚠️ 请提供要发送的消息内容。'
} ' ===== 2. 发送微信消息 =====
' 这里调用你配置的微信通道来发送消息
' 具体实现取决于你的微信通道的 API 接口
const result = await sendWechatMessage({
content: message,
' msgtype: "text" 表示发送文本消息
msgtype: 'text'
}) ' ===== 3. 返回结果 =====
if (result.success) {
return `✅ 微信消息已发送。内容:${message.slice(0, 50)}${message.length > 50 ? '...' : ''}`
} else {
return `⚠️ 微信消息发送失败:${result.error}`
} } catch (error) {
return `⚠️ 微信通知失败:${error.message}。请检查微信通道是否配置正确。`
}
} ' 辅助函数:调用微信 API 发送消息
async function sendWechatMessage(params) {
' webhook_url 是你的微信机器人的 Webhook 地址
' 这个地址在配置微信通道时会得到
const webhookUrl = process.env.WECHAT_WEBHOOK_URL if (!webhookUrl) {
throw new Error('微信 Webhook 未配置,请先设置环境变量 WECHAT_WEBHOOK_URL')
} const response = await fetch(webhookUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(params)
}) return await response.json()
}三、实战二:邮件通知 Skill
需求:月度报表生成了,自动发邮件到老板邮箱。
index.js
' 邮件通知 Skill
' 需要安装:npm install nodemailer
import nodemailer from 'nodemailer' export default async function(query) {
try {
' ===== 1. 取参数 =====
const to = query.to ' 收件人邮箱
const subject = query.subject ' 邮件主题
const body = query.body ' 邮件正文
const attachments = query.attachments || [] ' 附件(可选) if (!to || !subject || !body) {
return '⚠️ 请提供收件人(to)、主题(subject)和正文(body)。'
} ' ===== 2. 创建邮件发送器 =====
' 就像一个邮递员——你要告诉他用哪个邮箱、什么密码
const transporter = nodemailer.createTransport({
host: 'smtp.qq.com', ' QQ 邮箱的发送服务器
port: 465, ' 端口号 465(加密)
secure: true, ' 使用加密
auth: {
user: process.env.EMAIL_USER, ' 你的 QQ 邮箱
pass: process.env.EMAIL_PASS ' QQ 邮箱的授权码(不是密码!)
}
}) ' ===== 3. 发送邮件 =====
const info = await transporter.sendMail({
from: process.env.EMAIL_USER, ' 发件人
to: to, ' 收件人
subject: subject, ' 主题
text: body, ' 正文
attachments: attachments ' 附件
}) ' ===== 4. 返回结果 =====
return `✅ 邮件已发送!\n` +
`收件人:${to}\n` +
`主题:${subject}\n` +
`邮件 ID:${info.messageId}` } catch (error) {
return `⚠️ 邮件发送失败:${error.message}。` +
`请检查邮箱配置(EMAIL_USER 和 EMAIL_PASS 环境变量)。`
}
}注意几个关键点:
**QQ 邮箱的"密码"不是你的 QQ 密码——是"授权码"。**在 QQ 邮箱 → 设置 → 账户 → POP3/SMTP 服务 → 生成授权码。把这一串英文数字填到 环境变量里。EMAIL_PASS
不同邮箱的 SMTP 服务器不一样:
QQ 邮箱 smtp.qq.com 465
163 邮箱 smtp.163.com 465
Gmail smtp.gmail.com 587
企业微信 smtp.exmail.qq.com 465
四、实战三:桌面弹窗提醒
需求:重要任务完成时,在电脑桌面弹一个通知。
index.js
' 桌面通知 Skill
' 需要安装:npm install node-notifier
import notifier from 'node-notifier' export default async function(query) {
try {
const title = query.title || 'OpenCLAW 提醒'
const message = query.message || '' if (!message) {
return '⚠️ 请提供通知内容(message)。'
} ' node-notifier 会在你的桌面右下角弹出一个通知气泡
notifier.notify({
title: title,
message: message,
sound: true, ' 弹出时有提示音
wait: false ' 不等用户关闭,立刻返回
}) return `✅ 桌面通知已弹出:${title} - ${message.slice(0, 50)}` } catch (error) {
return `⚠️ 桌面通知失败:${error.message}。`
}
}这个 Skill 只能在有图形桌面的电脑上跑(Windows/Mac/Linux 桌面版)。服务器上跑不了——因为服务器没有桌面。
五、通知 Skill 的最佳实践
实践 1:不同重要程度用不同渠道
🟢 普通通知(日报生成了) → 微信消息
🟡 重要通知(监控到异常数据) → 微信 + 邮件
🔴 紧急通知(服务挂了) → 微信 + 邮件 + 桌面弹窗别啥事都弹桌面通知——你会烦到关掉它。
实践 2:通知内容要清晰可操作
❌ 「数据有变化」
✅ 「竞品官网昨晚更新了定价页面,降价幅度 15%。链接:xxx ➡️ 建议今天内完成竞品调价分析。」好的通知 = 发生了什么事 + 你需要做什么 + 相关的链接/数据。
实践 3:通知 + Cron = 真正的自动化
cron:
- schedule: "0 17 * * 5" ' 每周五下午 5 点
timezone: Asia/Shanghai
task: |
1. 分析 C:/sales.csv 的数据 → 调销售报表 Skill
2. 把报告通过微信通知我 → 调微信通知 Skill一条 Cron,串联两个 Skill。报表 Skill 负责“算”,通知 Skill 负责“送”。
动手:选一个渠道,让 AI 给你发第一条通知
-
最方便: 微信通知(你每天都在微信上,不用装任何新东西)
-
最正式: 邮件通知(适合发周报给老板)
-
最简单: 桌面弹窗(一行代码,适合测试)
选好后配好 Cron,设一个 2 分钟后的触发时间,看它能不能准时通知你。
通知 Skill = AI 的「嘴」,能主动喊你了
在这课之前,你的 AI 是"哑巴"——它做了事不会主动告诉你。有了通知 Skill,AI 就长了一张“能喊你的嘴”。
从“你找它”到“它找你”——这才是真正的 AI 助手。
下一课,我们讲开发 Skill 的最后一步——调试和发布。怎么找 bug、怎么把你写的 Skill 分享给别人用。
跑通通知了吗?截个你收到的第一条 AI 主动消息~ 🔔