子代理與 unit
協調者握著 loop,worker 做事,book 把每個 worker 的修改、執行與併入追回它服務的那張票。帶有協調 metadata 的 todo 是一個 unit,有自己的階段。
flowchart TD coord["協調者的 loop book"] -->|"帶 observe、kind、<br/>lands 或 agents 的 todo"| unit["Unit"] coord -->|"link 條目:session 檔、<br/>cwd、worktree、併入的 ref"| child["子代理<br/>pi-herdr-agents"] unit -->|"以 agents 綁定,<br/>否則以票號"| child unit -->|"繼承 anchor"| child child -->|"通過的同一 anchor 執行<br/>在 unit 持有的 tree 上"| verify["Unit 的 verify<br/>adopted"] child -->|"分支"| ref["整合 ref<br/>unit 要併入的"] ref -->|"祖先、patch id<br/>或內容相同"| land["land 條目<br/>算作 act"] notice["anchorloop_stage landed<br/>sha、ref、task"] -.->|"以同樣方式檢查"| land
link、host adapter 與子代理自己的 book
子代理只透過 pi-herdr-agents 關聯:子行程的 PI_SUBAGENT_ID、父 session subagent 結果的 details.id。pi 本身沒有 subagent。關聯的子代理,其改動算父 loop 的 act。其 anchor 執行記為 check,並附上它所在各 repo 的工作狀態 tree:含已追蹤與未追蹤檔案,不含 ignored 檔案與 scratch/。
對只負責協調的主 session,book 會透過 delegation host adapter 取得更多資訊。adapter 是 pi-herdr-agents、只有環境變數標記的 host,或沒有 host,由環境自動判斷。link 會記下子代理的 session 檔、cwd、worktree 與它的成果要併入的整合 ref。它為子代理的 repo 加一個 base,讓 diff 包含 worker 的改動。第一個 todo 之前派出的子代理,在 loop 開啟時補上 link。
子代理第一次編輯、commit 或執行父 loop 的 anchor 時,不需要 todo 就會開啟自己的 book。
read 與 session_start 會列出沒有回報結果的子代理,附上行程、book 與 worktree 狀態。
unit:什麼構成 unit、子代理怎麼綁定,以及 unit 的檢查比對什麼
帶有 observe、kind、lands 或 agents metadata 的 todo 是一個 unit。只有 anchor 時是該任務自己的檢查,不構成 unit。兩個以上 unit 時,read、widget 與 Jev 的任務清單各給每個 unit 一行階段。
子代理以 agents 綁定 unit,沒有的話,在恰有一個未完成 todo 含有它的名稱或 brief 裡的票號時綁定。
unit 的 tree 是它 worker 的 worktree(或 checkout),沒有的話是 loop 自己的 repo。修改算給 tree 含有它的 unit,都不含時算給每個 unit。unit 的檢查只比對自己的 tree,所以一個 unit 的修改不會讓另一個 unit 的檢查失效。
有兩個以上 unit 時:
- 沒有
task的verify會被拒絕,並列出各 unit。 - 帶
task的back與skip只影響那個 unit,並依那個 unit 的種類檢查。 - 子代理繼承所屬 unit 的 anchor,它回報時通過的那個 anchor 執行會記為該 unit 的 verify。
- 每次對常駐 reviewer 的
subagent_send都是一次獨立派工,結論算給 brief 指名的 unit。