1. AgentTool 基础定义与架构解析
在ClaudeCode的架构设计中,AgentTool扮演着核心调度枢纽的角色。这个元工具的设计理念源于现代软件工程中的"单一职责原则"——每个组件应该专注于做好一件事。当主Agent遇到需要特定专业能力或隔离环境的任务时,通过AgentTool将任务委派给专门的子Agent执行。
1.1 核心能力实现原理
任务委派机制的实现依赖于三个关键组件:
- 动态Agent加载系统:通过
loadAgentByName函数从预定义的Agent目录加载特定配置 - 环境隔离控制器:提供不同级别的隔离方案(从无隔离到完整工作树隔离)
- 资源配额管理器:为每个子Agent分配独立的计算资源和执行轮次限制
在代码层面,隔离执行通过Git Worktree技术实现。当设置isolation: 'worktree'时,系统会:
typescript复制// 创建工作树隔离环境示例代码
const worktreeSession = await createWorktree(`agent-${agentName}-${Date.now()}`)
这会在项目仓库中创建一个临时工作目录,所有文件操作都被限制在该目录内。这种设计既保证了隔离性,又保留了版本控制能力。
注意:工作树隔离模式会禁用并发执行(
isConcurrencySafe: false),因为Git仓库在同一时间只能有一个活跃的工作树操作。
1.2 类型系统与输入验证
AgentTool使用Zod库构建了严格的输入验证体系:
typescript复制inputSchema: z.object({
description: z.string().describe('Task description for the sub-agent'),
agent: z.string().describe('Name of the agent to use'),
model: z.string().optional().describe('Override agent model'),
tools: z.array(z.string()).optional().describe('Override al
