worker 團隊、Goal/Loop 與續航
免責聲明:本文整理自官方 v2.1.15 的 setup.md 與 tool-surface.md。這些續航功能不增加任何 provider 配額,也不能用來繞過限制——詳見文末紀律。
一切都從「本地 session 歷史」開始
在 CoS 裡,session 歷史屬於本地工作階段,不屬於某個 ChatGPT 分頁。companion extension 會記錄訊息與真實的本地工具結果,所以:
- 你可以關掉分頁、隔天回來,app 與模型仍能讀到先前的工作脈絡。
- 這是 Compact & Resume、worker 重用與 agent 身分機制的共同基礎。
- 記錄預設開啟、保留 30 天,可以關閉;它是本地 durable 歷史,與 OS 安全儲存是兩回事。
Compact & Resume:換對話,不換任務
長任務撞到 context 天花板時,CoS 的做法不是叫你重講一遍:
- Compact & Resume 先要求一次 handoff(交接)。
- 開一個全新的 provider 對話,再把同一個 session 重新綁上去。
- 任務與 worker 歷史跟著搬家。
幾個細節:
- 自動 compaction 使用本地估算與「合格的在飛工作」決定時機;Pro 模型永不自動 compact(避免在昂貴模型上做未預期的交接)。
- 模型看不到
save_handoff/resume_session這類工具——Compact & Resume 是 app/browser 層的編排,不是模型可呼叫的能力。 - 遇到
COMPACTION_IN_PROGRESS時:讓來源對話把 handoff 做完,工作會在替換後的對話繼續。
worker 團隊:agents 的四個動作
agents 工具(multi-agent 模式開啟時可用)恰好四個動作:
| 動作 | 做什麼 |
|---|---|
spawn |
從一份共享 context 加上每位 worker 的任務,建立 worker 對話。每次 run 只用一次;需要再用就重用既有 worker。 |
message |
送出一則訊息,或 all-or-nothing 的批次。對睡著的 worker 傳訊息就是喚醒它——在它自己的對話裡。 |
status |
回報 run 與 workers 狀態:誰在睡、還有幾個 worker 名額。 |
finish |
worker 向 prime 交棒:報告結果,然後進入睡眠。 |
spawn 可以指定模型與 reasoning effort
- 模型:每位 worker 可帶 optional
modelslug(fresh-chat URL 的?model=<slug>)。用途很實際——prime 在受限的貴模型上工作時,可以派 worker 去便宜的模型;不帶=帳號預設,slug 認不得也開預設。模型在該對話的生命中固定,包含 sleep/wake 重用時。 - reasoning effort:
pro、none、minimal、low、medium、high、xhigh、max、ultra。獨立於 model 轉發——effort 永遠不會選模型或改模型。不帶=app 設定預設,或帳號預設。
worker 會「睡覺」,不是「下班」
- 睡著的 worker 保留它的 ChatGPT 對話,可以喚醒重用;睡覺時不佔名額——名額只算真正在工作中的 worker。
- 喚醒需要一個空位:CoS 會重開/聚焦那位 worker 自己的聊天,把 prime 的訊息當成一般使用者訊息打進去。
- 名額:預設同時 2 個,可調到 8 個。
- 永久 finished 只發生在該 worker 的對話撞到 400,000 token 上限(app 自己的 session 計數)時。越界不會打斷在飛的工作,只是讓「下一次停止」變成最後一次。
- worker 永不跑 Compact & Resume(自動或手動皆然):對話就是它的 durable agent 身分;400K 的邊界只改變之後能不能再喚醒,不會另開替代對話。
身分是綁在對話上,不是發憑證
沒有模型可自行提供的 agent credential,也沒有 agent_key。worker/prime 的身分,是結合 extension 的證據綁在 ChatGPT conversation 上;證明不了就 fail closed——這就是 CALLER_IDENTITY_REQUIRED 與 WORKER_IDENTITY_LOST 這兩個錯誤碼的來源。
Goal 與 Loop:讓任務自己往下走
- Goal:可以自行判定「任務完成了」,選擇什麼都不送直接收尾。
- Loop:在 brief 範圍內持續推進,直到你停用。
- 兩者都能使用 ChatGPT 的 helper 模式,或接上可選的 API backend;v2.0.7 起也可以自帶 OpenAI-compatible Goal provider 憑證。
Astra finish boundary:把尾巴收乾淨
開啟 Session finish 後,Astra 的 finish 邊界可以在同一個工作回合內透過工具接收:排隊中的指令、計畫檢查點與自動 follow-up。你也可以直接從 composer 結束回合。
重點:這只是把「收尾階段的指令」擠進當前回合,不會移除 provider 的用量或 context 限制。
使用紀律(請當成硬規則)
- 續航功能不授予額外配額或存取權。不要用新對話、worker、Goal/Loop 或 compaction 去規避 provider 的限制。
- 監督自動化工作;一旦工作流收到限制或政策警告,停用它的 Goal/Loop 自動化,照 provider 的申訴/重置流程處理。
- 不要換帳號、換對話、換模型、換 connector 或換 tunnel 來繞過限制。本地的重試或重新連線,不構成「限制已解除」的證據。
- 帳號層級的處置問題屬於 provider 的支援/申訴管道,不要拿公開 issue 處理。
下一步
- 完整工具表與錯誤碼:工具速查
- 實戰:派出平行重構 worker 團隊
- 實戰:Goal/Loop 夜間長跑