執行

看板代理執行

一個視覺化的執行工作流程,透過看板移動來顯示代理進度與阻礙。

工作流程圖版看板代理執行hx-workflow-kanban-agent-execution正在載入視覺預覽…
以原始尺寸檢視
操作流程圖

看板任務狀態與回復

有界卡片從待執行、執行中走向完成;失敗則透過封鎖、重試與分流狀態保持可見。

看板任務狀態與回復有界卡片從待執行、執行中走向完成;失敗則透過封鎖、重試與分流狀態保持可見。看板任務狀態與回復有界卡片從待執行、執行中走向完成;失敗則透過封鎖、重試與分流狀態保持可見。
  1. 輸入: 有界卡片. 產物與驗收條件
  2. 檢查點: 待執行. 受派者可領取
  3. 處理: 執行中. 心跳與執行紀錄
  4. 結果: 完成. 記錄輸出與檢查
  5. 停止: 已封鎖. 保留失敗原因
  6. 檢查點: 人工分流. 重複封鎖需人工檢查

看板代理執行

這是什麼

一個視覺化的執行工作流程,透過看板移動來顯示代理進度與阻礙。

運作模式

  • 難度:中階
  • 節奏:持續
  • 類別:執行

核心概念

  • 看板執行
  • 代理團隊委派
  • 對話
  • 成品產出
  • 手動觸發

原始碼證據

  • toolsets.py#TOOLSETS["kanban"] — 看板多代理協調——僅在代理由看板排程器產生時啟用(需設定 HERMES_KANBAN_TASK 環境變數)。排程器預設在閘道內運作;詳見 config.yaml 中的 kanban.dispatch_in_gateway。讓工作代理以結構化交接來標記任務完成、可請求人工輸入、在長時間操作中發送心跳、在討論串留言,以及(對協調者而言)列出、解鎖和分派任務。(9 個工具)

相關文章

  • 十個 Hermes 工作流程,將聊天機器人變成 24/7 助理
  • 六個 Hermes 應用案例,打造更有意識的個人作業系統

實作模式

完成成果

讓一個有限任務從建立、由工作者領取,一路到結構化的完成交接,並驗證看板的封鎖、解除封鎖與重試復原流程。

開始之前

  • 完全依照下方命令建立一次性工作空間與 input.txt;不要使用含憑證的目錄。
  • 執行 hermes kanban assignees,把現有且低權限的設定檔名稱複製到 ASSIGNEE;不可虛構 lab-worker。
  • 只保留一個派送器;官方支援的預設是內嵌於閘道的派送器。
  • 設定較低的重試上限與明確驗收測試,讓失敗保持可見。

輸入與輸出契約

輸入是含三行文字的 input.txt。任務只能建立 output.txt,內容為同樣三行依字母排序。完成時必須提供結構化摘要與中繼資料,列出變更檔案與做過的驗證。不得使用網路、建立版本提交,或修改一次性工作空間外的檔案。

預期的 output.txt
alpha
beta
gamma

動手完成

建立輸入、初始化看板、檢查閘道狀態,並列出真實受指派者:

LAB_DIR="$HOME/hermes-labs/kanban-agent-execution"
mkdir -p "$LAB_DIR"
printf 'gamma\nalpha\nbeta\n' > "$LAB_DIR/input.txt"
cd "$LAB_DIR"

hermes kanban init
hermes gateway status
hermes kanban assignees

若狀態顯示服務已安裝但停止,執行 hermes gateway start 後再次檢查狀態。若尚未安裝服務,可先執行 hermes gateway install 再執行 hermes gateway start,或在第二個終端機保持互動式 hermes gateway 運作。只有 hermes gateway status 或前景終端機證明閘道與內嵌派送器正在運作後才能繼續。

將 ASSIGNEE 設為 hermes kanban assignees 實際列出的名稱,再建立有限任務:

ASSIGNEE="替換為清單中的設定檔"
test "$ASSIGNEE" != "替換為清單中的設定檔"

hermes kanban create "排序三行測試資料" \
  --assignee "$ASSIGNEE" \
  --workspace "dir:$LAB_DIR" \
  --max-retries 3 \
  --body "讀取 input.txt,只建立依字母排序的 output.txt,驗證它剛好三行,再以摘要與 metadata 完成任務;metadata 須列出 changed_files 與執行的檢查。不要使用網路或建立 commit。"
hermes kanban watch --assignee "$ASSIGNEE"

工作者應使用自己的 kanban_show、心跳工具 kanban_heartbeat 與 kanban_complete;使用者則用 CLI 檢視同一個看板。

驗證成功

  • hermes kanban list --assignee "$ASSIGNEE" 顯示任務由 ready/in-progress 進入 done。
  • hermes kanban show <task_id> 與 hermes kanban runs <task_id> 顯示已完成的執行記錄、摘要與中繼資料。
  • output.txt 精確符合預期三行,且沒有其他檔案改動。
  • 人工封鎖測試: 建立第二個一般任務,立即執行 hermes kanban block <block_task_id> "需要輸入:缺少測試資料";加入要求的測試資料後執行 hermes kanban unblock <block_task_id>。這測試明確的人工相依,不是派送器重試。
  • 派送器重試測試: 使用一個刻意不是版本控制儲存庫的新暫存目錄,作為要求建立連結工作樹的父目錄。Hermes 會接受任務,但派送器無法在該處建立連結工作樹,因此這會進入原始碼定義的啟動失敗路徑;不能用不存在的 dir: 工作空間測試,因為 Hermes 會自動建立該目錄:
NON_REPO_PARENT="$(mktemp -d)"
RETRY_JSON=$(hermes kanban create "驗證派送器重試" \
  --assignee "$ASSIGNEE" \
  --workspace "worktree:$NON_REPO_PARENT/worker" \
  --max-retries 3 \
  --body "此測試不得真正啟動工作者。" \
  --json)
RETRY_TASK_ID=$(printf '%s' "$RETRY_JSON" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')

hermes kanban runs "$RETRY_TASK_ID"
hermes kanban show "$RETRY_TASK_ID"

等待派送器用完三次嘗試。執行記錄必須顯示啟動失敗,任務最後必須是斷路器的 blocked 狀態,且結果為 gave_up。先檢查證據,再移除空的暫存父目錄。不要把這段自動重試歷史與人工封鎖/解除封鎖混為一談。

  • 兩種測試的歷史都會保留先前嘗試,不會抹除失敗證據。

發生問題時

  • ready 任務未開始時,執行 hermes gateway status 與 hermes kanban diagnostics;不得在閘道旁另啟已棄用的獨立常駐程序。
  • 找不到受指派者時,改選 hermes kanban assignees 真正列出的設定檔,不可虛構。
  • 斷路器封鎖主要任務時,檢查 hermes kanban runs <task_id> 與工作者記錄,修正原因後明確解除封鎖。刻意使用無效連結工作樹的重試測試,在檢查完成前應保持封鎖。
  • 工作者寫錯路徑時停止它、丟棄一次性工作空間,再用更嚴格的範圍界線重建任務。

安全、隱私與成本

工作者是具有檔案與工具存取權的代理。使用一次性工作空間、窄權限設定檔、明確停止條件,以及較低的重試與並行上限。任務內容與中繼資料是可持續保留的看板記錄,絕不可放入機密。每次重試都會重複模型與工具成本;應檢查第一次失敗,而不是直接提高重試次數。

官方參考