Skip to content

任务系统

src/tasks/ 管理后台任务的创建、调度和持久化。

任务类型

typescript
// 7 种任务类型
type TaskType =
  | 'local_bash'           // 本地 Bash 任务
  | 'local_agent'          // 本地 Agent 任务
  | 'remote_agent'         // 远程 Agent 任务
  | 'in_process_teammate'  // 进程内队友
  | 'local_workflow'       // 本地工作流
  | 'monitor_mcp'          // 监控 MCP
  | 'dream'                // 后台思考

任务状态机

┌───────────┐
│  pending   │ ──创建──→ ┌──────────┐
└───────────┘           │ running   │
                        └────┬─────┘
                   ┌─────────┼─────────┐
                   ▼         ▼         ▼
            ┌──────────┐ ┌────────┐ ┌─────────┐
            │completed │ │ failed │ │  killed │
            └──────────┘ └────────┘ └─────────┘

任务基类

typescript
interface TaskStateBase {
  id: string
  type: TaskType
  status: 'pending' | 'running' | 'completed' | 'failed' | 'killed'
  description: string
  toolUseId?: string
  startTime: number
  endTime?: number
  totalPausedMs?: number
  outputFile: string
  outputOffset: number
  notified: boolean
}

定时调度

useScheduledTasks.ts 是一个 React Hook,在 useEffect 中管理定时任务的生命周期。

主要调度的任务:

  • 记忆提取:定期检查并提取会话记忆(需启用自动记忆功能)
  • 自动压缩:定期检查对话历史并在需要时执行压缩

组件卸载时自动清理所有定时器。

持久化

任务状态持久化到 ~/.claude/tasks/

~/.claude/tasks/
├── compact-{timestamp}.json
├── extract_memories-{timestamp}.json
└── ...

与工具系统的交互

任务系统通过 5 个任务工具暴露给 AI:

工具功能
TaskCreate创建新任务
TaskGet读取任务状态
TaskUpdate更新任务状态
TaskStop停止任务
TaskList列出所有任务

详见 任务工具文档