執行

看板代理執行

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

工作流程圖版看板代理執行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_heartbeatkanban_complete;使用者則用 CLI 檢視同一個看板。

驗證成功

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

安全、隱私與成本

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

官方參考