> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Task tools Agent の実行における構造化されたタスクリストを管理する、Agent に依存しない4つの組み込み Tool です。タスクリストはスレッドスコープの `threadState` ストレージドメインに永続化され、Agent の [state-signal](https://mastra.zisheng.pro/ja/docs/long-running-agents/signals) レーンに投影されるため、[observational-memory](https://mastra.zisheng.pro/ja/docs/memory/observational-memory) による切り詰め後も保持されます。 タスク追跡には、メモリを利用するスレッド(`threadId` + `resourceId`)が必要です。メモリがない場合、Task tools はタスク追跡に Agent のメモリが必要であることを示すエラーを返します。 推奨される設定は [`TaskSignalProvider`](https://mastra.zisheng.pro/ja/reference/signals/task-signal-provider) です。4つの Tool と `TaskStateProcessor` を1回の登録にまとめられます。概念ガイドについては、[組み込み Tool](https://mastra.zisheng.pro/ja/docs/agents/using-tools) を参照してください。 ## 使用例 ```typescript 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 を直接インポートすることもできます。 ```typescript 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` タスクリスト全体を作成または置換します。呼び出すたびに、それまでのリストが置き換えられます。 ### 入力スキーマ **tasks** (`TaskItemInput[]`): 更新後の完全なタスクリスト。 **tasks.id** (`string`): 安定したタスク識別子(例: 'task\_investigate\_tests')。更新をまたいで変更しないでください。省略すると自動生成されます。 **tasks.content** (`string`): 命令形のタスク説明(例: 'Fix authentication bug')。 **tasks.status** (`'pending' | 'in_progress' | 'completed'`): 現在のタスクステータス。 **tasks.activeForm** (`string`): 実行中に表示する現在進行形(例: 'Fixing authentication bug')。 ### 出力 人が読める `content` の概要、割り当てられた ID を含む完全な `tasks` 配列、`isError` フラグを持つ `TaskToolResult` を返します。 ### 動作 - 1回の呼び出し内で ID は一意でなければなりません。明示的に指定した ID が重複している場合は、代替 ID が生成されます。 - 既存のリストを書き換える際に ID を省略すると、曖昧さなく一致するタスクが1つだけ存在する場合、その以前の ID が安定性のため再利用されます。 - `in_progress` ステータスにできるタスクは一度に1つだけです。複数の `in_progress` タスクを送信するとエラーが返されます。 ## `task_update` 安定した ID を使って1つのタスクを更新します。変更したフィールドだけを指定してください。 ### 入力スキーマ **id** (`string`): 更新するタスクの安定した識別子。 **content** (`string`): 命令形の新しいタスク説明。 **status** (`'pending' | 'in_progress' | 'completed'`): 新しいタスクステータス。 **activeForm** (`string`): 新しい現在進行形。 `content`、`status`、`activeForm` のうち少なくとも1つが必要です。 ### 動作 - 更新によってタスクを `in_progress` に設定すると、それ以外の `in_progress` タスクは自動的に `pending` に戻されます。 - ID が見つからない場合、利用可能なタスク ID とともにエラーを返します。 ## `task_complete` 安定した ID を使って1つのタスクを完了済みにします。 ### 入力スキーマ **id** (`string`): 完了済みにするタスクの安定した識別子。 ### 動作 ID が見つからない場合、利用可能なタスク ID とともにエラーを返します。 ## `task_check` タスクリストの完了ステータスを確認します。入力パラメーターはありません。 ### 出力 次の内容を持つ `TaskCheckResult` を返します。 **content** (`string`): タスク数と未完了タスクの ID を含む、人が読める概要。 **tasks** (`TaskItem[]`): 安定した ID を含むタスクリスト全体のスナップショット。 **summary** (`TaskCheckSummary`): 構造化された件数。 **summary.total** (`number`): 追跡中のタスク総数。 **summary.completed** (`number`): 完了済みのタスク数。 **summary.inProgress** (`number`): 進行中のタスク数。 **summary.pending** (`number`): 保留中のタスク数。 **summary.incomplete** (`number`): まだ完了していないタスク数(進行中 + 保留中)。 **summary.hasTasks** (`boolean`): タスクが1つ以上存在する場合は true。 **summary.allCompleted** (`boolean`): タスクが1つ以上存在し、すべてのタスクが完了している場合は true。 **incompleteTasks** (`TaskItem[]`): 引き続き対応が必要なタスク(進行中および保留中)。 **isError** (`boolean`): 確認中にエラーが発生したかどうか。