執行
瞭解 AI 代理的一次執行如何排隊、執行、停止和重試。
AI 代理每開始一次工作,Multica 就建立一條執行記錄,寫明這次執行由什麼觸發、交給了哪個 AI 代理、進行到哪裡、最後是否成功。
任務與執行
任務儲存一項工作的目標、討論、負責人和最終狀態;執行記錄 AI 代理對這項工作的一次執行。
| 任務 | 執行 | |
|---|---|---|
| 記錄什麼 | 一項持續推進的工作 | AI 代理的一次執行 |
| 持續多久 | 可以反覆討論、補充和重新分配 | 從觸發開始,到完成、失敗或取消為止 |
| 數量關係 | 一個任務可以包含多次執行 | 每次執行都有獨立記錄 |
同一個任務可以先後交給不同的 AI 代理,也可以在失敗後重新執行。每次都產生一條新的執行記錄,舊記錄不會被覆蓋。
觸發來源
以下操作會觸發一次執行:
- 把任務分配給 AI 代理或小隊。
- 在評論中提及 AI 代理。
- 在對話中向 AI 代理傳送訊息。
- 由自動化按計劃或外部事件觸發。
- 任務喚醒的事件、時間或條件到了。
入口不同,AI 代理拿到的上下文也不同,執行方式則是一樣的:Multica 建立執行,執行時領取它,再呼叫 AI 代理配置的 AI 程式設計工具。
執行過程
一次執行通常會經過以下狀態:
| 狀態 | 表示什麼 |
|---|---|
deferred | 已安排稍後觸發,到達指定時間後進入佇列 |
queued | 正在等待執行時領取 |
dispatched | 執行時已經領取,正在啟動 AI 程式設計工具 |
waiting_local_directory | 目標本地目錄正被另一條執行佔用,等待目錄鎖釋放 |
running | AI 程式設計工具正在執行 |
completed | 這次執行已正常結束 |
failed | 執行出錯或中斷 |
cancelled | 執行被手動停止 |
執行時線上時,新執行通常很快開始;執行入隊後執行時離線,執行會留在佇列中等它恢復。排得久不會讓執行過期:執行時還在發心跳,就說明它只是忙,積壓的執行可以一直排下去。排隊中的執行要同時滿足兩個條件才會失敗:繫結的執行時心跳缺席超過重連寬限期,並且這條執行自己也已經排隊滿這麼久。第二個條件照顧的是"指派給一臺已經休眠的機器"的情況:執行不會立刻失敗,你有完整的一個寬限期把機器喚醒。
如果觸發前系統已經知道目標執行時離線,部分即時操作會直接提示當前無法執行,不再建立一條沒人能領取的執行。
心跳正常的執行時可以執行長時間執行,伺服器不會僅因為執行時間較長就強制結束它。執行時會根據實際活動判斷程序是否已經卡住;相關設定見環境變數。
檢視執行記錄
任務產生的所有執行都列在任務右側欄的執行日誌裡。這一段預設展開:進行中的執行固定在最上面,下面是最近結束的 3 次執行;更早的記錄點開啟時間線檢視。每一行顯示觸發來源、執行 AI 代理和狀態。沒看到這一段時,用任務頂部的面板按鈕開啟右側欄;視窗較窄時它預設收起。
頁面開著時,執行日誌透過實時連線自動更新,新的執行、狀態變化和 AI 代理的評論會直接出現,不用手動重新整理。
AI 代理工作期間,任務頂部還有一個實時狀態條,例如 "Engineer 在工作"。懸停可以看到同樣的進行中執行,不用離開當前頁面。
在執行日誌裡:
- 點選某一行的 檢視記錄,檢視 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_blocked | AI 代理主動報告無法繼續 | 按它在評論中的說明補充資訊 |
api_invalid_request | 平臺 API 拒絕了非法請求 | 重試;反覆出現時報告問題 |
codex_semantic_inactivity | Codex 長時間無有效輸出被判停滯 | 重試,或調整 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 | 等待本地目錄鎖釋放 | 沒有獨立超時;目錄釋放後回到啟動流程 |
running | AI 程式設計工具正在執行 | 不設固定時長上限;以執行時心跳判定存活,心跳每 15 秒一次,失去心跳的執行時最遲約 3 分鐘被判為離線。其上的執行要等心跳缺席超過重連寬限期(MULTICA_RUNTIME_RECONNECT_GRACE,預設 3 小時)才失敗;守護程序重啟時,會直接回收這些執行 |
自動重試只覆蓋以下臨時故障,且僅適用於掛在任務或對話上的執行(自動化僅執行模式除外):
| 可自動重試的失敗原因 | 執行次數上限 |
|---|---|
| 執行時離線 | 預設 2 次(首次執行 + 1 次重試) |
| 守護程序重啟後回收 | 預設 2 次 |
| 平臺判定執行超時 | 預設 2 次 |
| Codex 長時間無有效輸出 | 預設 2 次 |
| Skill 包下載失敗 | 預設 2 次(此時 AI 代理程序尚未啟動,已下載的包走本地快取) |
| 工具網路中斷 | 最多 3 次,最後一次延遲約 5 秒發起 |
其餘失敗原因(鑑權、額度、配置、模型等)都不會自動重試,需要先處理原因再手動重試。
接下來
- 守護程序與執行時 — 瞭解執行在哪臺電腦上執行。
- 分配任務給 AI 代理 — 從任務發起一次執行。
- 提及 AI 代理 — 在評論中補充要求或邀請其他 AI 代理參與。