> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # TaskSignalProvider 透過單一 Agent 註冊,組合內建任務 Tool(`task_write`、`task_update`、`task_complete`、`task_check`)與 `TaskStateProcessor`。使用它可為 Agent 新增結構化、持久的任務清單,而不必分別接線 Tool 與 processor。 擴充 [`SignalProvider`](https://mastra.zisheng.pro/zh-TW/reference/signals/signal-provider)。任務清單儲存在 thread 範圍的 `tasks` Storage domain(單一真實來源)中,並由 processor 投影至 Agent 的 state-signal lane,因此即使 observational Memory 遭到裁剪,清單仍會保留,且不會使 prompt cache 失效。 ## 使用範例 在具有 `Memory` 與 Mastra `storage` 的 Agent 上註冊 Provider: ```typescript 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 合併至 Tool 集合,並在輸入 processor chain 上註冊 processor。不需要其他接線。 任務追蹤需要由 Memory 支援的 thread(`threadId` + `resourceId`)。沒有 Memory 時,任務 Tool 不會執行任何操作,而是傳回說明任務追蹤需要 Agent Memory 的結果。`tasks` Storage domain 預設在記憶體內接線,因此不必設定 Storage 後端也能使用任務追蹤。 ## Constructor 參數 `TaskSignalProvider` 不接受 constructor 引數。 ## 屬性 **id** (`'task-signals'`): Provider instance 的穩定識別碼。 ## 方法 ### Agent 整合 將 Provider 傳給 `signals` 時,Agent 會自動呼叫這些方法。通常不需直接呼叫。 #### `getTools()` 傳回以 Tool id(`task_write`、`task_update`、`task_complete`、`task_check`)作為 key 的四個任務 Tool。Agent 會將它們合併至 Tool 集合。 ```typescript const tools = new TaskSignalProvider().getTools() // { task_write, task_update, task_complete, task_check } ``` 傳回:`Record` #### `getInputProcessors()` 傳回 Provider 的 `TaskStateProcessor` instance。Agent 會將它註冊到輸入 processor chain,並傳遞 Mastra instance,讓 processor 能解析 `tasks` store。 ```typescript const [processor] = new TaskSignalProvider().getInputProcessors() // processor instanceof TaskStateProcessor ``` 傳回:`InputProcessorOrWorkflow[]`