08 · 自動化邊界
使用 Hermes cron、background、delegation、hooks 和訊息投遞前,先建立許可權、日誌、失敗處理和人工確認邊界。
Hermes 能做自動化,但自動化不是把所有事情都交給 agent。真正可靠的自動化一定有邊界、日誌、失敗處理、人工確認點、回復路徑——這五件沒有的自動化,不是節省人力,是放大事故面。
官方資料:Cron、Delegation、Hooks、Persistent Goals、Messaging Gateway、Security、Checkpoints & Rollback。
先給結論:自動化的四個預設——預設只讀、預設不釋出、預設不刪除、預設不外發敏感內容。所有寫操作限定範圍,所有高風險動作人工確認。基礎失敗時,先停自動化再看程式碼,不要讓定時任務在錯誤狀態裡反覆跑。
自動化能力層
Hermes 中和自動化相關的 6 類能力——任意一項啟用都讓風險面更大一層:
Gateway
後臺程序,把訊息平臺和 cron scheduler 接進 Hermes——它是遠端能力的入口。
Background session
把長任務放到獨立 session,完成後回報結果——主聊天保持響應。
Cron
週期性或一次性執行任務,支援自然語言(例如:每天 9 點)和標準 cron 表示式。
Delegation
生成隔離上下文的子 agent(child agents),用於並行研究、審查或拆分任務。
Hooks
在生命週期事件(啟動 / 命令前後 / session 結束)執行自定義程式碼、webhook 或 shell 指令碼。
Persistent Goals
持久目標:設一個長期目標後,agent 跨多輪持續推進——Hermes 自創的 Ralph loop。
這些能力疊加後,Hermes 可以主動執行任務、呼叫工具、發訊息、修改檔案,甚至連線遠端環境。風險也隨之指數上升——任意兩項組合(如 cron + hooks)的故障傳導路徑就比單一能力複雜數倍。
適合自動化
適合 Hermes 自動化:
- 每日摘要。
- 定時檢查服務狀態。
- 收集公開資訊並生成報告。
- 跑只讀診斷。
- 對固定目錄做低風險整理。
- 自動提醒和待辦彙總。
- 後臺跑測試並回報結果。
這些任務有共同點:輸入穩定、失敗可接受、結果可檢查、動作可重複。
不適合直接放權
不適合直接放權:
- 刪除資料。
- 釋出生產。
- 修改賬單或許可權。
- 操作真實客戶資料。
- 自動提交或合併高風險程式碼。
- 在未隔離環境執行未知指令碼。
- 傳送無法撤回的外部訊息。
這些任務可以讓 Hermes 做計劃、檢查、草稿和預演,但執行前必須人工確認。
Cron 邊界
Cron 可以建立一次性或週期任務,可以 pause、resume、edit、run、remove,可以繫結一個或多個 skills,也可以把結果投遞到 origin chat、檔案或平臺目標。官方還提供 no-agent mode,讓指令碼按計劃執行並把 stdout 原樣投遞。
設計 cron 前先回答:
- 失敗後誰知道?
- 日誌在哪裡?
- 任務是否冪等?
- 是否會重複傳送訊息?
- 是否可能修改檔案或外部系統?
- 憑據是否最小許可權?
- 執行目錄是否明確?
- 會不會遞迴建立更多 cron?
官方限制 cron-run sessions 遞迴建立 cron jobs,這是防 runaway scheduling loop 的必要護欄。你自己的任務也要有同類邊界。
Workdir 與專案規則
Cron 預設不一定在你的專案目錄裡執行。設定 workdir 後,專案裡的 AGENTS.md、CLAUDE.md、.cursorrules 才會按規則注入,terminal/file/code execution 也會以該目錄作為工作目錄。
這意味著:專案相關 cron 不要只寫“每天檢查專案”。要寫清楚絕對路徑、規則檔案、輸出位置和失敗通知。
Delegation 邊界
Delegation 會生成 child agents。官方強調子 agent 沒有父對話歷史,只知道 goal 和 context 欄位。父 agent 必須把任務需要的資訊完整傳入。
適合:
- 多個獨立資料收集。
- 多模組只讀審查。
- 並行測試/調查,且寫入範圍互不衝突。
- 複雜任務的隔離分析。
不適合:
- 多個子任務寫同一個檔案。
- 修改同一模組。
- 需要強共享上下文的複雜決策。
- 生產釋出。
預設併發和 depth 限制要謹慎調整。每多一層 delegation,成本、併發寫入風險和排障複雜度都會增長。
Hooks 邊界
Hermes 有 gateway hooks、plugin hooks 和 shell hooks。它們適合:
- 記錄 slash command 使用。
- 長任務提醒。
- session start/reset 通知。
- webhook 投遞。
- 自動格式化或阻斷危險動作。
Hooks 是確定性自動化,不是 LLM 推理。它們應該短、小、可觀測。不要在 hook 裡塞大型業務邏輯,也不要讓 hook 悄悄吞掉失敗。
最小安全基線
默认只读
默认不发布
默认不删除
默认不外发敏感内容
所有写操作限定范围
所有高风险操作人工确认
所有定时任务有日志
所有外部 token 最小权限
所有消息平台有 allowlist
所有后台任务有停止方式
所有自动化有失败通知沒有邊界的自動化,不是效率,是持續執行的事故源。
系列收束 · Hermes 自我改進的邊界 = 這條遞進順序
讀完這一篇,你應該能把 Hermes 的使用順序串起來——這就是「self-improving agent runtime」的正確進化路徑:
flowchart TB
A1[1 理解 Hermes 是什麼<br/>區分聊天 CLI / IDE 助理 / 訊息 Bot / Agent Runtime]
A2[2 跑通穩定閉環<br/>install + provider + chat + session]
A3[3 配好 provider 和目錄<br/>~/.hermes 檔案分工 + Provider 策略]
A4[4 收斂工具和執行環境<br/>toolset 和 backend 解耦]
A5[5 治理記憶<br/>MEMORY.md / USER.md / 不當日誌寫]
A6[6 沉澱 skills<br/>漸進載入 + Curator 治理]
A7[7 接入訊息平臺<br/>Gateway + allowlist + 三類場景區分]
A8[8 自動化<br/>cron / delegation / hooks / goals 守邊界]
A1 --> A2 --> A3 --> A4 --> A5 --> A6 --> A7 --> A8
A8 -.->|"反過來檢查"| A2
跳過任何一步都會在後面付雙倍代價——基礎不穩就開擴充套件,等於把每一層的不確定性傳給下一層;而且新層暴露的故障並不會自己定位回根因,最後只能整體重啟從頭排查。
官方資料
- Cron Jobs(自然語言 / cron 表示式 / no-agent mode)
- Delegation(子 agent / 併發 / depth 限制)
- Hooks(生命週期鉤子 / webhook 投遞)
- Persistent Goals(Ralph loop 實現)
- Security(命令審批 / 容器隔離 / 生產部署)
- Checkpoints & Rollback(破壞性操作快照與回復)