看板代理執行
這是什麼
一個視覺化的執行工作流程,透過看板移動來顯示代理進度與阻礙。
運作模式
- 難度:
中階 - 節奏:
持續 - 類別:
執行
核心概念
- 看板執行
- 代理團隊委派
- 對話
- 成品產出
- 手動觸發
原始碼證據
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>與工作者記錄,修正原因後明確解除封鎖。刻意使用無效連結工作樹的重試測試,在檢查完成前應保持封鎖。 - 工作者寫錯路徑時停止它、丟棄一次性工作空間,再用更嚴格的範圍界線重建任務。
安全、隱私與成本
工作者是具有檔案與工具存取權的代理。使用一次性工作空間、窄權限設定檔、明確停止條件,以及較低的重試與並行上限。任務內容與中繼資料是可持續保留的看板記錄,絕不可放入機密。每次重試都會重複模型與工具成本;應檢查第一次失敗,而不是直接提高重試次數。

