跳到主要内容

TaskSignalProvider

通过单个 Agent 注册捆绑内置任务 Tool(task_writetask_updatetask_completetask_check)和 TaskStateProcessor。使用它可为 Agent 添加结构化、持久的任务列表,无需分别连接 Tool 和处理器。

它扩展了 SignalProvider。任务列表存储在以 thread 为作用域的 tasks storage domain 中(作为事实来源),并由处理器投影到 Agent 的状态 Signal 通道,因此它能在观察性 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 合并到其 Tool 集中,并在其 input-processor chain 上注册处理器。无需其他连接操作。

任务跟踪需要由 memory 支持的 thread(threadId + resourceId)。没有 memory 时,任务 Tool 不执行任何操作,并返回说明任务跟踪需要 Agent memory 的结果。tasks storage domain 默认在内存中连接,因此无需配置 storage 后端即可使用任务跟踪。

构造函数参数
构造函数参数的直接链接

TaskSignalProvider 不接受构造函数参数。

属性
属性的直接链接

id:

'task-signals'
Provider 实例的稳定标识符。

方法
方法的直接链接

Agent 集成
Agent 集成的直接链接

当 Provider 传入 signals 时,Agent 会自动调用这些方法。通常无需直接调用它们。

getTools()
gettools的直接链接

返回以 Tool id(task_writetask_updatetask_completetask_check)为键的四个任务 Tool。Agent 会将它们合并到其 Tool 集中。

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 实例,以便处理器解析 tasks store。

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

返回:InputProcessorOrWorkflow[]