手机接管远程会话
出门、开会或离开桌面时,也能继续给桌面端会话发消息、看进度、确认下一步。
出门、开会或离开桌面时,也能继续给桌面端会话发消息、看进度、确认下一步。
会话仍跑在你自己的机器上,手机只做遥控器,账号和云端工作区不是前提。
手机里的截图、相册图片可以直接发给远程会话;回复里的图片也能放大查看和保存。
在手机上浏览远程文件夹、预览支持的文件,只把真正需要的下载到本地。
默认走 Cloudflare Tunnel,也支持 ngrok 和 Tailscale;在外也能连回自己的电脑。
扫一次二维码即可连接,无需账号;只想局域网配对时再传 --access=local。
临时走开后,手机上也能恢复同一个会话,上下文还在。
远程会话需要执行敏感请求前,先在手机上看清楚再批准。
数据留在你自己的机器上;手机 App 不会下载、安装或运行会话里的可执行代码。
连接配对电脑、管理会话、与远程助手对话,全在手机上完成。





手机 App 装好后,让电脑端连接器保持运行;需要走开时,扫一次二维码就能接管。
日常用手机控制配对会话时,请安装 App Store 官方正式版。
日常用手机控制配对会话时,请下载 Android 官方正式 APK。
先启动连接器,扫码一次;之后离开电脑,也能继续推进远程会话。
离开桌面前先运行这条命令,让手机有可配对的会话入口。
npx vibelet离开电脑时用默认 tunnel;只想在本地网络里配对,或者想走自己的链路时,再切换下面的方式。
免费、无需注册。Vibelet 自动启动 Cloudflare Tunnel,并打印可远程扫码的二维码。
npx vibelet需要只走局域网时传 --access=local。传 --access=remote --force 可获取新 URL。
已经在运行 cloudflared、ngrok 或其他隧道?直接传入公网 URL 即可。
# Cloudflare(手动)
npx cloudflared tunnel --protocol http2 --url http://localhost:9876
# ngrok
ngrok http 9876
# 然后告诉 Vibelet:
npx vibelet --access=https://<your-tunnel-url>relay URL 会持久化到 ~/.vibelet/relay.json,重启后自动复用。
只需告诉 Vibelet 你设备的 Tailscale IP。手机也需要加入同一 Tailscale 网络。
npx vibelet --access=<tailscale-ip>在手机上安装 Tailscale 应用并加入同一 tailnet。
把配对和 relay 场景里最常见的问题先说清楚。
当链路里用了 Cloudflare Tunnel / Argo Tunnel,一些基于规则的代理工具需要把 *.argotunnel.com 当成真实目标来解析,并且不要再套一层代理。
在 Loon 这类配置里,通常就是把 *.argotunnel.com 放进 real-ip 和 skip-proxy。目的很直接:让 tunnel 域名按正常方式解析,并且直接连接,不再经过额外的代理链。
比如在 Loon 里,遇到开了代理后无法联通,可以先在 `[General]` 里补这两行: `real-ip = *.argotunnel.com` `skip-proxy = *.argotunnel.com`
如果你当前网络本身不能直连 *.argotunnel.com,就不要继续把它放在 skip-proxy 里;应该给它指定一个稳定的代理策略,或者改用自定义 relay / Tailscale。
这通常说明手机根本没有连到二维码里的那个 host,在 Vibelet 收到任何 HTTP 响应之前,请求就已经失败了。
常见原因包括:手机和电脑不在同一个可达网络、二维码里是手机无法解析的局域网地址或 `.local` 地址、iPhone 的本地网络权限没开,或者代理工具错误接管了 tunnel / relay 域名。
如果你走的是远程 tunnel,先确认 relay 域名本身可达;如果你走的是局域网配对,可以直接尝试电脑的局域网 IP,或者用正确的 --access host 列表重新启动 Vibelet。
配对二维码本来就是短时有效、且只能消费一次的。这能让配对流程保持简单,同时避免一直留着一个可重复使用的开放配对窗口。
如果过期了,直接在电脑上重新运行 `npx vibelet`,再扫新的二维码即可。如果这台手机之前已经配对过,也可以先尝试从已保存的设备条目直接重连。
当手机和电脑已经在同一个局域网里,而且你这次不想让 Vibelet 使用默认远程 tunnel 时,用 `npx vibelet --access=local`。
如果你希望二维码默认就是可远程连接的,直接用 `npx vibelet` 更合适。尤其是在你不确定手机是否会一直留在同一局域网时,这通常是更稳的默认值。
自定义 relay 是指你已经有一个公网 tunnel URL,比如 Cloudflare Tunnel 或 ngrok,然后通过 `--access=https://...` 交给 Vibelet 使用。
Tailscale 不一样:Vibelet 里并没有公网 relay URL,而是通过 `--access=<tailscale-ip>` 告诉它机器的 Tailscale IP,同时手机也必须加入同一个 tailnet。
Tailscale 官方 GUI 版(macsys)走 macOS NetworkExtension 框架,会接管默认路由。Loon / Surge 同样基于 NetworkExtension,两者会抢路由表——Tailscale 一开,代理工具的 TUN 实际就失效了,翻墙断掉。
解决办法:换成开源独立版 `tailscaled`,它直接用 `utun` 接口,不走 NetworkExtension,可以和 Loon 完全共存。
操作步骤:退出 `Tailscale.app`,在 Finder 里把它拖进废纸篓(这一步会触发系统扩展卸载弹窗,用 `rm` 不会),然后执行: `brew install tailscale` `sudo tailscaled install-system-daemon` `sudo tailscale up --advertise-exit-node`
Loon / Surge 那边补几条直连,避免 Tailscale 流量被代理拦截:把 `100.64.0.0/10` 加到 `skip-proxy` 和 `bypass-tun`,并在规则段顶部加上 `*.ts.net` 直连和 `IP-CIDR,100.64.0.0/10,DIRECT,no-resolve`。
iOS 上两者互斥(系统级 NE 限制,只允许一个 VPN tunnel)。通常的做法是把 Mac 当作 Tailscale exit node,手机选这台 Mac,所有流量经 Tailscale 隧道送到 Mac 后再由 Mac 上的 Loon 处理。