跳至主要內容

Agent.listSuspendedRuns()

新增於: @mastra/core@1.43.0

.listSuspendedRuns() 方法會從 Workflow 快照儲存空間列出已暫停的 Agent run:包括等待需要核准之 Tool 呼叫的 run,或等待呼叫了 suspend() 之 Tool 的 run。由於探索作業以儲存空間而非記憶體內狀態為依據,因此伺服器重新啟動後仍可運作,也支援多個伺服器執行個體。

將回傳的 runId 傳給 resumeStream()approveToolCall()declineToolCall(),即可繼續該 run。

篩選條件與 Workflow run 列表 API(listWorkflowRuns)相同,另外提供 Agent 層級的 threadId 篩選條件。

使用範例
「使用範例」的直接連結

探索對話中待處理的 run 並繼續執行。請檢查 requiresApproval 以選擇正確的繼續方式:若因等待核准而暫停,請使用 approveToolCall() / declineToolCall();若因 suspend() 而暫停,請使用帶有恢復資料的 resumeStream()

const { runs } = await agent.listSuspendedRuns({
threadId: 'thread-123',
resourceId: 'user-456',
})

const run = runs[0]
const toolCall = run?.toolCalls[0]

if (run && toolCall) {
const stream = toolCall.requiresApproval
? await agent.approveToolCall({ runId: run.runId, toolCallId: toolCall.toolCallId })
: await agent.resumeStream({ name: 'San Francisco' }, { runId: run.runId })
}

參數
「參數」的直接連結

options?:

AgentListSuspendedRunsOptions
= {}
用來限定結果範圍的篩選與分頁設定。
AgentListSuspendedRunsOptions

threadId?:

string
僅回傳屬於此記憶體 thread 的 run。

resourceId?:

string
僅回傳屬於此記憶體 resource 的 run。

fromDate?:

Date
僅回傳於此日期當天或之後建立的 run。

toDate?:

Date
僅回傳於此日期當天或之前建立的 run。

perPage?:

number
每頁項目數。同時提供 perPage 與 page 時會套用分頁;否則會回傳所有符合條件的 run。

page?:

number
以零為起始索引的頁碼。

回傳值
「回傳值」的直接連結

result:

Promise<AgentListSuspendedRunsResult>
解析為符合條件之 run 與分頁前總數的 promise。
interface AgentListSuspendedRunsResult {
runs: AgentRun[]
/** Total number of matching runs, before pagination */
total: number
}

interface AgentRun {
/** Run ID accepted by resumeStream(), approveToolCall(), and declineToolCall() */
runId: string
status: 'suspended'
threadId?: string
resourceId?: string
/** When the run suspended */
suspendedAt: Date
/** Suspended tool calls awaiting approval or resume data */
toolCalls: AgentRunToolCall[]
}

interface AgentRunToolCall {
toolCallId?: string
toolName?: string
/** Arguments the model supplied (approval suspensions only) */
args?: unknown
/** True when the run is waiting on a tool-call approval */
requiresApproval: boolean
/** The tool-defined suspend payload when the tool called suspend() */
suspendPayload?: unknown
}

探索範圍
「探索範圍」的直接連結

結果範圍僅限於由您呼叫 listSuspendedRuns() 的 Agent 所啟動之 run:快照會保存擁有該 run 之 Agent 的 id,因此不會回傳同一 Mastra 執行個體中其他 Agent 啟動的 run。在 supervisor 設定中,supervisor 會看到自己的外層 run(也就是要恢復的 run),而子 Agent 的內層 run 只有該子 Agent 本身可見。您可以依 threadIdresourceId 篩選,將結果限定至單一對話。

run 快照只會在 run 等待輸入時保存,並於 run 完成時刪除,因此只能從儲存空間探索已暫停的 run。只有在 Mastra 執行個體設定了持久化儲存 Provider時,已暫停的 run 才能在重新啟動後保留。若使用預設的記憶體內儲存空間,重新啟動時快照會遺失。