本地电脑一关,Agent 任务就停在半路,重新打开 VS Code 后还找不到完整上下文。
最快解法:把 Agent Host 部署在靠近代码仓库和 Xcode 工具链的独立云端 Mac 上,通过 SSH 或开发隧道连接,并为每个任务创建隔离工作树;但会话持久化不等于执行环境已经安全隔离。
这篇教程适合谁,以及你要先接受的边界
如果你是需要让 GitHub Copilot、Claude 或 Codex 在 Xcode 项目中执行长任务的 iOS、macOS 开发者,这篇内容适合你。
如果你负责集中管理多个远程 Agent 会话、工作树、凭据和弹性容量,也可以直接按后面的验收条件执行。
最后更新于 2026 年 9 月 3 日,功能状态与部署路径核实自 VS Code 官方架构、远程连接、AI 设置、MCP 与 Apple Xcode 文档。
先区分 5 个对象:Agent Host 负责保存会话、运行 Agent harness,并在远程工作区执行文件修改与命令;Agent harness 决定 Copilot、Claude 或 Codex 如何运行;模型提供方负责推理服务;VS Code 是客户端;云端 Mac 才是真正执行 xcodebuild、脚本、浏览器和 MCP 工具的环境。
官方架构说明确认,Agent Host 可以作为本地进程或远程独立服务运行,客户端通过 Agent Host Protocol,也就是 AHP,连接会话;远程运行时,文件编辑和命令执行发生在远程机器上。AHP 仍处于持续开发阶段,所以不要把预览功能当成企业级稳定承诺。可先查看 VS Code Agent Host 架构说明。
你还需要先判断是否真的要云端 Mac:
- 只运行跨平台脚本、后端测试或文档任务:Linux 或本地环境可能更简单。
- 需要 Xcode、Simulator、
xcodebuild、签名工具或 macOS 专属测试:云端 Mac 才有明确价值。 - 需要物理 iPhone、USB 调试或本地钥匙串交互:普通远程 Mac 不一定能满足,必须先确认硬件接入与人工操作路径。
- 需要长期满负载、多团队共享同一环境:共享主机的权限、磁盘和构建缓存会成为隐性成本,任务级独占环境通常更容易审计。
先做职责和风险分界:持久会话不是沙箱
Agent Host 解决的是“客户端关闭后会话还能不能继续”的问题,不自动解决以下 3 类风险。
第一,代码修改可能直接落在会话文件夹或工作树中。你需要查看差异后再提交、合并或丢弃,而不能假定所有改动都会先停留在待批准区。会话的启动、接管和清理方式,应以 VS Code 会话管理文档 为准。
第二,客户端提供的工具不一定在客户端断开后继续可用。浏览器工具或扩展贡献的工具可能路由回提供它们的客户端;如果客户端退出,Agent Host 仍可能继续运行,但某些工具调用无法完成。
第三,远程 Mac 上的凭据、SSH 密钥、Apple 签名证书和环境变量都可能被 Agent 触及。因此上线前要写清楚 4 件事:代码目录、允许调用的工具、凭据范围、任务结束后的清理责任。对于高权限操作,保留人工批准,不要为了减少中断而直接启用“跳过所有权限检查”的模式;VS Code 的 AI 设置参考 也将部分权限与 Claude Agent 标记为实验性或仅适合隔离环境。
⚠️ 经验:如果你无法回答“这个 Agent 能读哪些目录、能执行哪些命令、异常退出后谁撤销凭据”,就不要把远程 Agent Host 当作生产入口。
第一小时连接:SSH 还是开发隧道更适合云端 Mac?
两条路径都能让 Agents window 连接远程 Agent Host,但运维责任不同。先选团队长期能管理的一条,不要把临时测试连接直接当成生产入口。
| 决策维度 | SSH | 开发隧道 |
|---|---|---|
| 网络入口 | 远程 Mac 需要可通过 SSH 访问 | 远程 Mac 主动建立出站隧道,通常不需要开放入站端口 |
| 身份验证 | SSH 用户、密钥、跳板机和主机策略 | 需要经过身份验证的账户与隧道 |
| 适合场景 | 平台团队已有主机目录、密钥轮换和审计体系 | 远程 Mac 位于受限网络,或需要从浏览器快速接管 |
| 主要风险 | 暴露 SSH 入口、密钥过期、用户权限过宽 | 匿名隧道可能让获得地址的人启动 Agent 会话 |
| 回退方式 | 检查 SSH、进程和本地端口转发 | 关闭隧道并改用受控 SSH |
| 本文评分 | 4.5 / 5 | 4 / 5 |
通过 SSH 时,Agents window 会在远程机器上自动安装并启动 VS Code CLI,前提是远程 Mac 已可访问 SSH;具体流程见 远程 Agent 会话文档。通过开发隧道时,必须要求身份验证,不能使用匿名访问,否则持有隧道地址的人可能启动带有你凭据的 Agent 会话。 Remote Tunnels 安全文档 对认证、出站连接和加密方式有进一步说明。
在远程 Mac 上准备基础环境:
mkdir -p ~/agent-host
cd ~/agent-host
git clone <你的仓库地址> workspace
cd workspace
git status
xcode-select -p
xcodebuild -version
然后确认 Xcode 是当前开发者目录。Apple 的 Xcode 命令行工具参考 说明,xcodebuild、simctl 和 devicectl 等工具随 Xcode 提供,调用前必须安装 Xcode 并设置活动开发者目录。
如果使用独立 Agent Host,按照当前官方文档运行:
code agent host
该命令默认在本机启动服务,并使用连接令牌保护访问;如果采用开发隧道,再使用对应的 --tunnel 选项。启动后保存 4 项证据:VS Code 版本、启动命令、连接主体、首次连通时间。若命令不存在或设置项名称不同,停止部署并重新核对当前稳定版文档,不要凭旧教程猜测参数。
首个任务:用隔离工作树验证 Agent Host 云端 Mac 部署
不要一上来让 Agent 重构整个应用。先从一个可逆的小任务开始,例如新增一个单元测试、修复一个明确的编译错误,或者调整一个不涉及签名与发布的 Swift 文件。
建议按下面 5 步执行:
- 为任务创建独立分支和工作树,目录名包含任务编号,避免多个 Agent 同时写入同一目录。
- 在 VS Code 的 Agents window 中选择目标工作区,再明确选择 Copilot、Claude 或 Codex harness。
- 记录账号、模型入口和权限模式;不要假设 3 个 harness 的工具、上下文处理和批准机制完全一致。
- 让 Agent 只执行一个小修改,并要求它输出修改文件、执行命令和测试结果。
- 检查
git diff、测试日志、生成制品和工作树状态,再决定提交、丢弃或恢复。
多个并行任务不要共享同一个工作树。一个任务负责修复测试,另一个任务负责界面改动时,应分别创建工作树;否则即使会话上下文彼此独立,文件系统变更仍可能互相覆盖。你可以进一步阅读 Git worktree 隔离并行 Agent 任务的方法,把“会话独立”和“代码目录独立”分开验收。
Agent Host 支持多个客户端观察和控制同一会话;同一会话中的多个聊天可以共享工作区和工作树,但它们的对话历史仍然独立。这里要注意,多窗口接管解决的是会话访问问题,不是并发写入冲突问题。
关闭本地电脑后会继续吗?多窗口接管如何验收?
只关闭本地电脑或编辑器窗口,不能单独证明部署成功。你要把 3 种故障分开测试:客户端网络断开、远程 Mac 重启、Agent Host 进程退出。
先让一个代表性任务进入执行状态,例如运行测试并生成结果文件,然后关闭本地 VS Code 窗口。等待任务进入一个容易识别的阶段,再从第二个 VS Code 窗口或受支持的浏览器入口重新连接,核对:
- 会话状态是否仍为运行中、已完成或等待确认;
- 终端输出是否连续,是否能看到断线前后的时间点;
- 变更文件和差异是否与远程工作树一致;
- 待确认的命令是否仍需要人工批准;
- 原客户端和新客户端是否显示同一个会话,而不是复制出新任务。
Agent Host 的设计是让主机成为会话事实来源;客户端重连后可以重新获取状态。这解释了为什么多个 VS Code 窗口可以接管同一会话,但不代表每个客户端贡献的浏览器、扩展或交互式工具都能在断线后继续。
停止条件很明确:如果客户端关闭后远程进程停止、重连后变更集不一致,或者确认请求丢失,就先回退到短任务模式,不要继续扩大并发量。若只是 SSH 断开而主机仍运行,修复连接配置即可;若主机进程退出,则需要检查启动方式、日志和远程 Mac 的重启策略。
Xcode 与 MCP:能调用不等于能交付
远程 Agent Host 可以靠近 Xcode 工具链执行命令,但“代码生成成功”不能替代项目交付验收。至少执行一次构建、一次测试,并保存结果文件或日志。
例如:
xcodebuild \
-workspace Example.xcworkspace \
-scheme Example \
-destination 'platform=iOS Simulator,name=iPhone 16' \
test
具体工作区、scheme 和 Simulator 名称必须替换为你的项目值。Apple 的 运行测试与解读结果文档 说明,xcodebuild test 可以生成 .xcresults 结果包,其中可包含测试结果、代码覆盖率和日志。
MCP 要单独验收。Agent Host 原生读取工作区 .mcp.json 和用户级 ~/.copilot/mcp-config.json;它不会直接读取 .vscode/mcp.json,但 VS Code 可以转发部分配置。需要交互式输入的服务器,例如依赖 ${input:...} 的配置,可能无法在远程独立会话中正常工作。具体边界见 MCP 配置参考。
因此,MCP 验收至少包括:
- 服务器是否在远程 Mac 上安装,而不是只安装在本地电脑;
- 工作区路径是否指向当前工作树;
- 所需环境变量是否通过受控凭据注入;
- 浏览器工具在客户端断开后是否仍可用;
- 高权限命令是否保留人工确认;
- MCP 服务器异常退出后,Agent 是否会错误地重复执行副作用操作。
第一周的运行基线:决定共享池还是独占 Mac
完成首次连接后,不要只记录“能运行”。连续保存以下指标:任务运行时长、工具调用次数、失败重试、人工接管次数、工作树数量、构建峰值、磁盘增长和异常恢复时间。
你可以按 3 个结果做分流:
- 继续试点:任务能在客户端断开后续跑,重连后状态一致,代码差异可复核,Xcode 构建和测试结果可保存。
- 限制任务范围:会话能续跑,但部分浏览器、MCP 或签名工具依赖客户端,暂时只允许低风险修改和测试任务。
- 暂缓扩大:远程 Mac 重启后无法恢复、工作树互相污染、凭据无法撤销,或 Agent Host 退出后没有可追踪日志。
如果你还在估算并行任务数量,可以先阅读 AI Coding 长任务的云端 Mac 容量估算,再结合构建峰值决定共享环境还是任务级独占环境。需要比较租赁与自购路径时,可查看 MacPull 的 Mac 购买方案说明;临时试点或短周期验收则适合先参考 MacPull 的租赁方案页面。
当前方案与 MacPull 方案:什么时候值得切换?
如果你现在依赖本地 Mac 跑长任务,常见缺点是电脑关机后进程停止、单台设备难以承载多个隔离工作树,以及团队成员无法从不同客户端统一接管会话。若改用普通云主机,又会遇到 Xcode、Simulator、签名工具和 macOS 专属测试无法直接复现的问题。
把 Agent Host 放到独立云端 Mac 上,能同时保留 macOS 工具链和远程会话能力,尤其适合临时测试环境、跨时区长任务和需要多窗口接管的 AI Coding 团队。你完成最小会话、断线续跑、工作树隔离与 Xcode 交付验收后,再根据任务时长、并行工作树数量和构建峰值选择共享池或任务级独立环境;如果只是长期稳定满负载,或者必须依赖物理设备接口,自购 Mac 可能更合适。