词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
gh CLI 获取 diff,并将响应发布回 PR 线程。hermes gateway)gh CLI 已安装并在 gateway 主机上完成认证(gh auth login)~/.hermes/config.yaml 中添加以下内容:| 字段 | 说明 |
|---|---|
secret(路由级别) | 该路由的 HMAC secret。如果省略,则回退到 extra.secret 全局配置。 |
events | 要接受的 X-GitHub-Event 请求头值列表。空列表 = 接受所有。 |
prompt | 模板;{field} 和 {nested.field} 从 GitHub payload 中解析。 |
deliver | github_comment 通过 gh pr comment 发布。log 仅写入 gateway 日志。 |
deliver_extra.repo | 从 payload 中解析为例如 org/repo。 |
deliver_extra.pr_number | 从 payload 中解析为 PR 编号。 |
gh pr diff 来获取实际变更。terminal 工具已包含在默认的 hermes-webhook 工具集中,无需额外配置。[webhook] Listening on 0.0.0.0:8644 — routes: github-pr-reviewhttps://your-public-url.example.com/webhooks/github-pr-reviewapplication/jsonsecret 设置的值相同ping 事件以确认连接。该事件会被安全忽略——ping 不在你的 events 列表中——并返回 {"status": "ignored", "event": "ping"}。它仅在 DEBUG 级别记录日志,因此不会在默认日志级别的控制台中显示。https://...ngrok-free.app URL 并将其用作你的 GitHub Payload URL。在 ngrok 免费版中,每次 ngrok 重启后 URL 都会变化——每次会话都需要更新你的 GitHub webhook。付费 ngrok 账户可获得静态域名。curl 对静态路由进行冒烟测试——无需 GitHub 账户或真实 PR。deliver: logdeliver: github_comment 改为 deliver: log。否则 agent 将尝试向测试 payload 中的假 org/repo#99 仓库发布评论,这将会失败。对 prompt 输出满意后,再切换回 deliver: github_comment。hermes webhook test <name> 仅适用于通过 hermes webhook subscribe 创建的动态订阅。它不读取 config.yaml 中的路由。pull_request 事件:opened、synchronize、reopened、closed、labeled 等。events 列表仅按 X-GitHub-Event 请求头值过滤——无法在路由级别按 action 子类型过滤。closed 和 labeled 事件提前停止来处理这一问题。pull_request 事件运行至完成。GitHub webhook 只能按事件类型(pull_request、push、issues 等)过滤——无法按 action 子类型(opened、closed、labeled)过滤。路由级别没有针对子 action 的过滤器。对于高流量仓库,请接受这一成本,或通过 GitHub Actions workflow 在上游进行过滤,有条件地调用你的 webhook URL。不支持 Jinja2 或条件模板语法。 {field}和{nested.field}是唯一支持的替换方式。其他内容会原样传递给 agent。
config.yaml 的 platforms.webhook.extra.routes 中,向你的路由添加 skills:注意: 列表中只有第一个找到的 skill 会被加载。Hermes 不会叠加多个 skill——后续条目会被忽略。
deliver 和 deliver_extra 字段替换为你的目标平台:chat_id,响应将发送到该平台配置的默认频道。deliver 值:log · github_comment · telegram · discord · slack · signal · smsX-Gitlab-Token 进行认证(纯字符串匹配,非 HMAC)——Hermes 会自动处理两者。X-GitLab-Event 设置为 Merge Request Hook、Push Hook、Pipeline Hook 等值。在 events 中使用精确的请求头值:{object_attributes.title},MR 编号使用 {object_attributes.iid}。发现完整 payload 结构最简单的方式是使用 GitLab webhook 设置中的 Test 按钮,结合 Recent Deliveries 日志。或者,在路由配置中省略 prompt——Hermes 将把完整 payload 作为格式化 JSON 直接传递给 agent,agent 的响应(在 gateway 日志中通过 deliver: log 可见)将描述其结构。INSECURE_NO_AUTH——它会完全禁用签名验证。仅用于本地开发。config.yaml 中同步更新。extra.rate_limit 配置)。超出限制返回 429。X-GitHub-Delivery(如果存在)、X-Request-ID、毫秒级时间戳。当两个投递 ID 请求头都未设置时,重试不会去重。| 现象 | 检查项 |
|---|---|
401 Invalid signature | config.yaml 中的 secret 与 GitHub webhook secret 不匹配 |
404 Unknown route | URL 中的路由名称与 routes: 中的键不匹配 |
429 Rate limit exceeded | 每条路由每分钟 30 次请求已超出——在 GitHub UI 中重新投递测试事件时常见;等待一分钟或提高 extra.rate_limit |
| 未发布评论 | gh 未安装、不在 PATH 中,或未完成认证(gh auth login) |
| Agent 运行但无评论 | 检查 gateway 日志——如果 agent 输出为空或仅为"SKIP",投递仍会被尝试 |
| 端口已被占用 | 在 config.yaml 中修改 extra.port |
| Agent 运行但仅审查了 PR 描述 | prompt 中未包含 gh pr diff 指令——diff 不在 webhook payload 中 |
| 看不到 ping 事件 | 被忽略的事件仅在 DEBUG 日志级别返回 {"status":"ignored","event":"ping"}——检查 GitHub 的投递日志(仓库 → Settings → Webhooks → 你的 webhook → Recent Deliveries) |