首页/文章/测试一跑半小时,Claude 只能干等?用 MCP Tasks 把长任务放到常开的新加坡 Mac mini 上

测试一跑半小时,Claude 只能干等?用 MCP Tasks 把长任务放到常开的新加坡 Mac mini 上

· Zumac.Ai

一个慢工具,卡住整个会话

用 Claude Code 做 iOS/macOS 开发,最常见的等待不是模型在想,而是工具在跑:一次完整的 xcodebuild test 要十几分钟,一个导出报表的脚本要半小时,一次数据清洗要一个多小时。以前通过 MCP 调这类工具,Claude 只能干等返回,这段时间里会话什么也做不了。

不少人的土办法是在 tmux 里再开一个 Claude Code 会话,专门盯着那个长任务。能用,但两个会话互相不知道对方在干什么,额度也多花一份。

Claude Code 现在支持 MCP Tasks:MCP 服务端可以把一个慢操作作为后台任务接下来,先把「任务已开始」交还给 Claude,任务在服务端继续跑,Claude 回头再查进度、取结果。这样它可以一边等测试,一边去改文档、写下一个功能。

不过有一个前提经常被忽略:任务是在 MCP 服务端那台机器上跑的。如果服务端就是你笔记本上的一个本地进程,笔记本一合盖,后台任务和前台会话一起停。所以这篇讲的是:把 Claude Code 和它的长任务 MCP 服务一起放到一台常开的新加坡 Mac mini 上。

说明:MCP Tasks 需要较新的 Claude Code 版本,以及支持任务模式的 MCP 服务端。具体字段和行为以官方文档和你当前版本的 /help、更新日志为准,本文不替你假设细节。

第一步:让 Mac mini 不睡、不断

长任务最怕机器自己休眠。SSH 进 Mac mini 后先检查电源设置:

pmset -g | grep -E "sleep|disksleep"

不想改系统电源设置的话,就用 caffeinate 包住会话本身,效果只作用于你自己的进程:

tmux new -s ios-dev
caffeinate -dimsu claude

把 Claude Code 放在命名好的 tmux 会话里,SSH 断开后会话还在,下次 tmux attach -t ios-dev 就能接上。

第二步:确认 Claude Code 版本

claude --version
claude update      # 或用你安装时的方式更新

更新后在会话里输入 /mcp,看已连接的服务端列表和状态。版本太旧时,就算服务端支持任务,Claude 也会按老方式同步等待。

第三步:把长任务包成 MCP 服务,并且放在同一台机器上

关键是让 MCP 服务端也跑在 Mac mini 上,而不是跑在你的笔记本上、再远程调用。最简单的是本地 stdio 服务:

cd ~/work/myapp
claude mcp add --transport stdio build-runner -- node ~/tools/build-runner/index.js
claude mcp list

这里的 build-runner 是你自己写的、或者从可信来源装的服务端,负责执行 xcodebuild test、归档、导出报告之类的慢操作。选服务端时注意几点:

  • 确认它声明支持任务模式。不支持的服务端照样能用,只是会同步阻塞。
  • 只装可信来源。MCP 服务端能在你的机器上执行命令,装之前看一眼它会跑什么。
  • 结果写到文件。让服务端把完整日志写到项目里的 build-logs/,只把摘要和日志路径回给 Claude,避免一次性塞满上下文。

如果暂时没有支持任务模式的服务端,也可以先用「后台启动 + 写日志」的方式过渡,让 Claude 只负责启动和读日志:

mkdir -p build-logs
nohup xcodebuild test -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  > build-logs/test-$(date +%H%M).log 2>&1 &

模拟器名称以 xcrun simctl list devices 的输出为准。

第四步:在 CLAUDE.md 里写清楚怎么用长任务

光有工具不够,还要告诉 Claude 什么时候走后台、等待时做什么。在项目根目录的 CLAUDE.md 里加一段:

## 长任务
- 完整测试、归档、导出报告一律通过 build-runner 以后台任务方式启动。
- 启动后不要原地等待,继续处理清单里的下一项;每完成一项检查一次任务状态。
- 任务失败时先读 build-logs 里对应日志的最后 200 行,总结原因,不要自动重跑超过一次。
- 不要在测试运行期间修改被测试的源文件。

最后一条很重要:后台任务在跑的时候,Claude 又去改同一批文件,测试结果就不知道对应哪个版本了。让它在等待期间去改文档、写新模块,或者整理下一步计划。

第五步:中途需要拍板时,人在哪都能接上

长任务经常跑到一半需要你决定:测试挂了一条,是先修还是先跳过?这时你不需要坐在电脑前:

  • SSH:在任何终端执行 ssh sgmini,再 tmux attach -t ios-dev,直接在原会话里回复。
  • UU 远程连接:需要看模拟器画面、Xcode 报错界面时,连进 Mac mini 桌面看一眼。

~/.ssh/config 里给机器起个别名会省事很多:

Host sgmini
  HostName 你的机器地址
  User 你的用户名
  ServerAliveInterval 30

第六步:每天收尾检查后台任务

后台任务看不见,最容易被忘记。每天结束前跑一遍:

tmux ls
pgrep -fl xcodebuild          # 还有没有没结束的构建
ls -lt ~/work/myapp/build-logs | head
git -C ~/work/myapp status

不需要的会话和进程及时关掉,日志定期清理,别让旧任务一直占着内存和磁盘。

为什么要一台常开的整机来跑

MCP Tasks 解决的是「Claude 不用干等」,但没有解决「任务在哪台机器上跑」。要让后台任务真的能跑完,那台机器需要:

  • 一直开着:不合盖、不休眠,任务跑一小时就是一小时。
  • 是真正的 Mac:xcodebuild、模拟器和签名工具链只能在 macOS 上用。
  • 网络环境稳定:Claude 的长会话和 MCP 连接都怕频繁掉线,放在一个稳定合规的使用环境里更省心。Claude 账号由你自己开通和登录。
  • 整机独享:代码、日志、登录状态和会话记录都只在你自己的机器上。

Zumac.Ai 提供的就是这样的环境:位于新加坡的实体 Mac mini M6,整机独享,支持 SSH 与 UU 远程连接,FileVault 全盘加密,退租时抹机重装。新客户整机租用 ¥999/月起,季付 ¥2,697.30,半年付 6 送 1 为 ¥5,994,年付 12 送 2 为 ¥11,988;已购买客户续费保持原价。新客户首单自审核开通当天起租,续费及老客户新订单自付款当天起租。实际延迟取决于你本地的网络线路,建议先租一个月,把「tmux 常驻 → 长任务 MCP 服务 → 后台测试」这一套跑顺。

小结

  • MCP Tasks 让慢工具在服务端后台跑,Claude 可以一边等一边做别的事。
  • 后台任务跑在 MCP 服务端那台机器上,服务端放在会休眠的笔记本上就等于没用。
  • 把 Claude Code 和长任务服务一起放进常开 Mac mini 的 tmux 会话里,结果写日志、摘要回给 Claude。
  • 在 CLAUDE.md 里写清楚等待期间做什么、不能改什么,失败最多重跑一次。
  • 用 SSH 或 UU 远程连接随时接回会话拍板,每天收尾检查一次后台任务。

有问题可以在 Telegram 联系 @singatao,或直接看 价格与付款周期。

Zumac.Ai 新加坡 Mac mini M6,整机独享,¥999/月起,联系 Telegram @singatao。
查看方案与费用 · 帮助中心

返回首页 · 更多文章

Telegram 客服