Second thought
下一個階段由程式從 book 的證據算出,Jev(TypeSafe 的型別化決策模型)只判斷這個判讀對不對。它的提醒很短,而且只在會改變 agent 下一步時才出現。
它在什麼時候執行,以及 Jev 看到並判斷什麼
只在開啟的 loop 內,pi/second-thought.ts 透過 pi 的 classifier registry 請 Jev 複核階段機。一次執行結束且 book 自上次判斷後多了證據條目時,以及宣告 close 時,才會問。沒有 TypeSafe key 時什麼都不做,沒有 loop 時不會執行。subagent session(pi-herdr-agents 的 PI_SUBAGENT_ID,或 pi-subagents 的 PI_SUBAGENT_CHILD)不註冊任何東西,因為由派它的 agent 判斷結果。
Jev 看到種類、intent、anchor、diff 摘要(≤1200 字元)、phase(目前、下一個、缺什麼)、verify 狀態、未完成 todo(id 與標題)、任務清單和 friction(子 agent 的以它的名字列出)。它只判斷要 advance、退回(back)還是 ask-user,另外還問 done、還需要哪一級 review 與品質。階段是否完成只由程式依證據判定。
只有證據類條目或新出現的、沒有 followup 的未完成 todo 會觸發新的判斷。子代理的回報算證據;task、link、base、watch 紀錄不算。
提醒:何時開口、何時讓 loop 多跑一輪、何時不重複
提醒是 next: <phase> (<missing>) 加上 Jev 的疑慮,不附分數。只在 Jev 有疑慮、有 todo 未完成而沒有 followup、或這次會讓 agent 多跑一輪時才送出。Jev 同意且沒有補充時保持安靜,判斷結果仍記在 session 裡。結案時只附疑慮。
離開 close 時,提醒也會點名 loop 中還沒有有效 metadata.followup 的未完成 todo:前三個,標題截成 60 字元,其餘以 +N more 帶過。請 agent 逐一繼續、完成,或設定該 followup。
Jev 同意前進、而下一個階段是 verify、review 或 fix,或有這類 todo 未完成且 Jev 的判斷不是 ask-user 時,才讓 agent 多跑一輪。在最後這種情況,提醒改請 agent 去問使用者。
Jev 的判斷、下一個階段、評估發現和未完成 todo 的 id 都與上一則相同的提醒不重複。Jev 的判斷也在比對鍵裡,所以在新證據上轉成 back 或 ask-user 時,即使其餘相同也會送出提醒。最後一次修改之後已有無 blocking 發現的 review 時,full 評等不算疑慮。
何時保持安靜:等待中的執行、子代理與 unit
呼叫過 MonitorCreate、LoopCreate、goal_wait,或呼叫了 subagent 類工具而 book 還沒關聯到子代理的執行在等待中,不被判斷。loop 派出的子代理還沒回報、且它的 host 沒有回報它已消失時,loop 既不被判斷也不會多跑一輪。子代理完成時會先結束行程、結果才送達,所以已消失但 session 檔在最近 30 秒內寫過的子代理仍算在外。帶 accept 的派工要等 host 重跑它的檢查,寬限再加上檢查的 timeoutSec(預設 600 秒)。
有兩個以上 unit 時,改為逐 unit 安靜。提醒為第一個等著協調者的 unit 判斷、發言並決定是否多跑一輪:已開始、未完成、自己沒有派出在外的子代理,而且自該 unit 最後一筆證據以來還沒問過它這一步。其他同樣等著的 unit 各列一行 next:;只有 unit 的步驟或證據改變時才會再問。
提醒判斷過與說過的內容記在 book 裡(notice 條目),所以 /reload 或接手這本 book 的 session 都不會重複。