Task Tools
這四個不限定 Agent 的內建 Tool,可管理 Agent 執行期間的結構化任務清單。任務清單會保存在 thread 範圍的 threadState 儲存網域,並投射至 Agent 的 state-signal lane,因此即使 observational-memory 截斷內容,任務清單仍會保留。
任務追蹤需要由 Memory 支援的 thread(threadId + resourceId)。若沒有 Memory,Tool 會回傳錯誤,說明任務追蹤需要 Agent Memory。
建議使用 TaskSignalProvider 進行設定,它會在一次註冊中整合四個 Tool 與 TaskStateProcessor。概念說明請參閱內建 Tool。
使用範例「使用範例」的直接連結
src/mastra/agents/index.ts
import { Agent } from '@mastra/core/agent'
import { Memory } from '@mastra/memory'
import { TaskSignalProvider } from '@mastra/core/signals'
const agent = new Agent({
id: 'coder',
name: 'Coder',
instructions: 'Track your progress with the task tools.',
model,
memory: new Memory(),
signals: [new TaskSignalProvider()],
})
或直接匯入 Tool:
src/mastra/agents/index.ts
import { taskWriteTool, taskUpdateTool, taskCompleteTool, taskCheckTool } from '@mastra/core/tools'
const agent = new Agent({
id: 'coder',
name: 'Coder',
instructions: 'Track your progress with the task tools.',
model,
memory: new Memory(),
tools: { taskWriteTool, taskUpdateTool, taskCompleteTool, taskCheckTool },
})
task_write「task_write」的直接連結
建立或取代整份任務清單。每次呼叫都會取代先前的清單。
輸入 schema「輸入 schema」的直接連結
tasks:
TaskItemInput[]
更新後的完整任務清單。
TaskItemInput
id?:
string
穩定的任務識別碼(例如 'task_investigate_tests')。更新時請保持不變。省略時會自動產生。
content:
string
使用祈使語氣撰寫的任務說明(例如 'Fix authentication bug')。
status:
'pending' | 'in_progress' | 'completed'
目前的任務狀態。
activeForm:
string
執行期間顯示的現在進行式文字(例如 'Fixing authentication bug')。
輸出「輸出」的直接連結
回傳 TaskToolResult,其中包含便於閱讀的 content 摘要、已指派 ID 的完整 tasks 陣列,以及 isError 旗標。
行為「行為」的直接連結
- 同一次呼叫中的 ID 必須是唯一值。明確提供的重複 ID 會改用產生的備援 ID。
- 重寫現有清單時若省略 ID,只有在恰好有一項明確相符的任務時,才會沿用先前的 ID 以維持穩定性。
- 同一時間只能有一項任務處於
in_progress狀態。提交多項in_progress任務會回傳錯誤。
task_update「task_update」的直接連結
使用穩定 ID 更新一項任務。只需包含已變更的欄位。
輸入 schema「輸入 schema」的直接連結
id:
string
要更新的穩定任務識別碼。
content?:
string
使用祈使語氣撰寫的新任務說明。
status?:
'pending' | 'in_progress' | 'completed'
新的任務狀態。
activeForm?:
string
新的現在進行式文字。
必須至少提供 content、status 或 activeForm 其中一項。
行為「行為」的直接連結
- 當更新將某項任務設為
in_progress時,其他處於in_progress的任務會自動降為pending。 - 找不到 ID 時,會回傳錯誤以及可用的任務 ID。
task_complete「task_complete」的直接連結
使用穩定 ID 將一項任務標示為已完成。
輸入 schema「輸入 schema」的直接連結
id:
string
要標示為已完成的穩定任務識別碼。
行為「行為」的直接連結
找不到 ID 時,會回傳錯誤以及可用的任務 ID。
task_check「task_check」的直接連結
檢查任務清單的完成狀態。不接受任何輸入參數。
輸出「輸出」的直接連結
回傳包含下列內容的 TaskCheckResult:
content:
string
便於閱讀的摘要,包含任務數量與未完成任務 ID。
tasks:
TaskItem[]
包含穩定 ID 的完整任務清單快照。
summary:
TaskCheckSummary
結構化數量統計。
TaskCheckSummary
total:
number
追蹤的任務總數。
completed:
number
已完成的任務數。
inProgress:
number
進行中的任務數。
pending:
number
待處理的任務數。
incomplete:
number
尚未完成的任務數(進行中 + 待處理)。
hasTasks:
boolean
至少有一項任務時為 true。
allCompleted:
boolean
至少有一項任務且所有任務都已完成時為 true。
incompleteTasks:
TaskItem[]
仍需處理的任務(進行中與待處理)。
isError:
boolean
檢查過程是否發生錯誤。