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 文件,支持跨会话恢复。