事件触发与 Webhook——让 Agent 响应外部事件
Cron 之外的另一条触发路径
Cron 是按时间触发,但有时候你想让 Agent 响应某个事件:
- 邮件来了带「老板」标签 → 执行助理 Agent → 总结邮件主旨 + 草拟回复 → 推送到微信
- GitHub 仓库有新 PR → 代码助手 Agent → 自动 review + comment
- 数据库里某个指标超过阈值 → 数据分析 Agent → 发告警到 Slack
两条实现路径
路径一:高频轮询 + 触发条件
这是 Cron 的变体——配一个每分钟跑一次的 Cron 任务,Agent 在里面检查「有没有新邮件」「有没有新 PR」。如果没有就快速退出(几乎不消耗 token),如果有就跑完整逻辑。
这种方式的好处是零额外依赖——用已有的 Cron + Agent 就能做。坏处是有最高 1 分钟的延迟。
路径二:MCP 工具接外部 Webhook
如果你需要真正的事件驱动(秒级响应),写一个 MCP Server 暴露 webhook endpoint,MateClaw 订阅这个 MCP 工具。当外部事件发生时:
- 外部系统 POST 到 MCP Server 的 webhook endpoint
- MCP Server 把事件包装成一个工具调用
- Agent 收到工具调用通知,拉起执行链
这种方式更灵活但实现成本更高——需要自己写 MCP Server。
一个具体例子:邮件触发
假设你想让 Agent 响应带「老板」标签的邮件:
方案 A(高频 Cron):每分钟跑一次执行助理 Agent,Agent 调用邮件工具检查「过去 1 分钟有没有新的带老板标签的邮件」。如果有就总结草拟回复,没有就结束。
方案 B(Webhook + MCP):邮件系统(比如 Gmail)配置一个「新邮件到达且标签=老板」的 webhook 规则,POST 到你的 MCP Server。MCP Server 把邮件内容作为参数传给 MateClaw 的 Agent API。
事件触发时 Tool Guard 照样生效
定时/事件触发的 Agent 没有人工值守,但 Tool Guard 规则一样会执行。需要审批的工具调用不会被绕过——如果配置成 require_approval,审批请求会推到默认通知渠道等你批准;如果配置成 deny,Agent 会直接跳过这步不发审批通知。