跳至主要內容

TaskSignalProvider

將內置任務 Tool(task_writetask_updatetask_completetask_check)和 TaskStateProcessor 組合在單一 Agent 註冊中。使用此 Provider,即可為 Agent 加入結構化、持久的任務清單,而無需分別連接 Tool 和 processor。

擴充 SignalProvider。任務清單儲存於 thread 範圍的 tasks 儲存空間 domain(唯一真實來源),並由 processor 投射至 Agent 的 state-signal lane,因此即使 observational memory 被截短,任務清單仍會保留,而且不會令 prompt cache 失效。

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

在具備 Memory 和 Mastra storage 的 Agent 上註冊 Provider:

src/mastra/index.ts
import { Agent } from '@mastra/core/agent'
import { TaskSignalProvider } from '@mastra/core/signals'

const agent = new Agent({
id: 'coder',
name: 'coder',
instructions: '...',
model,
memory,
signals: [new TaskSignalProvider()],
})

Agent 會自動將四個任務 Tool 合併至其 toolset,並在 input processor chain 上註冊 processor,無需額外連接。

任務追蹤需要由 memory 支援的 thread(threadId + resourceId)。沒有 memory 時,任務 Tool 不會執行操作,並會傳回結果說明任務追蹤需要 Agent memory。tasks 儲存空間 domain 預設連接至記憶體內儲存空間,因此無需配置儲存空間後端亦可使用任務追蹤。

建構函數參數
建構函數參數 的直接連結

TaskSignalProvider 不接受任何建構函數參數。

屬性
屬性 的直接連結

id:

'task-signals'
Provider 實例的穩定識別碼。

方法
方法 的直接連結

Agent 整合
Agent 整合 的直接連結

當 Provider 傳遞至 signals 時,Agent 會自動呼叫這些方法。一般情況下,你不會直接呼叫它們。

getTools()
gettools 的直接連結

傳回四個以 Tool ID(task_writetask_updatetask_completetask_check)作為鍵的任務 Tool。Agent 會將這些 Tool 合併至其 toolset。

const tools = new TaskSignalProvider().getTools()
// { task_write, task_update, task_complete, task_check }

傳回:Record<string, Tool>

getInputProcessors()
getinputprocessors 的直接連結

傳回 Provider 的 TaskStateProcessor 實例。Agent 會在 input processor chain 上註冊該實例,並傳遞 Mastra 實例,讓 processor 能夠解析 tasks store。

const [processor] = new TaskSignalProvider().getInputProcessors()
// processor instanceof TaskStateProcessor

傳回:InputProcessorOrWorkflow[]