Docs

執行

瞭解 AI 代理的一次執行如何排隊、執行、停止和重試。

AI 代理每開始一次工作,Multica 就建立一條執行記錄,寫明這次執行由什麼觸發、交給了哪個 AI 代理、進行到哪裡、最後是否成功。

任務與執行

任務儲存一項工作的目標、討論、負責人和最終狀態;執行記錄 AI 代理對這項工作的一次執行。

任務執行
記錄什麼一項持續推進的工作AI 代理的一次執行
持續多久可以反覆討論、補充和重新分配從觸發開始,到完成、失敗或取消為止
數量關係一個任務可以包含多次執行每次執行都有獨立記錄

同一個任務可以先後交給不同的 AI 代理,也可以在失敗後重新執行。每次都產生一條新的執行記錄,舊記錄不會被覆蓋。

觸發來源

以下操作會觸發一次執行:

  • 把任務分配給 AI 代理或小隊。
  • 在評論中提及 AI 代理。
  • 在對話中向 AI 代理傳送訊息。
  • 由自動化按計劃或外部事件觸發。
  • 任務喚醒的事件、時間或條件到了。

入口不同,AI 代理拿到的上下文也不同,執行方式則是一樣的:Multica 建立執行,執行時領取它,再呼叫 AI 代理配置的 AI 程式設計工具。

執行過程

一次執行通常會經過以下狀態:

狀態表示什麼
deferred已安排稍後觸發,到達指定時間後進入佇列
queued正在等待執行時領取
dispatched執行時已經領取,正在啟動 AI 程式設計工具
waiting_local_directory目標本地目錄正被另一條執行佔用,等待目錄鎖釋放
runningAI 程式設計工具正在執行
completed這次執行已正常結束
failed執行出錯或中斷
cancelled執行被手動停止

執行時線上時,新執行通常很快開始;執行入隊後執行時離線,執行會留在佇列中等它恢復。排得久不會讓執行過期:執行時還在發心跳,就說明它只是忙,積壓的執行可以一直排下去。排隊中的執行要同時滿足兩個條件才會失敗:繫結的執行時心跳缺席超過重連寬限期,並且這條執行自己也已經排隊滿這麼久。第二個條件照顧的是"指派給一臺已經休眠的機器"的情況:執行不會立刻失敗,你有完整的一個寬限期把機器喚醒。

如果觸發前系統已經知道目標執行時離線,部分即時操作會直接提示當前無法執行,不再建立一條沒人能領取的執行。

心跳正常的執行時可以執行長時間執行,伺服器不會僅因為執行時間較長就強制結束它。執行時會根據實際活動判斷程序是否已經卡住;相關設定見環境變數。

檢視執行記錄

任務產生的所有執行都列在任務右側欄的執行日誌裡。這一段預設展開:進行中的執行固定在最上面,下面是最近結束的 3 次執行;更早的記錄點開啟時間線檢視。每一行顯示觸發來源、執行 AI 代理和狀態。沒看到這一段時,用任務頂部的面板按鈕開啟右側欄;視窗較窄時它預設收起。

頁面開著時,執行日誌透過實時連線自動更新,新的執行、狀態變化和 AI 代理的評論會直接出現,不用手動重新整理。

AI 代理工作期間,任務頂部還有一個實時狀態條,例如 "Engineer 在工作"。懸停可以看到同樣的進行中執行,不用離開當前頁面。

在執行日誌裡:

  • 點選某一行的 檢視記錄,檢視 AI 代理的訊息、工具呼叫和錯誤資訊。執行還在進行時,彈窗開著的這段時間內容會實時追加,也可以用 最新在前切換事件順序。
  • 停止排隊中、啟動中、等待本地目錄或正在工作的執行。
  • 對失敗或已取消的執行發起重試。

下面的演示走一遍完整過程:執行排隊、開始、失敗,你重試後新的執行完成。新的執行開始後,也可以試試中途停止。

動手試試OPS-21 · Compare the office-supply quotes from five suppliers
StatusTodo
You
@Ops helper Put the five suppliers' quotes into one comparison table.
Execution log
You asked Ops helper in a comment to compare the quotes.

執行記錄:狀態時間軸、AI 代理總結與逐條工具呼叫

修改任務的負責人或狀態不會停止已經開始的執行,要中斷就在執行日誌中停止對應的執行。刪除任務時,關聯的活動執行會一併取消。

執行日誌還彙總這條任務的已花費、Token 和AI 代理工作時長,每次執行對應一根費用條。點合計、費用條或開啟時間線,開啟執行記錄對話方塊:按次或累計檢視費用,按 AI 代理和模型拆分,並列出失敗和取消的次數。費用是估算值,怎麼算的以及整個工作區的用量見統計。

失敗與自動重試

執行時短暫離線、守護程序重啟、執行超時或 AI 程式設計工具網路中斷等臨時故障,可以觸發自動重試。普通執行預設最多執行兩次;工具網路中斷最多執行三次。

AI 代理自身返回的錯誤通常不會自動重試。鑑權失效、額度不足、配置錯誤、模型無法完成請求,都要先處理原因,再手動重試。

自動化的僅執行模式不會自動重試,以免和下一次計劃執行重疊。建立任務模式產生的是普通任務執行,基礎設施故障仍按上面的規則重試。兩種模式都可以在自動化執行歷史中檢視最終結果。

當一條任務上沒有其他活動執行,也沒有新的重試等待執行時,失敗會讓處於 in_progress 的任務回到 todo。

失敗原因參考

執行日誌和統計裡的失敗原因分兩類:不帶字首的原因碼由平臺記錄,agent_error.* 由 AI 程式設計工具的報錯歸類而來。

原因含義處理
runtime_offline執行期間執行時離線恢復執行時後重試,見守護程序與執行時
queued_expired執行時心跳缺席超過重連寬限期,且該執行也已排隊滿這麼久確認執行時線上後重試
runtime_recovery守護程序重啟後回收了中斷的執行直接重試
environment_prepare_failed守護程序沒能準備好本次執行的執行環境——工作目錄,或寫入其中的本地執行時配置先看原始錯誤定位是哪一步失敗,再檢查那臺機器:磁碟空間、權限、目錄是否仍被佔用,或 AI 程式設計工具的本地配置
cancelled被手動停止,或隨歸檔、刪除一併取消無需處理
timeout超過守護程序配置的執行時長上限縮小任務範圍,或調整守護程序的 agent_timeout
iteration_limit達到執行輪次上限縮小任務範圍
agent_blockedAI 代理主動報告無法繼續按它在評論中的說明補充資訊
api_invalid_request平臺 API 拒絕了非法請求重試;反覆出現時報告問題
codex_semantic_inactivityCodex 長時間無有效輸出被判停滯重試,或調整 Codex 停滯超時

手動重試

在執行日誌中點選某一行的重試按鈕,會再次呼叫當時負責這次執行的 AI 代理。即使任務後來換了負責人,也不會改用新負責人。

重試會盡量保留上一次已經寫入本地目錄的檔案。原會話仍然安全、又由同一個執行時領取時,會接著之前的會話繼續。上下文溢位、無效請求這類會汙染會話的錯誤,會在原工作目錄上開新會話;原目錄已經不存在時,改用新的工作目錄。

透過 CLI 找到原執行,再重試:

multica issue runs <issue-id> --full-id
multica issue rerun-task <run-id>

使用完整執行 UUID 時可以省略 --issue;短 ID 字首必須用 --issue 指定任務。命令會沿用原 AI 代理和觸發上下文,會話與目錄的重複使用規則和重試按鈕相同。新增 --fresh 可從新的會話和工作目錄開始。

舊命令 multica issue rerun <issue-id> 已棄用,並從幫助列表中隱藏。現有指令碼仍可使用它,行為保持為讓當前負責人從新會話和工作目錄開始。

執行完成與任務完成

completed 只表示這一次執行正常結束,不代表任務的目標已經確認達成。執行結束後,仍然可以檢查結果、繼續討論、補充要求或再次觸發 AI 代理;任務是否完成,看它的狀態。

狀態與超時速查

以下數字是伺服器的預設配置。

狀態含義超時與後果
deferred已安排稍後觸發到達預定時間後進入 queued,再按下面的規則計時
queued等待執行時領取只要執行時還在心跳就一直等待,並且無論如何都會在入隊後至少保留一個重連寬限期;兩個視窗都過去才會失敗,且不會自動重試
dispatched執行時已領取,正在啟動工具停留超過 5 分鐘按失敗處理
waiting_local_directory等待本地目錄鎖釋放沒有獨立超時;目錄釋放後回到啟動流程
runningAI 程式設計工具正在執行不設固定時長上限;以執行時心跳判定存活,心跳每 15 秒一次,失去心跳的執行時最遲約 3 分鐘被判為離線。其上的執行要等心跳缺席超過重連寬限期(MULTICA_RUNTIME_RECONNECT_GRACE,預設 3 小時)才失敗;守護程序重啟時,會直接回收這些執行

自動重試只覆蓋以下臨時故障,且僅適用於掛在任務或對話上的執行(自動化僅執行模式除外):

可自動重試的失敗原因執行次數上限
執行時離線預設 2 次(首次執行 + 1 次重試)
守護程序重啟後回收預設 2 次
平臺判定執行超時預設 2 次
Codex 長時間無有效輸出預設 2 次
Skill 包下載失敗預設 2 次(此時 AI 代理程序尚未啟動,已下載的包走本地快取)
工具網路中斷最多 3 次,最後一次延遲約 5 秒發起

其餘失敗原因(鑑權、額度、配置、模型等)都不會自動重試,需要先處理原因再手動重試。

接下來

本頁目錄