可直接複製貼上的常見自動化模式藍圖。每個藍圖使用 Hermes 內建的 cron 排程器作為時間觸發器,以及 Webhook 平台作為事件驅動觸發器。
每個藍圖都適用於任何模型——不鎖定特定供應商。
如需使用表單而非 cron 語法的參數化藍圖,請見 自動化藍圖目錄。
TIP — 三種觸發類型
觸發方式 操作方式 工具 排程 按固定週期執行(每小時、每夜、每週) cronjob工具或/cron斜線指令GitHub 事件 在 PR 開啟、推送、Issue、CI 結果時觸發 Webhook 平台( hermes webhook subscribe)API 呼叫 外部服務 POST JSON 到你的端點 Webhook 平台(config.yaml 路由或 hermes webhook subscribe)三者都支援遞送到 Telegram、Discord、Slack、SMS、email、GitHub 評論或本地檔案。
開發工作流
每夜待辦清單分類
每晚自動標記、排定優先順序並總結新 Issue。將摘要遞送到你的團隊頻道。
**觸發方式:**排程(每夜)
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 程式碼審查
在每個 Pull Request 開啟時自動審查。在 PR 上直接發佈審查評論。
**觸發方式:**GitHub webhook
選項 A — 動態訂閱(CLI):
hermes webhook subscribe github-pr-review \
--events "pull_request" \
--prompt "審查這個 Pull Request:
Repository: {repository.full_name}
PR #{pull_request.number}: {pull_request.title}
Author: {pull_request.user.login}
Action: {action}
Diff URL: {pull_request.diff_url}
用以下指令取得 diff:curl -sL {pull_request.diff_url}
審查項目:
- 安全問題(注入、認證繞過、程式碼中的機密)
- 效能問題(N+1 查詢、無限迴圈、記憶體洩漏)
- 程式碼品質(命名、重複、錯誤處理)
- 新行為缺少測試
發佈簡潔的審查。如果 PR 是微不足道的文件/錯字修改,簡短說明即可。" \
--skill github-code-review \
--deliver github_comment
選項 B — 靜態路由(config.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: {repository.full_name}
Author: {pull_request.user.login}
Diff 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 變更。
**觸發方式:**排程(每週)
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,檢查是否修改了:
- 工具 schema(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
依賴安全性稽核
每日掃描專案依賴中的已知漏洞。
**觸發方式:**排程(每日)
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 管線在部署完成時 POST 到 webhook。
**觸發方式:**API 呼叫(webhook)
hermes webhook subscribe deploy-verify \
--events "deployment" \
--prompt "一次部署剛完成:
Service: {service}
Environment: {environment}
Version: {version}
Deployed by: {deployer}
執行以下驗證步驟:
1. 檢查服務是否回應:curl -s -o /dev/null -w '%{http_code}' {health_url}
2. 在最近的日誌中搜尋錯誤:檢查部署負載中的錯誤指標
3. 驗證版本是否正確:curl -s {health_url}/version
回報:部署狀態(healthy/degraded/failed)、回應時間、發現的任何錯誤。
如果狀態健康,簡短回報。如果降級或失敗,提供詳細的診斷。" \
--deliver telegram
你的 CI/CD 管線觸發它:
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)
hermes webhook subscribe alert-triage \
--prompt "收到監控告警:
Alert: {alert.name}
Severity: {alert.severity}
Service: {alert.service}
Message: {alert.message}
Timestamp: {alert.timestamp}
調查:
1. 在網路上搜尋此錯誤模式的已知問題
2. 檢查是否與最近的部署或設定變更相關
3. 起草分類摘要:
- 可能的根本原因
- 建議的初步處理步驟
- 升級建議(P1-P4)
簡潔一些。這會發送到值班頻道。" \
--deliver slack
正常運作時間監控
每 30 分鐘檢查端點。只在服務宕機時通知。
**觸發方式:**排程(每 30 分鐘)
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")
hermes cron create "every 30m" \
"如果腳本回報 OUTAGE DETECTED,總結哪些服務宕機並建議可能原因。如果回報 NO_ISSUES,回覆 [SILENT]。" \
--script ~/.hermes/scripts/check-uptime.py \
--name "正常運作時間監控" \
--deliver telegram
研究與情報
競爭對手儲存庫偵察
監控競爭對手的儲存庫,關注有趣的 PR、功能和架構決策。
**觸發方式:**排程(每日)
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 發展彙整。
**觸發方式:**排程(每週)
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 掃描,將摘要儲存到你的筆記系統。
**觸發方式:**排程(每日)
hermes cron create "0 8 * * *" \
"搜尋 arXiv 上過去一天中關於「language model reasoning」或「tool-use agents」的 3 篇最有趣論文。為每篇論文建立一份 Obsidian 筆記,包含標題、作者、摘要、主要貢獻,以及對 Hermes Agent 開發的潛在相關性。" \
--skill arxiv --skill obsidian \
--name "論文摘要" \
--deliver local
GitHub 事件自動化
Issue 自動標記
自動標記並回應新 Issue。
**觸發方式:**GitHub webhook
hermes webhook subscribe github-issues \
--events "issues" \
--prompt "收到新的 GitHub Issue:
Repository: {repository.full_name}
Issue #{issue.number}: {issue.title}
Author: {issue.user.login}
Action: {action}
Body: {issue.body}
Labels: {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
# config.yaml 路由
platforms:
webhook:
enabled: true
extra:
routes:
ci-failure:
events: ["check_run"]
secret: "ci-secret"
prompt: |
CI 檢查失敗:
Repository: {repository.full_name}
Check: {check_run.name}
Status: {check_run.conclusion}
PR: #{check_run.pull_requests.0.number}
Details URL: {check_run.details_url}
如果 conclusion 為 "failure":
1. 如果可存取,從 details URL 取得日誌
2. 識別可能的失敗原因
3. 建議修復方式
如果 conclusion 為 "success",回覆 [SILENT]。
deliver: "github_comment"
deliver_extra:
repo: "{repository.full_name}"
pr_number: "{check_run.pull_requests.0.number}"
跨儲存庫自動移植變更
當某個儲存庫中的 PR 被合併時,自動將等效變更移植到另一個儲存庫。
**觸發方式:**GitHub webhook
hermes webhook subscribe auto-port \
--events "pull_request" \
--prompt "來源儲存庫中的 PR 已合併:
Repository: {repository.full_name}
PR #{pull_request.number}: {pull_request.title}
Author: {pull_request.user.login}
Action: {action}
Merge commit: {pull_request.merge_commit_sha}
如果 action 為 'closed' 且 pull_request.merged 為 true:
1. 取得 diff: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)
hermes webhook subscribe stripe-payments \
--events "payment_intent.succeeded,payment_intent.payment_failed,charge.dispute.created" \
--prompt "收到 Stripe 事件:
Event type: {type}
Amount: {data.object.amount} cents ({data.object.currency})
Customer: {data.object.customer}
Status: {data.object.status}
對於 payment_intent.payment_failed:
- 從 {data.object.last_payment_error} 識別失敗原因
- 建議這是暫時性問題(重試)還是永久性問題(聯繫客戶)
對於 charge.dispute.created:
- 標記為緊急
- 總結爭議詳情
對於 payment_intent.succeeded:
- 僅簡短確認
在營運頻道中保持回覆簡潔。" \
--deliver slack
每日營收摘要
每天早上彙整關鍵業務指標。
**觸發方式:**排程(每日)
hermes cron create "0 8 * * *" \
"產生每日早上業務指標摘要。
搜尋網路上:
1. 目前的比特幣和以太幣價格
2. S&P 500 狀態(盤前或前日收盤)
3. 過去 12 小時內的重大科技/AI 產業新聞
格式化為簡潔的晨間簡報,最多 3-4 個要點。
遞送為簡潔、可快速掃覽的訊息。" \
--name "晨間簡報" \
--deliver telegram
多技能工作流
安全稽核管線
結合多個技能進行全面性的每週安全審查。
**觸發方式:**排程(每週)
hermes cron create "0 3 * * 0" \
"對 hermes-agent 程式碼庫執行全面安全稽核。
1. 檢查依賴漏洞(pip audit、npm audit)
2. 在程式碼庫中搜尋常見的安全反模式:
- 硬編碼的機密或 API 金鑰
- SQL 注入向量(查詢中的字串格式化)
- 路徑遍歷風險(未經驗證的使用者輸入用於檔案路徑)
- 不安全的反序列化(pickle.loads、yaml.load 未使用 SafeLoader)
3. 審查最近的提交(過去 7 天)是否有安全相關的變更
4. 檢查是否有新增的環境變數未被記錄
撰寫一份安全報告,按嚴重程度分類(Critical、High、Medium、Low)。
如果沒有發現,回報健康狀態良好。" \
--skill codebase-security-audit \
--name "每週安全稽核" \
--deliver telegram
內容管線
按排程進行研究、起稿和準備內容。
**觸發方式:**排程(每週)
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 | 主頻道 |
| SMS | --deliver sms:+15551234567 | 直接發送到電話號碼 |
| 特定討論串 | --deliver telegram:-100123:456 | Telegram 論壇主題 |
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]。
這表示你只會在代理有事要報告時才收到通知。