我在手机上并行运行六个Claude Code代理。没有笔记本电脑,没有台式机——只有iOS上的Termius和云虚拟机。
设置
flowchart LR
A[Phone] -->|Termius + mosh| B[Tailscale VPN]
B --> C[Vultr VM]
C --> D[Claude Code]
D -->|PreToolUse hook| E[Poke webhook]
E -->|Push notification| A
流程是:启动任务,将手机放入口袋,当Claude需要输入时收到通知。从任何地方进行异步开发。
基础设施
硅谷的Vultr虚拟机:
| Spec | Value |
|---|---|
| Instance | vhf-8c-32gb |
| Cost | $0.29/小时 (运行时约$7/天) |
| Access | 仅Tailscale (无公共SSH) |
我只在工作时付费。两个脚本管理生命周期:
vm-start # Start VM, wait for Tailscale, connect via mosh
vm-stop # Halt VM
我还有一个直接调用Vultr API的iOS快捷指令——在我甚至打开Termius之前就从手机启动虚拟机。
虚拟机的公共IP没有SSH监听器。所有访问都通过Tailscale的私有网络。深度防御:云防火墙阻止除Tailscale协调之外的所有内容,本地nftables作为备份,fail2ban以防万一。
移动终端
Termius在iOS/Android上处理SSH和mosh。Mosh是关键——它能在网络切换中幸存。从WiFi切换到蜂窝网络,穿过信号盲区,让手机进入睡眠状态。连接持续存在。
mosh --ssh="ssh -p 47892" [email protected]
一个问题:mosh不转发SSH代理。对于需要GitHub身份验证的git操作,我在tmux中使用常规SSH。
会话持久性
Shell在登录时自动附加到tmux。关闭Termius,几小时后重新打开,一切都还在。
# In .zshrc
if [[ -z "$TMUX" ]]; then
tmux attach -t main 2>/dev/null || tmux new -s main
fi
多个Claude代理在并行窗口中运行。C-a c用于新窗口,C-a n用于切换。在手机键盘上效果很好。
推送通知
这就是使移动开发变得实用的原因。没有通知,你会不断检查终端。有了通知,你可以走开。
~/.claude/settings.json中的钩子:
{
"hooks": {
"PreToolUse": [{
"matcher": "AskUserQuestion",
"hooks": [{
"type": "command",
"command": "~/.claude/hooks/poke-notify.sh question"
}]
}]
}
}
当Claude调用AskUserQuestion时,钩子触发。一个简单的脚本提取问题并POST到Poke的webhook:
QUESTION=$(echo "$EVENT_DATA" | jq -r '.tool_input.questions[0].question')
MESSAGE="$PROJECT_NAME: Claude needs input - $QUESTION"
curl -X POST "$API_URL" -d "{\"message\": \"$MESSAGE\"}"
手机震动。通知显示问题。点击,回应,继续。
信任模型
我在宽松模式下运行Claude Code。虚拟机是隔离的——无法访问生产系统,除了开发所需的秘密之外没有其他秘密。最坏的情况:Claude在一次性虚拟机上做了一些意外的事情。
成本控制增加了另一层。虚拟机每小时花费$0.29。即使出现失控,每日上限也是有界的。
并行开发
Git工作树让我同时运行多个功能:
~/Code/myproject/ # main
~/Code/myproject-sidebar/ # feature branch
~/Code/myproject-dark-mode/ # another feature
每个工作树都有自己的tmux窗口和Claude代理。端口分配基于哈希——从分支名称确定性生成,无冲突:
hash_val = sum(ord(c) for c in branch_name)
django_port = 8001 + (hash_val % 99)
六个代理,六个功能,一部手机。
这带来了什么
等咖啡时审查PR。在火车上启动重构。在沙发上看电视时修复bug。
模式:启动一个需要Claude 10-20分钟的任务,做其他事情,收到通知,回应,重复。开发适合一天中的空隙时间,而不需要专门的办公时间。
组件
| Tool | Purpose |
|---|---|
| Vultr | 云虚拟机 ($0.29/小时,按使用付费) |
| Tailscale | 私有网络,安全访问 |
| Termius | iOS/Android SSH客户端 |
| mosh | 网络弹性shell |
| tmux | 会话持久性 |
| Poke | 通过webhook推送通知 |
| Claude Code | 实际工作 |
设置花了一个Claude Code会话来构建——给了它我的Vultr API密钥和对gh的访问权限,要求一个安全的开发虚拟机。现在我用手机编码。
在Hacker News上讨论这篇文章