Agent工坊

【Agent工坊】Hermes Webhook触发器:用HTTP请求远程启动你的AI Agent流水线

你花了一周搭建的AI内容流水线,每天凌晨2点自动跑——但你白天在外面看到一条突发新闻,想让Agent立刻生成一篇分析稿。SSH进服务器?太麻烦。打开Telegram给Bot发消息?还要切换App。最理想的方案:在你的n8n面板里点一下"立即执行",Agent就开始工作。Hermes的Webhook触发器就是干这个的:给Agent开一个HTTP入口,任何系统都能远程调用它。

你肯定遇到过这个场景

你的Hermes Agent跑着一条内容流水线——cron每小时扫描热点、发现大新闻自动写稿。系统很稳定,但你逐渐发现一个痛点:

  • 你在外面看到一条AI行业突发新闻,想立刻触发热点扫描+深度分析——但cron要等下一个整点才跑
  • 你的n8n工作流实现了"小红书发布→自动同步公众号",但最后一步"提交草稿"是Agent负责的——n8n不知道怎么调用Agent
  • 团队里PM想要临时生成一份竞品分析报告,但她不懂Hermes CLI,更不会SSH

这都不是Agent能力的问题——是Agent缺少一个标准化的远程调用入口

Hermes的Webhook功能就是解决这个问题的:你订阅一个webhook路由,外部系统通过HTTP POST就能触发Agent执行预设任务。Agent变成了一个API服务

什么场景适合用Webhook

场景 传统方式 Webhook方式
手动触发内容生成 SSH进服务器执行hermes n8n面板点按钮 → POST webhook
用户提交表单后启动分析 手动复制信息给Agent 表单提交 → POST webhook(含表单数据)
GitHub release监控 定时轮询API GitHub Actions → release事件 → POST webhook
团队协作:PM请求报告 截图/描述发给懂技术的人 PM填表单 → Zapier → POST webhook

核心思路:把Agent当成你基础设施中的一个可编程组件,任何能发HTTP请求的系统都能调用它。

配置步骤

Step 1:确保Gateway在运行

Webhook的路由是Gateway的一部分,所以Gateway必须在运行:

# 检查Gateway状态
hermes gateway status

# 如果没运行,启动它
hermes gateway run
# 或者安装为后台服务(推荐)
hermes gateway install

Step 2:订阅Webhook路由

# 订阅一个名为 "content-trigger" 的webhook
hermes webhook subscribe content-trigger

这会创建一个路由:http://your-server:8642/webhooks/content-trigger(8642是Gateway API Server的默认端口)。

注意:路由名称会影响URL路径。如果你订阅了 hotspot-scan,路由就是 /webhooks/hotspot-scan。用英文小写+连字符命名,方便外部系统调用。

Step 3:测试Webhook

# 用内置命令测试
hermes webhook test content-trigger

# 或者直接用curl
curl -X POST http://localhost:8642/webhooks/content-trigger \
  -H "Content-Type: application/json" \
  -d '{"trigger": "manual", "source": "operator"}'

如果你在远程服务器上,把 localhost 换成你的服务器IP或域名。注意安全:Gateway的API Server默认监听 0.0.0.0:8642,这意味着如果你没有防火墙,外网可以直接访问。后面会讲安全加固。

实战1:用curl远程触发内容生成

假设你的Webhook订阅名为 hotspot-scan,你想在发现重要新闻时立刻触发扫描+写稿:

# 最简触发
curl -X POST https://your-server.com:8642/webhooks/hotspot-scan

# 带上下文数据触发(Agent的prompt可以引用这些数据)
curl -X POST https://your-server.com:8642/webhooks/hotspot-scan \
  -H "Content-Type: application/json" \
  -d '{
    "priority": "urgent",
    "keywords": ["OpenAI", "GPT-6", "开源"],
    "instruction": "发现OpenAI可能开源GPT-6的传闻,请搜索核实并生成800字快报"
  }'

Agent会收到这个POST请求,body中的JSON字段(prioritykeywordsinstruction)会作为上下文注入到Agent的会话中。你可以在订阅Webhook时设定Agent收到请求后的默认指令。

实战2:n8n面板集成——点击按钮触发流水线

n8n是开源的工作流自动化工具,非常适合AI创业者。以下是一个n8n工作流配置:

工作流节点链:
1. Webhook触发器(手动触发)
   ↓
2. HTTP Request节点 → POST到 Hermes webhook
   ↓
3. 等待结果(可选,轮询Agent状态)

n8n HTTP Request节点配置

Method: POST
URL: https://your-server.com:8642/webhooks/content-trigger
Headers:
  Content-Type: application/json
Body (JSON):
{
  "trigger": "n8n_manual",
  "workflow_name": "{{ $workflow.name }}",
  "timestamp": "{{ $now }}"
}

这样你在n8n面板里点一下"执行工作流",Agent就开始跑了。

实战3:GitHub Actions联动——代码推送后自动触发Agent分析

如果你维护着一个技术栈仓库(比如OpenClaw配置模板),每次push后让Agent分析变更并更新文档:

# .github/workflows/trigger-agent.yml
name: Trigger Agent Analysis

on:
  push:
    branches: [main]
    paths:
      - 'configs/**'
      - 'skills/**'

jobs:
  trigger-hermes:
    runs-on: ubuntu-latest
    steps:
      - name: Notify Hermes Agent
        run: |
          curl -X POST https://your-server.com:8642/webhooks/config-analyzer \
            -H "Content-Type: application/json" \
            -d "{\"event\": \"push\", \"branch\": \"${{ github.ref_name }}\", \"commit_msg\": \"${{ github.event.head_commit.message }}\"}"

Agent收到后可以分析commit diff、更新技能文档、生成change log——全自动。

安全加固(重要!)

把Agent暴露为HTTP API固然方便,但安全必须跟上:

1. 添加Secret验证

在Webhook URL中加入一个secret参数,只有知道secret的请求才被处理:

# 订阅时指定secret(注意:这需要在创建webhook时设置,不同版本可能有差异)
# 推荐做法:前面加一层nginx反向代理来验证secret

Nginx反向代理方案(最灵活):

# /etc/nginx/sites-available/hermes-webhook
server {
    listen 443 ssl;
    server_name agent-api.yourdomain.com;

    location /webhooks/ {
        # 验证自定义Header中的Secret
        if ($http_x_webhook_secret != "YOUR_LONG_RANDOM_SECRET") {
            return 403 '{"error": "Forbidden"}';
        }
        proxy_pass http://127.0.0.1:8642;
        proxy_set_header Host $host;
    }
}

这样外部请求必须带 X-Webhook-Secret: YOUR_LONG_RANDOM_SECRET 头才能访问。

2. 防火墙限制来源IP

# 只允许n8n服务器IP访问
iptables -A INPUT -p tcp --dport 8642 -s 10.0.0.5 -j ACCEPT
iptables -A INPUT -p tcp --dport 8642 -j DROP

3. 使用独立Profile隔离权限

# 为webhook创建独立Profile,限制工具权限
hermes profile create webhook-agent
hermes profile use webhook-agent

# 在这个Profile里只启用必要的工具
hermes tools disable browser
hermes tools disable terminal  # 如果不希望webhook触发shell命令
hermes tools enable file
hermes tools enable web

通过Profile隔离,即使webhook被滥用,攻击面也被限制在最小范围。

进阶:Webhook + Cron 组合拳

Webhook和Cron不是互斥的——它们是最佳拍档:

场景 触发方式 Agent行为
常规热点监控 Cron(每15分钟) 扫描多个数据源
突发新闻处理 Webhook(人工/外部触发) 立即深度分析一条新闻
日报生成 Cron(每天晚上) 汇总当天内容
用户订阅触发 Webhook(表单提交) 生成个性化报告

组合工作流示例

Cron "热点监控"(每15分钟)
    ↓ 发现重大新闻(评分>80)
生成URGENT草稿 → 调用"突发响应"Webhook(自己调自己!)
    ↓
Webhook "突发响应" → Agent立即生成深度文章 → 提交草稿箱 → 发送Telegram通知

这样你就有了一套分层响应系统:常规内容靠Cron兜底,高优先级内容靠Webhook即时处理。

常见问题

Q:Webhook请求超时怎么办?
A:Agent执行任务可能需要几分钟。默认Gateway会立即返回202 Accepted,不会阻塞等待任务完成。如果需要轮询结果,可以用Hermes的sessions API查询任务状态。

Q:能同时订阅多个Webhook吗?
A:可以。每个webhook独立路由,互不干扰。一个典型的配置:

hermes webhook subscribe content-trigger    # 内容生成
hermes webhook subscribe data-report        # 数据报告
hermes webhook subscribe system-alert       # 系统告警

Q:Webhook和Gateway其他功能冲突吗?
A:不冲突。Gateway是多平台统一的——Telegram Bot、Discord Bot、Webhook都在同一进程里,共享同一个Agent实例。你在Telegram上对Bot说的话,和通过Webhook触发的任务,走的是同一条处理管道。

Q:生产环境怎么监控Webhook调用情况?
A:Gateway日志在 ~/.hermes/logs/gateway.log,每次webhook调用都会记录。你也可以在webhook订阅时指定一个回调URL,Agent完成后会POST结果过去。

总结

Hermes Webhook把Agent从"命令行工具"升级为"可编程基础设施组件"。三行命令,你的Agent就能接收来自n8n、GitHub、Zapier甚至你自己写的管理面板的远程调用。

今天就能做的事
1. hermes webhook subscribe my-first-hook — 创建第一个webhook
2. curl -X POST http://localhost:8642/webhooks/my-first-hook — 用curl验证
3. 在你的n8n或Zapier里加一个HTTP Request节点,指向这个webhook URL

把Agent嵌入你的自动化基础设施,它就不只是工具——它是你"一人公司"的24小时值守员工。


AI创业 #HermesAgent #Webhook #自动化 #一人公司 #Agent工坊