Claude Code 支持后台任务、子 Agent、团队协作等多种并行执行模式。
一、任务类型
type TaskType = | 'local_bash' | 'local_agent' | 'remote_agent' | 'in_process_teammate' | 'local_workflow' | 'monitor_mcp' | 'dream'
type TaskStatus = | 'pending' | 'running' | 'completed' | 'failed' | 'killed'
|
二、Task ID 设计
const TASK_ID_PREFIXES: Record<string, string> = { local_bash: 'b', local_agent: 'a', remote_agent: 'r', in_process_teammate: 't', local_workflow: 'w', monitor_mcp: 'm', dream: 'd', };
export function generateTaskId(type: TaskType): string { const prefix = getTaskIdPrefix(type); const bytes = randomBytes(8); let id = prefix; for (let i = 0; i < 8; i++) { id += TASK_ID_ALPHABET[bytes[i]! % TASK_ID_ALPHABET.length]; } return id; }
|
三、Agent 系统
主 Agent (REPL) │ ├─ AgentTool("分析这个 bug") │ │ │ └─ 子 Agent 1 (独立上下文) │ ├─ FileRead → 读取相关文件 │ ├─ Grep → 搜索错误模式 │ └─ 返回分析结果给主 Agent │ ├─ AgentTool("写单元测试") │ │ │ └─ 子 Agent 2 (独立上下文) │ ├─ FileRead → 读取被测代码 │ ├─ FileWrite → 创建测试文件 │ ├─ BashTool → 运行测试 │ └─ 返回测试结果 │ └─ 主 Agent 综合所有子 Agent 结果
|
3.2 Agent 定义
type AgentDefinition = { name: string; slug: string; description: string; prompt: string; model?: string; tools?: string[]; mcpServers?: McpServerConfig[]; maxTokens?: number; isBuiltIn: boolean; };
|
3.3 Agent 执行隔离
export function createSubagentContext(parentContext: ToolUseContext) { return { toolPermissionContext: parentContext.toolPermissionContext, mcpClients: parentContext.options.mcpClients,
messages: [], readFileCache: createFileStateCacheWithSizeLimit(), abortController: new AbortController(),
tools: resolveAgentTools(agentDefinition, parentContext.options.tools), }; }
|
四、Coordinator 模式
export function isCoordinatorMode(): boolean { return isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE); }
|
Coordinator 用户上下文
export function getCoordinatorUserContext( mcpClients, scratchpadDir, ): { [k: string]: string } { }
|
五、Agent Swarms (团队模式)
Worktree 模式
async function createAgentWorktree(agentId: string): Promise<string> { }
async function removeAgentWorktree(agentId: string): Promise<void> { }
|
六、后台任务管理
6.1 Shell 任务
export function spawnShellTask(input: LocalShellSpawnInput): TaskHandle { }
export function backgroundExistingForegroundTask(taskId: string): void; export function registerForeground(taskId: string): void; export function unregisterForeground(taskId: string): void;
|
6.2 任务输出读取
type TaskState = { outputFile: string; outputOffset: number; };
function readTaskOutput(task: TaskState): string { const content = readFromOffset(task.outputFile, task.outputOffset); task.outputOffset += content.length; return content; }
|
七、Task Status 状态机
pending → running → completed → failed → killed
任何状态 → killed (外部终止)
|
export function isTerminalTaskStatus(status: TaskStatus): boolean { return status === 'completed' || status === 'failed' || status === 'killed'; }
|
八、In-Process Teammate
export function injectUserMessageToTeammate( agentId: AgentId, message: string, ): void { }
|
九、任务工具集成
| 工具 |
功能 |
TaskCreateTool |
创建新任务 (bash/agent) |
TaskGetTool |
获取任务状态和输出 |
TaskUpdateTool |
更新任务描述/状态 |
TaskListTool |
列出所有任务 |
TaskStopTool |
终止任务 |
TaskOutputTool |
读取任务输出 |
TodoWriteTool |
管理 TODO 列表 |