Claude Code 的长任务,不该指望笔记本电脑一直开着、Wi-Fi 一直不断。在笔记本电脑上跑 Claude Code,合上盖子它就停了。通过 SSH 在服务器上跑,连接一断它也停了。合适的形态是私有 PWA(渐进式 Web 应用):一种能像应用一样安装、只有你能打开的网页。agent 在一台你自己的、一直开着的机器上干活,你随身带的每台设备都是通向它的一扇窗口。
在笔记本电脑上:盖子不能合
大家都是从这里开始的:在终端里进入项目文件夹,运行 claude。
后来有个任务要跑 20 分钟,而你得走了。合上盖子,笔记本电脑进入睡眠,agent 也跟着睡了。一小时后再打开,任务还停在你离开时的地方,要跑的那 20 分钟,一分钟也没少。
笔记本电脑可以设成不睡眠。但那样它就得留在原地,插着电,连着那里的 Wi-Fi,直到 agent 干完,而你只能丢下它出门。
通过 SSH:Wi-Fi 不能断
于是 agent 搬到一台从不睡眠的机器上:角落里的台式机、Mac mini,或者租来的服务器。你用 SSH 登录上去,在那里运行 claude。
这下,合上盖子停不了这台机器了,却还是断得了连接。连接活多久,agent 就活多久。Wi-Fi 断得稍久一点,笔记本电脑进入睡眠,或者换了个网络,SSH 会话就断了。Claude Code 跟着断掉,活才干到一半。claude --resume 能把对话接回来,但这段时间里它本该干的活回不来了。
tmux 补上了这个缺口。它让终端在服务器上一直活着,没人连着也一样,于是 agent 接着干,你过后再连回去。可它也给你添了一串杂务:
- 每次都得先启动 tmux。到头来跑了很久的那个任务,偏偏是你没开 tmux 就启动的。
- 要记住哪个会话里是哪段对话,每次掉线后都得连回对的那个。
- 想从哪台设备上看,就得在哪台设备上装终端应用、放 SSH 密钥。在手机上,每条 tmux 命令都以 Ctrl-B 开头,还得在触屏键盘上敲。
- 它干完了也没人告诉你,只能时不时进去看一眼。
这些都不难。只是杂务,而且天天都要重来一遍。
做成 PWA:两样都不要紧
把这两条教训合起来看。agent 应该待在那台一直开着的机器上。你手里拿的,只该是它的一个视图:随时可以消失,再回来时什么也没丢。
网页正是这样的视图。每台设备上本来就有浏览器,所以不用装终端应用,也不用拷 SSH 密钥。网页断了连接,能自己重新连上。安装成 PWA 的网页还有图标、有自己的窗口、能发通知,agent 干完时就能告诉你。
exe 就是这样做的。它是浏览器里的桌面,由你自己的一台机器提供,Claude Code 是这个桌面上的一个窗口。
- 每段对话都是机器上的一个会话。关掉标签页,合上盖子,断了 Wi-Fi:agent 照样干活。
- 有一栏列出所有会话。闪动的绿点表示这个会话还在干活,黑点表示它在等你。窗口的连接断了,会自己重连。
- 每台设备打开的都是同一段对话。在笔记本电脑上启动任务,再用手机去看一眼。
- 干完时手机会告诉你。打开通知后,手机会提示 Claude Code finished,点一下就打开那段对话。
窗口底下仍然是 tmux:每个会话都是一个 tmux 会话,由 exe 替你启动、命名、连上。tmux 做的事没有变。那些杂务从你手里交到了应用手里。
只有你能打开
通向 Claude Code 的窗口,就是你机器上的一个 shell,背后是你的代码和登录着的各个账号。它不能是公网上的网页。
这件事 exe 靠的是 Tailscale。Tailscale 是架在你自己各台设备之间的私有网络,不管你人在哪里,都能通过它连到那台机器。exe 监听的是机器在这个网络里的地址,所以桌面能从你的笔记本电脑、平板和手机上打开,别处都打不开。在这之上还有一个 API 令牌,也就是桌面的密码。
在你自己的机器上
剩下的就是那台机器了。最好是放在家里的一台小机器:NVIDIA DGX Spark 或者 Mac mini。两种都很安静,在架子上占不了多少地方,可以日夜开着。放在家里,Tailscale 照样连得到它,路由器上一个端口都不用开。
这台机器要做的事,不只是挂着一个终端。agent 的构建和测试在上面跑。exe 给 agent 当沙箱用的虚拟机也在上面跑,你自己跑的模型也是。这些都需要 CPU 核心、内存和 GPU,而 DGX Spark 有 20 个核心,GPU 与 CPU 共用 128 GB 内存。
这样的机器也可以在云上租。但内存这么大的 GPU 按小时计费,而这台机器在两次任务之间也不能关,因为 agent 就住在上面。一年开下来,租金比买下这台机器还贵。自己买的机器,钱只付一次。
试一试
你需要一台一直开着的 Linux 机器或 Mac,上面有 tmux,Claude Code 也已装好并登录。这台机器上要装 Tailscale,你打算用来看的每台设备上也要装。
curl -fsSL https://exe.v2core.com/install.sh | sh
- 安装脚本问 exe 该监听哪里时,选 Tailscale 的地址。它会建议用一个生成好的 API 令牌,并把令牌连同桌面的地址一起打印出来。
- 用 Tailscale Serve 给桌面加上 HTTPS,桌面仍然只在你的私有网络里。安装成应用和接收通知,都需要 HTTPS。
- 在手机上打开桌面,按提示粘贴令牌,然后把它安装成应用:在 iPhone 上是“添加到主屏幕”。
- 打开通知。
其余的都在 Getting Started(入门)里,源代码在 github.com/livid/exe。
然后打开 Claude Code,交给它一件要干很久的活,合上盖子。