XCode 并行任务

XCode 提供了多种并行执行任务的机制,让你可以同时处理多个工作项,显著提升开发效率。本章将介绍三种主要的并行化方案:Subagents(子代理)、Agent Teams(代理团队)和 Git Worktree(Git 工作树),帮助你根据不同的使用场景选择最合适的方式。

---

并行任务概述

| 机制 | 适用场景 | 协作方式 | 复杂度 | |------|----------|----------|--------| | Subagents | 专注型任务,只需关注结果 | 单向汇报(结果返回主代理) | 低 | | Agent Teams | 需要讨论与协作的复杂工作 | 多向通信(队友直接互发消息) | 中 | | Git Worktree | 多个任务需要隔离的代码环境 | 完全独立(各自的工作目录) | 中 |

> 选择建议: > - 只需并行处理、相互独立的子任务 → 使用 Subagents > - 需要多个 Agent 相互讨论、协调工作 → 使用 Agent Teams > - 多个任务需要操作同一仓库的不同分支 → 使用 Git Worktree

---

Subagents(子代理)

内置 Subagents

| Agent | 模型 | 工具 | 用途 | |-------|------|------|------| | Explore | Haiku(快速、低延迟) | 只读工具 | 文件发现、代码搜索、代码库探索 | | Plan | 继承主对话 | 只读工具 | 规划模式下的代码库研究 | | General-purpose | 继承主对话 | 所有工具 | 复杂研究、多步骤操作、代码修改 | | statusline-setup | Sonnet | — | 运行 /statusline 配置状态行 | | XCode Guide | Haiku | — | 解答 XCode 功能问题 |

调用 Subagent

方式一:自然语言

Use the test-runner subagent to fix failing tests

方式二:@-mention

@"code-reviewer (agent)" look at the auth changes

方式三:命令行启动

xcode --agent code-reviewer

前台与后台运行

---

Git Worktree 支持

什么是 Git Worktree

Git Worktree 是 Git 的一个功能,允许你在同一个仓库上挂载多个独立的工作目录。每个工作目录有自己的分支、自己的 HEAD、自己的暂存区,但共用同一个 .git 数据库(历史记录、对象存储)。

> 日常生活比喻:"同一家公司(主仓库)有多个办公室(worktree),每个办公室有不同的团队(Agent),各自处理不同的项目(分支),但都共享公司的数据库(.git)和历史记录。"

使用 Git Worktree

命令行启动

# 创建 feature-auth 分支的工作树
xcode -w feature-auth

同时创建 tmux 会话

xcode -w feature-auth --tmux

使用传统 tmux

xcode -w feature-auth --tmux=classic

CLI 参数

| 参数 | 描述 | 示例 | |------|------|------| | --worktree, -w | 在隔离的 git worktree 中启动 XCode | xcode -w feature-auth | | --tmux | 为 worktree 创建 tmux 会话 | xcode -w feature-auth --tmux |

Worktree 创建位置:/.xcode/worktrees/

Subagent + Worktree 隔离

可以让自定义 Subagent 始终在自己的 worktree 中运行:

---
name: background-refactorer
description: Background refactoring agent
isolation: worktree
---

---

使用示例

示例一:并行代码审查

Use the security-reviewer subagent to check for security issues
Use the performance-reviewer subagent to analyze performance impact
Use the test-coverage subagent to validate test coverage

示例二:并行研究

Research the authentication, database, and API modules in parallel using separate subagents

示例三:多分支开发

# 终端 1:重构用户模块
xcode -w feature/user-refactor

终端 2:修复登录 bug

xcode -w bugfix/login-issue

终端 3:开发新功能

xcode -w feature/new-dashboard

示例四:链接 Subagent

Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

---

最佳实践

Subagent 最佳实践

1. 保持专注:每个 Subagent 应有明确、单一的任务 2. 限制工具:根据任务需要限制 Subagent 的工具访问权限 3. 选择合适模型:简单任务使用 Haiku,复杂任务使用 Sonnet 或 Opus 4. 使用后台运行:长时间任务使用后台 Subagent,避免阻塞主对话 5. 恢复 Subagent:需要继续工作时,要求 XCode 恢复 Subagent

Agent Teams 最佳实践

1. 给队友足够的上下文:在生成提示中包含特定于任务的详细信息 2. 选择适当的团队规模:大多数工作流从 3-5 个队友开始 3. 适当调整任务大小:每个队友 5-6 个任务,保持生产力 4. 等待队友完成:告诉负责人等待队友完成任务后再进行 5. 从研究和审查开始:从不需要编写代码的任务开始 6. 避免文件冲突:分解工作使每个队友拥有不同的文件集 7. 监控和指导:检查进度,重定向不起作用的方法

Git Worktree 最佳实践

1. 每个任务一个 Worktree:避免在同一个 worktree 中处理多个不相关的任务 2. 使用 tmux 管理:同时运行多个 XCode 会话时,使用 tmux 便于切换 3. 清理不需要的 Worktree:任务完成后及时删除 worktree

---

故障排除

| 问题 | 解决方案 | |------|----------| | 队友未出现 | 检查任务是否足够复杂、tmux 是否安装 | | 过多权限提示 | 在权限设置中预批准常见操作 | | 队友在错误后停止 | 检查输出并给予额外指示或生成替代队友 | | 负责人提前关闭 | 告诉负责人继续或等待队友完成 | | 孤立的 tmux 会话 | 使用 tmux ls 和 tmux kill-session -t 清理 |