跳到內容

使用計畫模式

本指南說明如何在代理寫下任何程式碼之前,先從它那裡取得一份結構化的計畫。

在計畫模式中,代理以唯讀方式研究,唯一的交付物是一份具型別的計畫: 一張由你核准的步驟相依圖,Control Center 接著會把它編譯成真正的工作。當你想 看清一項變更的範圍、想拿到拆解後的步驟,或想在動到任何東西之前先點出風險與 相依關係時,就使用它。

以下任一操作都會翻轉空間的模式,而且這項變更會被持久化:

  • 在輸入區工具列最左側的模式下拉式選單中選擇 Plan
  • 按 Shift+Tab
  • 送出 /plan。單獨一個 /plan 只是啟用該模式;/plan <request> 會啟用它, 並把其餘內容當作你的訊息送出

/plan 絕不會以文字形式傳送——它設定的是儲存起來的模式,而工具介面、護欄預設 與提示全都以它為權威來源。因此該模式對這一輪以及之後的每一輪都生效,直到你把它 改回來。

模式儲存在空間上,所以同一個代理可以在這裡處於計畫模式,在別處處於代理模式。

  1. 它以唯讀方式研究——記憶、程式碼索引、檔案
  2. 它呼叫 submit_plan 一次,帶著一個 goal 與 nodes,每個節點各有一個 穩定的 key、一個 title、一個 description,以及它所 dependsOn 的節點 鍵(這正是讓彼此獨立的工作得以並行執行的原因)
  3. 它停下來

該工具會驗證這張圖——重複的鍵、懸空的相依、循環——並把違規內容交回給代理修正, 而不是接受一份壞掉的計畫。

計畫會在對話中顯示為精簡的一列,呈現目標、它的狀態與步驟數。Plan Studio——相依圖、逐節點檢視器與成本估算——會以分頁開在對話旁邊:在那一列上按 開啟,或者乾脆等著,因為當你正盯著對話時,30 秒內送達的計畫會自己開啟它的 分頁。

在這裡,文字敘述算不上交付物。一次執行如果沒有呼叫 submit_plan 就結束,會在 對話中留下一行看得見的「Ended without submitting a plan (no submit_plan call).」, 並把該次執行標記為漏交了它的交付物。該次執行的狀態刻意維持為 completed—— 這樣管線與工單的狀態機就不會被觸動——所以要讀的是那一行,而不是狀態徽章。

在對話中計畫的那一列上,按 核准並執行。在 Plan Studio 的核准列上,按 核准計畫(或它旁邊的拒絕;當圖有驗證錯誤時,核准會被停用)。

接著:

  1. Control Center 會把計畫編譯成一項編排並將它具體化——工單與該次執行。這一步 不涉及任何模型;它是確定性的
  2. 計畫由寫出它的那個代理執行。是否要拉其他人進來,由該代理在執行時決定——它 可以用 delegate_task 把某個步驟交給更合適的隊友,前提是不超過工作區的委派 深度上限
  3. 計畫的目標會成為該對話的目標,而工作就在同一個對話中執行:每個步驟 都會發布代理被要求做什麼,並把它那一輪串流回來,因此你就在自己原本待的地方 跟著它(也能停止某一輪)
  4. 對話的一般側邊面板(在待辦事項底下)中的目標列,會以 settled/total 顯示該次執行的進度並帶有它的停止按鈕;Plan Studio 會在圖上顯示每個節點的 狀態,也可以在那裡取消

如果你寧願留在這個對話裡,而不是核准這份計畫,代理可以呼叫 exit_plan_mode。 那是唯一被認可的退出方式:它會開啟一筆與該對話連結的持久核准請求並回傳 pending——空間維持在計畫模式,代理不得行動。一旦該請求獲得核准,代理下一次 呼叫 exit_plan_mode 就會把空間從計畫模式翻轉為代理模式,並解鎖它的變更類 工具。若請求被拒絕,它可以針對修訂後的計畫再開一筆新的請求。

要離開計畫模式,請切換輸入區的下拉式選單(或按 Shift+Tab),或者核准已提交的 計畫。exit_plan_mode 會開啟一筆持久核准,由 MCP 工具 decide_approval 決定。 針對遭阻擋工具呼叫的護欄覆蓋層是另一套記憶體內的佇列,不承載計畫退出請求。

一個 messaging.createSpace 管線節點會從節點設定的 mode extra 讀取對話 模式——extras['mode']: 'plan'。該鍵採精確比對:其他任何拼法,包括 conversationMode 或 dispatchMode,都會被默默忽略,房間則回退到該 body 的 預設值,也就是審查模式,而不是聊天。promptAgent 步驟加入的是它沒有建立的 房間,且不會重新調整它的權限。節點設定編輯器中的分派模式選取器 (allParallel / manager)是給團隊派送節點用的。請在開啟空間的範本上,或 透過 API 在該節點的設定上,用 extras['mode'] 設定對話模式。