使用 Wollipog
若要了解戰役權限,請參閱戰役權限預檢。 該文件涵蓋有效模式/邊界、確切決策擁有者、未解決的人員關卡,以及證據上傳/提供者揭露;它並不授權一場戰役或變更已安裝的政策。
當 wollipog 命令位於 PATH 上時,即可使用它。一個由 Wollipog 主控的工作階段會自動提供
WOLLIPOG_CONTROL_PLANE_URL、WOLLIPOG_SESSION_ID 以及一個受保護的 token 檔案;請勿
在命令列上列印、複製或傳遞該 token。
核心命令:
wollipog session list --json
wollipog session get <session-id> --json
wollipog session events <session-id> [--after <seq> [--event-epoch <n>]] [--limit <n>] --json
wollipog session capabilities --runner <id> --agent <id> [--offset <n>] [--limit <n>] [--include-hidden] --json
wollipog session capabilities --runner <id> --agent <id> --model <id> --json
wollipog session create --runner <id> --agent <id> --workspace <id> --prompt <task> [--model <id>] [--effort <level>] --json
wollipog session prompt <session-id> <message> --json
wollipog session wait <session-id> --for input_required,completed,failed,stopped --json
wollipog session stop <session-id> --json
wollipog session unarchive <session-id> --json
wollipog session stop-job <session-id> <job-id> --json
wollipog session release-hold <session-id> <hold-id> --json
wollipog pr wait <number|owner/name#number|host/group/project!iid|url> [--head <sha>] [--timeout <ms>] --json
wollipog pr closures <number|owner/name#number|url> [--intended <issue>]... --json
wollipog pr closures --file <description.md> [--repo <owner/name>] [--intended <issue>]... --json
wollipog review session run --repo <owner/name|gitlab-host/group/project> --pr <number> --head <sha> --brief-file <path> [--full-reason <text>] --json
wollipog review session get <review-session-id> --json
wollipog artifact attach --file <absolute-path> [--name <display-name>] --json
wollipog automation request --proposal '<json>' --json
wollipog automation get <occurrence-id> --json
wollipog automation execute <occurrence-id> --digest <resource-digest> --json
wollipog location-switch request --request '<json>' --json
wollipog location-switch get <occurrence-id> --json
wollipog location-switch execute <occurrence-id> --digest <resource-digest> --json
wollipog worktree create --branch <name> [--base <ref>] --json
wollipog worktree attach --path <absolute-path> --json
wollipog worktree select --path <absolute-path> --json
wollipog worktree discard --path <absolute-path> --json
wollipog worktree delete-refs [--path <absolute-path>] --ref <ref>=<object-id> [--ref ...] --json
wollipog decision request --request-id <id> --resource-key <key> --snapshot '<json>' --json
wollipog decision get <occurrence-id> [--session <descendant-id>] --json
wollipog decision list [--session <descendant-id>] [--limit <1-100>] [--cursor <occurrence-id>] --json
wollipog decision consume <occurrence-id> --snapshot '<json>' [--action '<json>'] --json
wollipog decision reconcile <occurrence-id> --snapshot '<json>' --json
wollipog decision withdraw <occurrence-id> --reason <text> [--session <child-id>] --json
對於一個已驗證、完全歸檔的戰役子工作階段被拒絕的髒工作目錄,只有其控制 Orchestrator 可以使用 session unarchive
(控制平面與執行器上的 protocol 266+)。這可在不重新啟動或刪除檔案的情況下恢復可見性。然後重新啟動子工作階段,要求其保留並清理工作、驗證其新的最終報告,並再次歸檔。退役仍然會拒絕髒的、未推送或未交付的工作;舊的執行器會明確拒絕恢復。請將暫存報告保留在受管理工作目錄之外。
若無 --after,session events 會回傳最新的 --limit 個事件(預設 30,最大 100)。
若要讀取長範圍,例如子工作階段自某個已知點以來所作的一切,請向前分頁:從
--after 0 開始,或從你已讀取的序列連同其來源的 eventEpoch 開始,然後重複
使用上一頁的 --after <lastSeq> --event-epoch <eventEpoch> 直到 hasMore 為 false。
historyIncomplete 表示控制平面尚未載入完整的日誌,因此後續事件可能
存在:請保留回傳的 lastSeq 並稍後重試,而不是將該頁視為結束。如果呼叫因事件歷史被取代而失敗,請在沒有舊紀元的情況下從 --after 0 重新開始。
每個事件是一行不超過 400 個字元的摘要,因此長訊息會被截斷。MCP
get_session_events 工具接受相同的 after、limit 和 eventEpoch。
每個事件讀取在歷史資料匯入期間都會保持分頁狀態;一個短或空的未完成頁面並非
日誌的結尾。若無 --after,不完整的結果是最近期的快取視窗,因此請在匯入追上進度後,不帶 --after 重試以取得真正的最新視窗。直接 HTTP 讀取
GET /api/sessions/:id/events 在省略 limit 時預設回傳 200 個事件;請使用 nextAfter 和
eventEpoch 來繼續,而不是將一個回應視為完整日誌。
Protocol-222 執行器在整個匯入過程中皆使用有界讀取器。在升級提供預設頁面的控制平面之前,請先更新較舊的 CLI/MCP
安裝:舊讀取器的
完整日誌回退可能將有界的第一頁誤認為最新視窗。可識別的舊
代理工作階段回退會失敗並顯示執行器升級指引;配對裝置的 CLI 呼叫需要
相同的先升級後遷移,因為其人類憑證無法識別讀取器版本。
session stop-job(MCP stop_background_job)透過其 ID 結束一個子工作階段的一個未完成的背景任務,
該 ID 由 session get 列在 unfinishedBackgroundJobs 中。當一個永不結束的任務,
例如一個條件從未觸發的監控器,導致已完成的兄弟工作階段的結果或
佇列中的交接等待時,請使用此命令。只有該任務會結束並被記錄為已終止;子工作階段的對話、其
他任務以及佇列中的提示都會保留。如果提供者未及時確認停止,該
任務會繼續執行;若它後來結束,仍會被記錄為你的停止,因此不要為了被指名而重複請求。session stop 和 session restart 則會結束所有
任務:stop 會丟棄佇列中的提示,而 restart 會保留它們並在之後執行。
當前執行器會恢復已建立的 Claude Code、Codex App Server 和 Pi 對話;一個從未執行的
工作階段會重新開始。工作階段能力 agentCapabilities.restartResumesConversation 報告
其下一次 Restart 是否恢復對話。較舊的執行器會省略此項,並可能重新開始,因此缺少此項不提供連續性保證。
只有工作階段的擁有者及其控制 Orchestrator 才能使用 stop-job。當子工作階段的佇列交接暫停報告 canRelease 時,session release-hold
(MCP release_queue_hold)使用 session get 中的暫停 ID 會立即結束所有未完成的任務,
將每個任務記錄為由你終止,並按順序執行交接和佇列中的提示而不重新啟動;
它與 stop-job 具有相同的權限,並且如果你讀取後暫停已變更,則會被拒絕。
Orchestrator 戰役必須使用管理工具作為政策邊界,而不是從其提示中推斷權限。
在戰役開始時以及人類變更政策後呼叫 get_campaign。它回傳
有效行為、類型化決策擁有者、修訂版本、准入和護欄限制、子工作和
後續工作計數、UI 審查相容性,以及 waiting_human、active、blocked、
verified_complete 或 complete_with_handoffs 之一,而不回傳憑證。其 behavior 包含下一次建立子工作階段時
將強制執行的 Child Harness、Child Model、Child Effort、Follow-Ups 和 Completion。人類可以在戰役執行時
變更它們;變更後的值帶有 active_campaign 來源和更高的
behavior.revision。它們適用於之後建立的子工作階段,現有子工作階段保留其自己的設定,而且沒有代理(包括 Orchestrator)可以變更它們。
Orchestrator 角色預設為委派實作:規劃、委派、監控和審查。 除非人類明確要求協調或委派,否則涵蓋數個議題的一般請求不會授權建立戰役或子工作階段。 父工作階段可以直接維護允許的規劃工件。 如果人類明確要求父工作階段進行實作,請先檢查開放的子工作分配和拉取請求是否有重疊,然後為 父工作階段建立並選擇一個專用的 Wollipog 工作目錄,並遵循儲存庫的一般測試、審查、UI 證據、合併和 清理工作流程。提供者權限和治理仍全程適用。
嚴格的專案隔離是一個獨立的人類控制執行設定。新工作階段預設為停用。
啟用時,專案位置將由作業系統強制設為唯讀,父工作階段僅能在工作階段私有的暫存區域中工作,且父工作階段的實作和自工作目錄操作將被拒絕。
在啟動前會檢查所需的 bwrap、Seatbelt 或經稽核的提供者邊界。
沒有執行政策欄位的現有 Orchestrator 工作階段將被視為嚴格,且無法自行放寬。
每次建立子工作階段時,其初始分配中都會收到一個由伺服器衍生的戰役政策區塊。
對於自動模型或努力,請使用 get_agent_capabilities 並在同一個 create_session 呼叫中發送選定的配對;固定值由伺服器強制執行。
該區塊並非空白核准。子工作階段必須使用 request_workflow_decision、get_workflow_decision 和 consume_workflow_decision 來處理
實作問題、PR 合併、合併分支刪除、後續工作發布和 UI 證據。
當這些 MCP 工具不可用時,請使用上面等效的自我限定 wollipog decision request、
get 和 consume 命令;確切的資源快照和可選的 PR 合併動作是
JSON 物件。CLI 拒絕 request、consume 和 reconcile 的 --session,並且不公開解析操作。
唯讀 get_workflow_decision 接受可選的 sessionId;list_workflow_decisions
列舉待處理和已核准的決策,並提供可選的 sessionId、limit 和 cursor。
省略目標時會讀取自身。Orchestrator 可以定位一個可存取的後代,
這需要對兩個工作階段的存取權。精確讀取包含終端狀態;404 永遠不表示已被消費。
請遵循 nextCursor 直到其不存在。頁面反映當前狀態,因此在分頁期間已確定的決策
可能會消失;當其結果重要時,請精確讀取已知的出現。
後代讀取和列表需要控制平面 protocol v214。沒有該工具的較舊執行器
可以使用更新的 CLI 或唯讀 HTTP 端點
GET /api/sessions/:id/workflow-decisions/:occurrenceId 和
GET /api/sessions/:id/workflow-decisions?limit=50&cursor=<occurrence-id>,並使用其現有的
工作階段憑證(如果已佈建 token)。提供者隔離的工作階段僅持有執行器中繼金鑰,
無法驗證直接的 HTTP 呼叫;請升級執行器/CLI 以使用工具,而不是
尋求 bearer token。較舊的控制平面僅透過
list_descendant_requests 公開待處理的請求;請更新它們以進行權威的後代狀態檢查。
只有當前擁有者可以解析確切的待處理出現。
對於一個不必要的待處理、由人類擁有的 review_round_extension,控制的 Orchestrator
可以改為使用子工作階段的 sessionId、確切的
occurrenceId 和非空白的 reason 來呼叫 withdraw_descendant_workflow_decision,說明撤回原因並給予子工作階段後續
指示(控制平面 v265+)。它只會移除該請求,稽核 Orchestrator 的
撤回,並透過持久的恢復路徑傳遞原因,而不會停止或重新啟動
子工作階段。該決策顯示為 revoked 並帶有 withdrawal 來源;它不授予任何核准且
無法被消費。已核准的決策和未指定用於撤回的類別將被拒絕。
使用 get_workflow_decision 取得確切結果;一個仍需人員處理的請求仍會保留給他們。
當一個待處理或已核准的決策不再需要且從未被消費或武裝時,請使用非空白的 reason 透過 withdraw_workflow_decision(decision withdraw)將其退役(控制平面 v269+);切勿使用過時的快照消費它以使其被撤銷。省略 sessionId 以撤回你自己的。
控制的 Orchestrator 可以傳遞其子工作階段的 sessionId 來撤回一個 Orchestrator 擁有的決策;一個由人類擁有的決策仍保留給請求者來撤回。撤回不會核准或消費任何東西:該決策顯示為 revoked,並以 withdrawal 命名撤回的工作階段及其原因,之後無法再被消費,並且不再阻止 verify_campaign_child。一個仍在等待待處理決策的子工作階段會以該原因恢復;一個已持有核准的子工作階段則不會被喚醒。已消費的決策、已武裝的 pr_merge(請改為 reconcile),以及由人類擁有的問題關閉、範圍定義、後續工作准入和自動化請求將被拒絕。
驗證、機密、
持久授權、治理變更、預算增加和工具護欄仍然是僅限人類操作。
單獨建立的人類預算權限可能允許有界限的受管理工作者預訂和
分配;切勿從戰役名稱推斷它,或使用無計量的工作者來規避會計。
停止或重新啟動會撤銷工作階段尚未消費的每個決策。重新啟動後,工作階段
會收到一條 [Wollipog Session Restart] 訊息,列出每個被撤銷的出現:不要在
其先前的核准上採取行動,並重新請求你仍然需要的東西。
如果一個確切的已武裝 PR 合併命令已經成功,但其已核准的出現仍未
被消費,請使用 reconcile_workflow_decision(或 wollipog decision reconcile)搭配該
出現的未更改資源快照。
它永遠不會重新執行該命令。對於 Codex App Server 子工作階段,它證明確切的已完成准入、
提供者命令和合併後的 forge head;請先恢復同一個 App Server 工作階段。Claude Code
子工作階段的排隊在自動或完整存取模式下不會產生權限收據,
...
[此處原內容被截斷以利翻譯]