ByteNoteByteNote

字节笔记本

2026年6月21日

hermes教程-自动化蓝图

API中转
¥120

开发工作流

夜间积压任务分类

每晚对新的 issue 进行标记、优先级排序和总结,并将摘要发送到团队频道。

触发器: 定时(夜间)

bash
hermes cron create "0 2 * * *" \
  "你是一个项目经理,负责对 NousResearch/hermes-agent GitHub 仓库进行积压任务分类。

1. 运行:gh issue list --repo NousResearch/hermes-agent --state open --json number,title,labels,author,createdAt --limit 30
2. 识别过去 24 小时内创建的 issue
3. 对于每个新 issue:
   - 建议一个优先级标签(P0-critical、P1-high、P2-medium、P3-low)
   - 建议一个类别标签(bug、feature、docs、security)
   - 写一行分类说明
4. 总结:总开放 issue 数、今日新增数、按优先级分布

格式化为清晰的摘要。如果没有新 issue,则回复 [SILENT]。" \
  --name "夜间积压任务分类" \
  --deliver telegram

自动 PR 代码审查

每当拉取请求被打开时自动进行审查,并将审查评论直接发布在 PR 上。

触发器: GitHub webhook

选项 A — 动态订阅(CLI):

bash
hermes webhook subscribe github-pr-review \
  --events "pull_request" \
  --prompt "审查此拉取请求:
仓库:{repository.full_name}
PR #{pull_request.number}:{pull_request.title}
作者:{pull_request.user.login}
操作:{action}
差异 URL:{pull_request.diff_url}

使用以下命令获取差异:curl -sL {pull_request.diff_url}

审查要点:
- 安全问题(注入、认证绕过、代码中的密钥)
- 性能问题(N+1 查询、无界循环、内存泄漏)
- 代码质量(命名、重复、错误处理)
- 新行为缺少测试

发布简洁的审查意见。如果 PR 只是简单的文档/拼写更改,简要说明即可。" \
  --skill github-code-review \
  --deliver github_comment

选项 B — 静态路由(config.yaml):

yaml
platforms:
  webhook:
    enabled: true
    extra:
      port: 8644
      secret: "your-global-secret"
      routes:
        github-pr-review:
          events: ["pull_request"]
          secret: "github-webhook-secret"
          prompt: |
            审查 PR #{pull_request.number}:{pull_request.title}
            仓库:{repository.full_name}
            作者:{pull_request.user.login}
            差异 URL:{pull_request.diff_url}
            审查安全、性能和代码质量。
          skills: ["github-code-review"]
          deliver: "github_comment"
          deliver_extra:
            repo: "{repository.full_name}"
            pr_number: "{pull_request.number}"

然后在 GitHub 中:Settings → Webhooks → Add webhook → Payload URL:http://your-server:8644/webhooks/github-pr-review,Content type:application/json,Secret:github-webhook-secret,Events:Pull requests

文档漂移检测

每周扫描已合并的 PR,发现需要更新文档的 API 变更。

触发器: 定时(每周)

bash
hermes cron create "0 9 * * 1" \
  "扫描 NousResearch/hermes-agent 仓库,检测文档漂移。

1. 运行:gh pr list --repo NousResearch/hermes-agent --state merged --json number,title,files,mergedAt --limit 30
2. 筛选出过去 7 天内合并的 PR
3. 对于每个合并的 PR,检查它是否修改了:
   - 工具模式(tools/*.py)——可能需要更新 docs/reference/tools-reference.md
   - CLI 命令(hermes_cli/commands.py、hermes_cli/main.py)——可能需要更新 docs/reference/cli-commands.md
   - 配置选项(hermes_cli/config.py)——可能需要更新 docs/user-guide/configuration.md
   - 环境变量——可能需要更新 docs/reference/environment-variables.md
4. 交叉引用:对于每个代码变更,检查同一 PR 中是否也更新了相应的文档页面

报告任何代码变更但文档未更新的差距。如果一切同步,则回复 [SILENT]。" \
  --name "文档漂移检测" \
  --deliver telegram

依赖安全审计

每日扫描项目依赖中的已知漏洞。

触发器: 定时(每日)

bash
hermes cron create "0 6 * * *" \
  "对 hermes-agent 项目运行依赖安全审计。

1. cd ~/.hermes/hermes-agent && source .venv/bin/activate
2. 运行:pip audit --format json 2>/dev/null || pip audit 2>&1
3. 运行:npm audit --json 2>/dev/null(如果存在 website/ 目录)
4. 检查是否存在 CVSS 评分 >= 7.0 的 CVE

如果发现漏洞:
- 列出每个漏洞的包名、版本、CVE ID、严重程度
- 检查是否有可用的升级
- 注明是直接依赖还是传递依赖

如果没有漏洞,则回复 [SILENT]。" \
  --name "依赖审计" \
  --deliver telegram

DevOps 与监控

部署验证

每次部署后触发冒烟测试。你的 CI/CD 管道在部署完成时向 webhook 发送 POST 请求。

触发器: API 调用(webhook)

bash
hermes webhook subscribe deploy-verify \
  --events "deployment" \
  --prompt "刚刚完成一次部署:
服务:{service}
环境:{environment}
版本:{version}
部署者:{deployer}

执行以下验证步骤:
1. 检查服务是否响应:curl -s -o /dev/null -w '%{http_code}' {health_url}
2. 搜索近期日志中的错误:检查部署负载中是否有任何错误指示
3. 验证版本是否匹配:curl -s {health_url}/version

报告:部署状态(健康/降级/失败)、响应时间、发现的任何错误。
如果健康,保持简短。如果降级或失败,提供详细诊断。" \
  --deliver telegram

你的 CI/CD 管道触发它:

bash
curl -X POST http://your-server:8644/webhooks/deploy-verify \
  -H "Content-Type: application/json" \
  -H "X-Hub-Signature-256: sha256=$(echo -n '{"service":"api","environment":"prod","version":"2.1.0","deployer":"ci","health_url":"https://api.example.com/health"}' | openssl dgst -sha256 -hmac 'your-secret' | cut -d' ' -f2)" \
  -d '{"service":"api","environment":"prod","version":"2.1.0","deployer":"ci","health_url":"https://api.example.com/health"}'

告警分类

将监控告警与最近的变更关联起来,草拟响应。适用于 Datadog、PagerDuty、Grafana 或任何可以 POST JSON 的告警系统。

触发器: API 调用(webhook)

bash
hermes webhook subscribe alert-triage \
  --prompt "收到监控告警:
告警:{alert.name}
严重程度:{alert.severity}
服务:{alert.service}
消息:{alert.message}
时间戳:{alert.timestamp}

调查:
1. 在网上搜索此错误模式的已知问题
2. 检查是否与最近的部署或配置变更相关
3. 草拟分类摘要,包括:
   - 可能的根本原因
   - 建议的初步响应步骤
   - 升级建议(P1-P4)

保持简洁。此消息将发送到值班频道。" \
  --deliver slack

正常运行时间监控

每 30 分钟检查端点。仅在出现故障时通知。

触发器: 定时(每 30 分钟)

python
import urllib.request, json, time

ENDPOINTS = [
    {"name": "API", "url": "https://api.example.com/health"},
    {"name": "Web", "url": "https://www.example.com"},
    {"name": "Docs", "url": "https://docs.example.com"},
]

results = []
for ep in ENDPOINTS:
    try:
        start = time.time()
        req = urllib.request.Request(ep["url"], headers={"User-Agent": "Hermes-Monitor/1.0"})
        resp = urllib.request.urlopen(req, timeout=10)
        elapsed = round((time.time() - start) * 1000)
        results.append({"name": ep["name"], "status": resp.getcode(), "ms": elapsed})
    except Exception as e:
        results.append({"name": ep["name"], "status": "DOWN", "error": str(e)})

down = [r for r in results if r.get("status") == "DOWN" or (isinstance(r.get("status"), int) and r["status"] >= 500)]
if down:
    print("OUTAGE DETECTED")
    for r in down:
        print(f"  {r['name']}: {r.get('error', f'HTTP {r[\"status\"]}')} ")
    print(f"\nAll results: {json.dumps(results, indent=2)}")
else:
    print("NO_ISSUES")
bash
hermes cron create "every 30m" \
  "如果脚本报告 OUTAGE DETECTED,则总结哪些服务宕机并建议可能的原因。如果报告 NO_ISSUES,则回复 [SILENT]。" \
  --script ~/.hermes/scripts/check-uptime.py \
  --name "正常运行时间监控" \
  --deliver telegram

研究与情报

竞品仓库侦察

监控竞品仓库中感兴趣的 PR、功能和架构决策。

触发器: 定时(每日)

bash
hermes cron create "0 8 * * *" \
  "侦察以下 AI 代理仓库在过去 24 小时内的显著活动:

要检查的仓库:
- anthropics/claude-code
- openai/codex
- All-Hands-AI/OpenHands
- Aider-AI/aider

对于每个仓库:
1. gh pr list --repo <repo> --state all --json number,title,author,createdAt,mergedAt --limit 15
2. gh issue list --repo <repo> --state open --json number,title,labels,createdAt --limit 10

重点关注:
- 正在开发的新功能
- 架构变更
- 我们可以借鉴的集成模式
- 可能也影响我们的安全修复

跳过常规的依赖升级和 CI 修复。如果没有值得注意的内容,则回复 [SILENT]。
如果有发现,按仓库组织,并对每个项目进行简要分析。" \
  --skill competitive-pr-scout \
  --name "竞品侦察" \
  --deliver telegram

AI 新闻摘要

每周 AI/ML 发展综述。

触发器: 定时(每周)

bash
hermes cron create "0 9 * * 1" \
  "生成一份涵盖过去 7 天的每周 AI 新闻摘要:

1. 在网上搜索主要的 AI 公告、模型发布和研究突破
2. 在 GitHub 上搜索热门的 ML 仓库
3. 在 arXiv 上检查关于语言模型和代理的高引用论文

结构:
## 头条新闻(3-5 条主要故事)
## 值得注意的论文(2-3 篇论文,每篇一句话摘要)
## 开源项目(有趣的新仓库或重大发布)
## 行业动态(融资、收购、发布)

每个项目保持 1-2 句话。包含链接。总字数不超过 600 字。" \
  --name "每周 AI 摘要" \
  --deliver telegram

论文摘要与笔记

每日 arXiv 扫描,将摘要保存到你的笔记系统中。

触发器: 定时(每日)

bash
hermes cron create "0 8 * * *" \
  "在 arXiv 上搜索过去一天中关于“语言模型推理”或“工具使用代理”的最有趣的 3 篇论文。对于每篇论文,创建一个 Obsidian 笔记,包含标题、作者、摘要总结、关键贡献以及与 Hermes Agent 开发的潜在相关性。" \
  --skill arxiv --skill obsidian \
  --name "论文摘要" \
  --deliver local

GitHub 事件自动化

Issue 自动标记

自动标记并回复新 issue。

触发器: GitHub webhook

bash
hermes webhook subscribe github-issues \
  --events "issues" \
  --prompt "收到新的 GitHub issue:
仓库:{repository.full_name}
Issue #{issue.number}:{issue.title}
作者:{issue.user.login}
操作:{action}
正文:{issue.body}
标签:{issue.labels}

如果这是一个新 issue(action=opened):
1. 仔细阅读 issue 标题和正文
2. 建议合适的标签(bug、feature、docs、security、question)
3. 如果是 bug 报告,尝试从描述中识别受影响的组件
4. 发布一条有帮助的初始回复,确认收到 issue

如果这是标签或分配变更,则回复 [SILENT]。" \
  --deliver github_comment

CI 失败分析

分析 CI 失败并在 PR 上发布诊断信息。

触发器: GitHub webhook

yaml
## config.yaml route
platforms:
  webhook:
    enabled: true
    extra:
      routes:
        ci-failure:
          events: ["check_run"]
          secret: "ci-secret"
          prompt: |
            CI 检查失败:
            仓库:{repository.full_name}
            检查:{check_run.name}
            状态:{check_run.conclusion}
            PR:#{check_run.pull_requests.0.number}
            详情 URL:{check_run.details_url}

            如果结论是 "failure":
            1. 如果可访问,从详情 URL 获取日志
            2. 识别失败的可能原因
            3. 建议修复方案
            如果结论是 "success",则回复 [SILENT]。
          deliver: "github_comment"
          deliver_extra:
            repo: "{repository.full_name}"
            pr_number: "{check_run.pull_requests.0.number}"

跨仓库自动移植变更

当一个 PR 在一个仓库中合并时,自动将等效变更移植到另一个仓库。

触发器: GitHub webhook

bash
hermes webhook subscribe auto-port \
  --events "pull_request" \
  --prompt "PR 在源仓库中合并:
仓库:{repository.full_name}
PR #{pull_request.number}:{pull_request.title}
作者:{pull_request.user.login}
操作:{action}
合并提交:{pull_request.merge_commit_sha}

如果 action 是 'closed' 且 pull_request.merged 为 true:
1. 获取差异:curl -sL {pull_request.diff_url}
2. 分析变更内容
3. 确定此变更是否需要移植到等效的 Go SDK
4. 如果需要,创建一个分支,应用等效变更,并在目标仓库上打开一个 PR
5. 在新 PR 描述中引用原始 PR

如果 action 不是 'closed' 或未合并,则回复 [SILENT]。" \
  --skill github-pr-workflow \
  --deliver log

业务运营

Stripe 支付监控

跟踪支付事件并获取失败摘要。

触发器: API 调用(webhook)

bash
hermes webhook subscribe stripe-payments \
  --events "payment_intent.succeeded,payment_intent.payment_failed,charge.dispute.created" \
  --prompt "收到 Stripe 事件:
事件类型:{type}
金额:{data.object.amount} 分({data.object.currency})
客户:{data.object.customer}
状态:{data.object.status}

对于 payment_intent.payment_failed:
- 从 {data.object.last_payment_error} 识别失败原因
- 建议这是临时问题(重试)还是永久问题(联系客户)

对于 charge.dispute.created:
- 标记为紧急
- 总结争议详情

对于 payment_intent.succeeded:
- 仅简短确认

保持回复简洁,适合运营频道。" \
  --deliver slack

每日收入摘要

每天早上整理关键业务指标。

触发器: 定时(每日)

bash
hermes cron create "0 8 * * *" \
  "生成一份早间业务指标摘要。

在网上搜索:
1. 当前比特币和以太坊价格
2. 标普 500 状态(盘前或前收盘)
3. 过去 12 小时内任何重大的科技/AI 行业新闻

格式化为简短的早间简报,最多 3-4 个要点。
以清晰、可扫描的消息形式交付。" \
  --name "早间简报" \
  --deliver telegram

多技能工作流

安全审计管道

结合多种技能进行全面的每周安全审查。

触发器: 定时(每周)

bash
hermes cron create "0 3 * * 0" \
  "对 hermes-agent 代码库运行全面的安全审计。

1. 检查依赖漏洞(pip audit、npm audit)
2. 在代码库中搜索常见的安全反模式:
   - 硬编码的密钥或 API 密钥
   - SQL 注入向量(查询中的字符串格式化)
   - 路径遍历风险(用户输入未经验证的文件路径)
   - 不安全的反序列化(pickle.loads、yaml.load 未使用 SafeLoader)
3. 审查最近的提交(过去 7 天)中与安全相关的变更
4. 检查是否有新增的环境变量未记录

编写一份安全报告,按严重程度(严重、高、中、低)分类发现。
如果未发现任何问题,则报告健康状况良好。" \
  --skill codebase-security-audit \
  --name "每周安全审计" \
  --deliver telegram

内容管道

按计划研究、起草和准备内容。

触发器: 定时(每周)

bash
hermes cron create "0 10 * * 3" \
  "研究并起草一篇关于 AI 代理领域热门话题的技术博客文章大纲。

1. 在网上搜索本周讨论最多的 AI 代理话题
2. 选择与开源 AI 代理最相关且最有趣的一个
3. 创建大纲,包含:
   - 钩子/引言角度
   - 3-4 个关键部分
   - 适合开发者的技术深度
   - 结论,包含可操作的建议
4. 将大纲保存到 ~/drafts/blog-$(date +%Y%m%d).md

大纲保持在约 300 字。这是一个起点,不是最终文章。" \
  --name "博客大纲" \
  --deliver local

快速参考

Cron 调度语法

表达式含义
every 30m每 30 分钟
every 2h每 2 小时
0 2 * * *每天凌晨 2:00
0 9 * * 1每周一上午 9:00
0 9 * * 1-5工作日(周一至周五)上午 9:00
0 3 * * 0每周日凌晨 3:00
0 */6 * * *每 6 小时

交付目标

目标标志说明
同一聊天--deliver origin默认 — 交付到创建任务的位置
本地文件--deliver local保存输出,不发送通知
Telegram--deliver telegram主频道,或 telegram:CHAT_ID 指定
Discord--deliver discord主频道,或 discord:CHANNEL_ID
Slack--deliver slack主频道
短信--deliver sms:+15551234567直接发送到手机号码
特定话题--deliver telegram:-100123:456Telegram 论坛话题

Webhook 模板变量

变量描述
{pull_request.title}PR 标题
{issue.number}Issue 编号
{repository.full_name}owner/repo
{action}事件操作(opened、closed 等)
{__raw__}完整 JSON 负载(截断至 4000 字符)
{sender.login}触发事件的 GitHub 用户

[SILENT] 模式

当 cron 任务的响应包含 [SILENT] 时,交付被抑制。使用此模式避免在安静运行时产生通知垃圾:

如果没有值得注意的事情发生,则回复 [SILENT]。

这意味着只有当代理有内容要报告时,你才会收到通知。



分享: