十個 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 任務檢查已核准的內容是否已進入下一階段。
每個步驟仍然可見,而人類保留對發佈的權力。
分層引入系統
建議的順序是:
- 建立 Mission Control 或一個簡單的中央看板。
- 加入一個可重複使用的技能。
- 組織 Telegram 主題或工作階段。
- 加入一個 cron 任務。
- 引入一個目標與一個子代理。
- 在手動工作流程穩定後加入 Webhook。
- 當權限或指令需要隔離時,拆分專業代理。
目標不是最大化自動化,而是建立一個工作可以預測地進入、可見地進展,並以可驗證的成果結束的系統。這就是將 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,並將下列鍵值合併
進去;不要覆蓋整份檔案。如果 platforms 或 platforms.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: ok、POST 回傳 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。根據完整逐字稿改編重組;已移除推廣內容。
