任务管理工具
概述
任务管理工具集为 Claude Code 的多 Agent 协作提供了结构化的任务追踪机制。
TaskCreateTool
创建新任务到任务列表。
目录结构
tools/TaskCreateTool/
├── TaskCreateTool.ts # 工具主类
└── test/ # 测试输入 Schema
const inputSchema = z.object({
subject: z.string().describe('任务标题'),
description: z.string().describe('任务详情'),
activeForm: z.string().optional()
.describe('进行中显示的文本'),
metadata: z.record(z.string()).optional()
.describe('附加元数据'),
})任务状态
type TaskStatus =
| 'pending' // 等待开始
| 'in_progress' // 正在进行
| 'completed' // 已完成
| 'deleted' // 已删除任务结构
interface Task {
id: string
subject: string
description: string
status: TaskStatus
owner: string | null // 分配的 Agent
activeForm: string | null
blocks: string[] // 阻塞的任务 ID
blockedBy: string[] // 被哪些任务阻塞
metadata: Record<string, unknown>
}TaskGetTool
获取单个任务的完整信息。
输入 Schema
const inputSchema = z.object({
taskId: z.string().describe('任务 ID'),
})返回信息
{
id: "1",
subject: "Implement auth module",
description: "Add JWT authentication...",
status: "in_progress",
owner: "coder-agent",
blocks: ["3"], // 阻塞了任务 3
blockedBy: ["2"], // 被任务 2 阻塞
}TaskListTool
列出任务列表中的所有任务。
输入 Schema
const inputSchema = z.object({})返回格式
[
{ id: "1", subject: "Research API", status: "completed", owner: "researcher" },
{ id: "2", subject: "Implement auth", status: "in_progress", owner: "coder" },
{ id: "3", subject: "Write tests", status: "pending", owner: null, blockedBy: ["2"] },
]TaskUpdateTool
更新任务状态和属性。
输入 Schema
const inputSchema = z.object({
taskId: z.string().describe('任务 ID'),
status: z.enum(['pending', 'in_progress', 'completed', 'deleted']).optional(),
subject: z.string().optional(),
description: z.string().optional(),
owner: z.string().optional().describe('分配给指定 Agent'),
addBlocks: z.array(z.string()).optional()
.describe('添加此任务阻塞的任务'),
addBlockedBy: z.array(z.string()).optional()
.describe('添加阻塞此任务的任务'),
metadata: z.record(z.string()).optional(),
})状态流转
pending → in_progress → completed
deleted ← (任何状态都可以删除)依赖管理
// 设置任务依赖
await TaskUpdate({
taskId: "3",
addBlockedBy: ["2"], // 任务 3 被任务 2 阻塞
})
// 任务 2 完成后,任务 3 自动解除阻塞
await TaskUpdate({
taskId: "2",
status: "completed",
})TaskOutputTool
获取后台任务的输出。
输入 Schema
const inputSchema = z.object({
task_id: z.string().describe('任务 ID'),
block: z.boolean().optional().default(true)
.describe('是否等待完成'),
timeout: z.number().optional().default(30000)
.describe('等待超时(ms)'),
})使用场景
// 1. 启动后台 Bash 任务
const bashResult = await BashTool({
command: "npm test",
run_in_background: true,
})
// 返回: { taskId: "bg-1" }
// 2. 获取输出
const output = await TaskOutputTool({
task_id: "bg-1",
block: true,
timeout: 60000,
})TaskStopTool
停止正在运行的后台任务。
输入 Schema
const inputSchema = z.object({
task_id: z.string().describe('要停止的任务 ID'),
})任务协调模式
工作分配流程
1. Team Lead 创建任务
TaskCreate({ subject: "Research", description: "..." })
TaskCreate({ subject: "Implement", description: "..." })
TaskCreate({ subject: "Test", description: "..." })
2. 设置依赖
TaskUpdate({ taskId: "3", addBlockedBy: ["2"] })
3. 分配任务
TaskUpdate({ taskId: "1", owner: "researcher" })
TaskUpdate({ taskId: "2", owner: "coder" })
4. Agent 查看可用任务
TaskList() → 找到 pending + 无阻塞 + 分配给自己的任务
5. 完成任务
TaskUpdate({ taskId: "1", status: "completed" })优先级策略
Agent 选择任务时遵循以下策略:
- 优先选择 ID 最小的任务(先创建的)
- 跳过被阻塞的任务(blockedBy 非空)
- 跳过已分配给其他 Agent 的任务
- 选择状态为
pending的任务
Last updated on