Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

tasks 模块 — 5 个任务类型子目录

路径: src/tasks/ 子目录: DreamTask/, InProcessTeammateTask/, LocalAgentTask/, LocalShellTask/, RemoteAgentTask/


1. DreamTask/ — 后台推理/记忆整合

文件: DreamTask.ts (158 行)

interface DreamTaskState extends TaskStateBase {
  type: 'dream'
  phase: 'starting' | 'updating'
  turns: DreamTurn[]       // 最近 30 轮
  touchedFiles: string[]   // Edit/Write 触及的文件
}

生命周期: registerDreamTask() → phase:starting → 首次工具调用 → phase:updating → completeDreamTask()


2. InProcessTeammateTask/ — 进程内队友协作

文件: types.ts (122 行) + InProcessTeammateTask.tsx (126 行)

interface TeammateIdentity {
  agentId: AgentId
  agentName: string       // 如 "reviewer"
  teamName: string        // 如 "code-review-team"
  color: string           // UI 区分颜色
  planModeRequired: boolean
  parentSessionId: string
}
  • 消息上限 50 条(FIFO,防 36.8GB 内存膨胀)
  • AsyncLocalStorage 实现并发 Agent 隔离
  • 邮箱消息系统用于 Agent 间通信

3. LocalShellTask/ — Shell 命令执行

文件: guards.ts (42 行) + killShellTasks.ts (77 行) + LocalShellTask.tsx (522 行)

type BashTaskKind = 'bash' | 'monitor'
// bash: 标准命令,有完成通知
// monitor: 流式输出,无完成通知(如 tail -f)
  • 卡住检测: 45 秒阈值,每 5 秒检查
  • 交互式提示模式检测: (y/n), [y/n], Press any key, Enter password
  • 僵尸进程清理: killShellTasksForAgent() 防止 10 天僵尸

4. LocalAgentTask/ — 本地子 Agent

文件: LocalAgentTask.tsx (682 行)

interface ProgressTracker {
  inputTokens: number
  outputTokens: number
  toolActivities: ToolActivity[]
  startTime: number
  lastActivityTime: number
}
  • Token 计数(input + output,缓存感知)
  • 消息队列(后台 Agent 的 pending messages)
  • 磁盘输出(JSONL 文件,带驱逐策略)
  • AbortController 取消

5. RemoteAgentTask/ — 远程 Agent(最大,855 行)

文件: RemoteAgentTask.tsx (855 行)

type RemoteTaskType =
  | 'remote-agent'     // 通用远程
  | 'ultraplan'        // 超级计划
  | 'ultrareview'      // 超级审查
  | 'autofix-pr'       // 自动修复 PR
  | 'background-pr'    // 后台 PR

前置条件检查链:

登录? → 远程环境? → Git 仓库? → GitHub 远程? → GitHub App?

Ultraplan 阶段: needs_input(◇) → plan_ready(◆) → executing

元数据持久化到会话 sidecar 文件,支持跨会话恢复。