自動化系統

十個 Hermes 工作流程,將聊天機器人變成 24/7 助理

十個相互連結的操作模式:Mission Control、Notion 觸發、排程、目標、子代理、Telegram、Kanban、技能、Webhook 與專業代理。

文章主視覺圖版十個 Hermes 工作流程,將聊天機器人變成 24/7 助理hx-article-13-hermes-hacks正在載入視覺預覽…
以原始尺寸檢視

十個 Hermes 工作流程,將聊天機器人變成 24/7 助理

Mission Control、Notion 觸發、排程、目標、子代理、Telegram 工作區、Kanban、可重複使用技能、Webhook 與專業代理。

Hermes 通常以聊天應用程式的形式開始。使用者發送提示詞、等待回應,然後稍後再重複這個過程。當工作可以從多個來源進入、經過可見的階段進展,並且在不需要持續提示的情況下繼續進行時,這個系統的價值會大幅提升。

以下十個模式構成了一個實用的作業系統。它們不需要一次全部安裝。每個模式解決不同的管理問題,而最強大的設定是在遇到實際瓶頸時才逐步引入它們。

1. 建立 Mission Control 儀表板

儀表板提供了代理活動、任務、排程與結果的單一檢視。沒有它,工作就會散落在 Telegram 訊息、Notion 頁面、終端機日誌與生成的檔案中。

Mission Control 應回答基本問題:什麼正在執行?什麼在等待核准?什麼失敗了?哪個代理擁有這項任務?最終的成果在哪裡?

儀表板不需要執行每一個動作。它的主要任務是可見性與控制。從狀態與連結開始,然後為重試、暫停或核准等安全操作加入按鈕。

2. 使用 Notion 變更作為工作流程觸發

Notion 看板可以作為編輯或生產管線。將一個影片點子移動到「準備簡報」的狀態,可以觸發 Hermes 收集研究資料並建立拍攝簡報。

觸發應傳遞一個穩定的頁面 ID 與一組定義的欄位。Hermes 接著可以讀取已核准的概念、受眾與參考資料,產出簡報,並將結果附加到同一個 Notion 項目上。

這比要求代理重複掃描整個工作區更可靠。狀態變更本身就表明了應該發生什麼事。

3. 使用 Cron 任務進行排程情報

Cron 任務最適合可預測的重複性工作:晨間研究、每週分析、競爭者更新或專案摘要。

排程應產出有用的成果,即使使用者不在場。它也應避免製造空洞的雜訊。定義什麼才算有意義的變化,以及報告應歸檔到哪裡。

當排程情報饋送到 Mission Control 或專案看板,而不是消失在一般的聊天室中時,它的價值會更高。

4. 將成果表達為目標

Slash 目標告訴 Hermes 期望的成果,並允許它規劃多個步驟。一個好的目標包含受眾、限制條件、來源材料與完成測試。

舉例來說,「建立一份拍攝簡報」是不完整的。一個更好的目標是要求一份基於連結研究的簡報,包含鉤子、大綱、證據、視覺筆記與未解決的問題,並儲存到相關的專案卡片中。

目標提供了方向;它們並不取代審查的必要性。Hermes 應展示其計劃,並在昂貴或公開的動作之前請求核准。

5. 使用子代理作為研究與執行團隊

子代理允許主要代理委派有範圍限制的任務。一個子代理可以檢查競爭者內容,另一個可以尋找佐證資料,另一個可以準備視覺參考資料。

當任務彼此獨立時,平行工作非常有用。每個任務應定義輸出格式,以便主要代理可以組合結果。如果所有子代理都回傳非結構化的散文,協調成本可能會超過節省的時間。

主要代理仍然負責調解衝突與檢查來源品質。

6. 將 Telegram 主題視為工作區

Telegram 主題可以在保持行動存取能力的同時分隔專案。內容研究的主題應對應到與營運或個人規劃不同的 Hermes 工作階段。

這使得對話背景更清晰,也更容易回到某個專案。清楚命名很重要。一個主題應代表一個持久的工作流,而不是一個暫時的問題。

主題是控制介面,不是永久的儲存位置。最終檔案與決策也應保存在專案系統中。

7. 使用 Kanban 管理代理工作

Kanban 看板使任務狀態視覺化。典型的欄位包括待辦、準備就緒、進行中、等待核准、受阻與完成。

Hermes 可以建立與移動卡片,但轉換規則應明確。任務不應僅僅因為代理產出了文字就移動到完成。完成可能需要一個檔案、一次成功的測試或人員核准。

等待核准的狀態特別有價值。它將自主準備與需要授權的動作分開。

8. 將標準程序打包為技能

技能是可重複使用的標準操作程序。拍攝簡報技能可以定義來源、結構、篇幅、事實查核要求與傳送目的地。社群貼文技能可以定義語氣、平台限制與核准規則。

技能減少了提示詞的重複,並使結果更加一致。將它們儲存在版本控制中,並在實際失敗後進行修訂。從未經過測試的技能只是草稿。

9. 使用 Webhook 建立事件驅動的代理

Webhook 在外部事件發生時啟動工作。Notion 更新、新客戶、表單提交或上傳完成都可以立即通知 Hermes。

事件驅動的工作流程通常比排程更有效率。它們也攜帶了關於特定事件的資料,使 Hermes 能夠針對一個已知的記錄採取行動,而不是搜尋什麼發生了變化。

Webhook 必須經過認證。不要接受來自公開網際網路的未簽署請求。驗證事件類型並拒絕未預期的資料。

10. 按工作類型建立專業代理

專業代理,例如研究員、內容策略師或營運助理,可以使用不同的模型、工具與權限。這降低了單一通用代理累積每一組憑證與矛盾指令的風險。

專業代理應有定義的工作範圍與輸出合約。它不應變成一個沒有操作差異的個性變體。主要協調者決定哪個專家接收任務,並將結果記錄在共用系統中。

十個部分如何形成一個工作流程

這些模式在相互連接時會變得更加強大。Notion 狀態變更發送 Webhook。Mission Control 建立任務。Hermes 啟動一個目標並將研究委派給子代理。結果透過拍攝簡報技能產出,放到 Kanban 卡片上,並發送到相關的 Telegram 主題以供核准。稍後,一個 cron 任務檢查已核准的內容是否已進入下一階段。

每個步驟仍然可見,而人類保留對發佈的權力。

分層引入系統

建議的順序是:

  1. 建立 Mission Control 或一個簡單的中央看板。
  2. 加入一個可重複使用的技能。
  3. 組織 Telegram 主題或工作階段。
  4. 加入一個 cron 任務。
  5. 引入一個目標與一個子代理。
  6. 在手動工作流程穩定後加入 Webhook。
  7. 當權限或指令需要隔離時,拆分專業代理。

目標不是最大化自動化,而是建立一個工作可以預測地進入、可見地進展,並以可驗證的成果結束的系統。這就是將 Hermes 從聊天應用程式變成 24/7 助理的關鍵。

動手實作:接收一個已驗證的外部事件

**成果:**外部系統可以向 Hermes 傳送一個已簽章的研究請求;Hermes 接受事件並把代理程式結果記錄在本機。

**時間:**20–30 分鐘。

**風險:**中。Webhook 會啟動由模型驅動的代理程式,並開啟 HTTP 端點;第一次本機測試不要轉送或公開 8644 連接埠。

開始之前

Hermes 內建 Webhook 介接器,但 Notion、自建 Mission Control 儀表板及其狀態變更自動化,不是 Hermes 內建工作流程。它們必須傳送已簽章的請求,或另行設定連接器。

實作期間不要變更其他 Hermes 設定。先建立 ~/.hermes/.env~/.hermes/config.yaml 的私密備份。以下命令不會覆寫先前的實作備份; 若備份目錄已存在,請先檢查或移動它再繼續。

hermes doctor
openssl version

(
  set +x
  set -euo pipefail
  umask 077
  HERMES_HOME_DIR="$HOME/.hermes"
  BACKUP_DIR="$HERMES_HOME_DIR/webhook-lab-backup"
  test ! -e "$BACKUP_DIR" || {
    printf '%s\n' '備份已存在;繼續前請先檢查或移動它。' >&2
    exit 1
  }
  mkdir -p "$BACKUP_DIR"

  if [[ -f "$HERMES_HOME_DIR/.env" ]]; then
    cp -p "$HERMES_HOME_DIR/.env" "$BACKUP_DIR/env.original"
  else
    touch "$BACKUP_DIR/env.was-absent"
  fi

  if [[ -f "$HERMES_HOME_DIR/config.yaml" ]]; then
    cp -p "$HERMES_HOME_DIR/config.yaml" "$BACKUP_DIR/config.original.yaml"
  else
    touch "$BACKUP_DIR/config.was-absent"
  fi
)

現在於 ~/.hermes/.env 設定隨機產生的 256 位元測試密鑰,不要在終端機 顯示或提交這個值。以下命令區塊會拒絕加入重複設定,並把檔案權限限制為 目前使用者可讀寫。

(
  set +x
  set -euo pipefail
  umask 077
  ENV_FILE="$HOME/.hermes/.env"
  mkdir -p "$HOME/.hermes"
  touch "$ENV_FILE"
  chmod 600 "$ENV_FILE"

  if grep -qE '^WEBHOOK_(ENABLED|PORT|SECRET)=' "$ENV_FILE"; then
    printf '%s\n' 'Webhook 設定已存在;請先人工檢查,不要加入重複值。' >&2
    exit 1
  fi

  WEBHOOK_SECRET="$(openssl rand -hex 32)"
  printf '%s\n' \
    'WEBHOOK_ENABLED=true' \
    'WEBHOOK_PORT=8644' \
    "WEBHOOK_SECRET=$WEBHOOK_SECRET" >> "$ENV_FILE"
  unset WEBHOOK_SECRET
)

動手完成

使用文字編輯器開啟或建立 ~/.hermes/config.yaml,並將下列鍵值合併 進去;不要覆蓋整份檔案。如果 platformsplatforms.webhook 已存在, 只在相同縮排層級加入缺少的內層鍵值。明確設定 host: "127.0.0.1", 讓測試端點只綁定目前這台電腦。

platforms:
  webhook:
    enabled: true
    extra:
      host: "127.0.0.1"
      port: 8644
      routes:
        research-request:
          events: ["research.requested"]
          prompt: |
            針對以下主題建立精簡研究簡報:{topic}
            讀者:{audience}
            包含三個來源 URL、區分事實與不確定事項,
            且不要發佈或修改任何外部系統。
          deliver: "log"

儲存檔案後再次執行 hermes doctor。如果它回報 YAML 或 Webhook 設定錯誤, 請從備份目錄還原 config.original.yaml;若 config.was-absent 存在,則只 移除本實作建立的設定檔。然後停止,不要猜測縮排方式。

在第一個終端機啟動閘道器:

hermes gateway

閱讀啟動輸出;只有在 Webhook 監聽位址是 127.0.0.1:8644 時才繼續。 如果綁定 0.0.0.0、區域網路位址或公開位址,立即停止。

驗證成功

在第二個終端機檢查健康狀態,並傳送一個已簽章的本機事件。HMAC 是使用共用密鑰驗證訊息完整性與來源的雜湊訊息驗證碼。從受保護的 ~/.hermes/.env 讀取密鑰到僅供目前命令區塊使用的變數,不要把它列印到終端機。

(
  set +x
  set -euo pipefail

  curl http://localhost:8644/health

  SECRET="$(sed -n 's/^WEBHOOK_SECRET=//p' "$HOME/.hermes/.env" | tail -n 1)"
  test -n "$SECRET"
  BODY='{"event_type":"research.requested","topic":"Hermes Cron 安全性","audience":"新手操作者"}'
  TIMESTAMP="$(date +%s)"
  SIG=$(printf '%s.%s' "$TIMESTAMP" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | awk '{print $2}')

  curl -sS -X POST http://localhost:8644/webhooks/research-request \
    -H "Content-Type: application/json" \
    -H "X-Webhook-Timestamp: $TIMESTAMP" \
    -H "X-Webhook-Signature-V2: $SIG" \
    -d "$BODY"

  unset SECRET SIG BODY TIMESTAMP
)

成功條件是:/health 回傳 status: okPOST 回傳 research-request 已接受,而且閘道器紀錄最後收到完整簡報。

將電腦還原為實作前狀態。在第一個終端機按 Ctrl+C,等待閘道器程序 結束。在第二個終端機還原兩份備份;若某檔案在實作前不存在,只移除本實作 建立的那一份檔案。

(
  set -euo pipefail
  HERMES_HOME_DIR="$HOME/.hermes"
  BACKUP_DIR="$HERMES_HOME_DIR/webhook-lab-backup"
  test -d "$BACKUP_DIR"

  if [[ -f "$BACKUP_DIR/env.was-absent" ]]; then
    rm -f "$HERMES_HOME_DIR/.env"
  else
    cp -p "$BACKUP_DIR/env.original" "$HERMES_HOME_DIR/.env"
  fi

  if [[ -f "$BACKUP_DIR/config.was-absent" ]]; then
    rm -f "$HERMES_HOME_DIR/config.yaml"
  else
    cp -p "$BACKUP_DIR/config.original.yaml" "$HERMES_HOME_DIR/config.yaml"
  fi
)

if curl -fsS --max-time 2 http://127.0.0.1:8644/health; then
  printf '%s\n' '8644 連接埠仍開啟;完成前請先停止閘道器。' >&2
  exit 1
else
  printf '%s\n' '安全結束狀態:8644 連接埠已關閉。'
fi

還原後的檔案已移除測試路由與密鑰。執行 hermes doctor,確認一般 Hermes 設定仍可運作;之後才移除這個確切的私密備份目錄,因為它可能含有真實憑證 的副本:

hermes doctor
BACKUP_DIR="$HOME/.hermes/webhook-lab-backup"
[[ "$BACKUP_DIR" == "$HOME/.hermes/webhook-lab-backup" ]]
rm -rf -- "$BACKUP_DIR"

發生問題時

  • 401 通常表示密鑰不一致、缺少 V2 簽章標頭,或本機時鐘讓時間戳記超出伺服器允許的正負 300 秒範圍。
  • 404 表示 URL 的路由名稱不是 research-request
  • 如果健康檢查失敗,確認閘道器正在執行,而且 8644 連接埠沒有被占用。
  • 如果事件已接受卻沒有結果,檢查 ~/.hermes/logs/gateway.log 的模型提供者或工具錯誤。
  • Ctrl+C 後若 8644 仍開啟,執行 hermes gateway status、停止正在運作的閘道器,再重做關閉連接埠檢查。
  • 還原失敗時,停止操作並從 ~/.hermes/webhook-lab-backup 找回兩份原始檔案;不要憑記憶重建設定。
  • 還原後的 hermes doctor 檢查成功前,不要刪除備份目錄。

安全、隱私與成本

不要在隔離的本機測試以外使用 INSECURE_NO_AUTH。保持 .env 權限為 600,不要顯示或提交密鑰;若密鑰曾出現在終端輸出或版本控制中,請立即 產生新值。即使簽章已通過,也要把每一個酬載欄位視為不受信任;外部標題 與描述可能含提示詞注入。本實作必須綁定 127.0.0.1、在結束時停止 閘道器、還原先前的設定與密鑰狀態,並確認 8644 連接埠已關閉。公開路由 還需要暴露面審查與速率限制,不在本實作範圍內。每個被接受的模型型事件 都可能產生模型與工具費用。

官方參考


來源影片: These Hermes Agent Hacks Will Save You Hours,Sharbel A。根據完整逐字稿改編重組;已移除推廣內容。

提及的概念

本文的知識庫鄰近領域。

實作工作流程

把本文概念轉成可執行步驟。