XCode 子代理(Subagent)

在 XCode 中,你可以创建 专门的 AI 子代理(Subagent),用于处理特定类型的任务,从而获得更好的上下文隔离、更强的约束控制和更高的执行效率。

子代理运行在 独立的上下文窗口 中,每个子代理都可以拥有独立的系统提示、指定的模型、明确的工具访问权限、独立的权限模式,以及跨会话的持久记忆。当 XCode 判断你的请求符合某个子代理的描述时,会自动将任务委托给它,由子代理独立完成后返回结果。

> 子代理只接收自身的系统提示和基础环境信息(如工作目录), 不会继承完整的 XCode 系统提示,这保证了行为的纯净和可控。

---

为什么要使用子代理

子代理的核心价值在于 隔离 + 专业化,主要体现在以下几个方面:

保留主对话上下文:把探索、日志分析等"重任务"放到子代理中,主对话只接收结论摘要,不被大量中间输出淹没。研究表明,并行运行三个子代理分析 5 万行项目约需 45 秒,而串行执行需要 3 分钟。

强制执行约束:通过工具白名单或黑名单限制子代理的能力,例如只读分析、禁止执行危险命令。

行为专业化:为特定领域(代码审查、调试、数据分析)设计专用 AI,在系统提示中明确指出代理的能力边界,避免不必要的调用。

控制成本:将简单任务交给 Haiku,将复杂分析交给 Sonnet,通过环境变量 XCODE_SUBAGENT_MODEL 统一设置所有子代理使用的模型。

跨项目复用:用户级子代理一次配置,所有项目可用。

---

子代理 vs 多代理

| 对比项 | 子代理(Subagent) | 多代理(Multi-agent) | |--------|-------------------|----------------------| | 运行范围 | 在单个 XCode 会话内启动,处理子任务后返回结果 | 多个 XCode 会话并行或串行运行,通常由编排器管理 | | 上下文 | 独立上下文窗口,与主对话隔离 | 各会话上下文完全独立 | | 嵌套 | 子代理不能再创建子代理(需嵌套时使用 Skills) | 可由编排器协调多层级任务 | | 适用场景 | 聚焦子任务、大量输出隔离、专业分析 | 全功能开发流水线(设计 → 实现 → 测试 → 发布) |

---

内置子代理

1、Explore(探索代理)

用于只读搜索与分析代码库。模型默认使用 Haiku(速度快、延迟低),只开放只读工具(不能 Edit / Write)。当 XCode 需要查看代码但不修改代码时,会自动使用 Explore 代理。支持不同探索深度: quick、 medium、 very thorough。

2、Plan(规划代理)

在计划模式下收集代码库信息,帮助 XCode 理解项目结构,为后续方案制定积累上下文。只开放只读工具,在不产生嵌套代理的前提下安全地收集规划所需信息。

3、General-purpose(通用代理)

用于复杂、多步骤任务,开放全部工具,继承主对话的模型。适合"看 + 改 + 推理"的综合场景,以及需要多步骤代码修改的任务。

4、其他内部代理

| 代理名称 | 说明 | |----------|------| | Bash | 在独立上下文中运行 Shell 命令 | | statusline-setup | 配置终端状态栏显示 | | XCode Guide | 解答 XCode 使用相关问题 |

---

创建你的第一个子代理

1、打开子代理管理界面

在 XCode 中执行以下命令,打开完整的子代理管理界面:

/agents

该界面提供所有子代理管理能力:查看全部可用代理(内置 / 用户级 / 项目级 / 插件)、创建新代理、编辑已有代理,以及在同名冲突时查看哪个版本实际生效。

2、选择创建用户级子代理

在界面中选择 Create new agent,然后选择 Project (.xcode/agents/),代理文件会保存到当前目录的 .xcode/agents/ 目录下,如果选择 ~/.xcode/agents/ 目录,则对所有项目生效。

3、描述代理的职责

我们可以直接用自然语言告诉 XCode 这个代理要做什么,XCode 会自动生成系统提示和初始配置。例如:

一个代码改进代理,扫描项目文件,
针对可读性、性能和最佳实践提出建议,
并给出改进示例。

生成完成后,按 e 键可以手动编辑所有配置内容。

4、配置工具权限与模型