随时随地 vibe coding——无缝切换随时访问的多端 agent 工作流

同步自我的 L站點

问题引入

各位佬习惯 vibe coding 了吗:face_with_monocle:,是否习惯了在电脑前坐一天,看看视频,偶尔同意下权限,偶尔补一条prompt的生活。

对我来说,还有几个痛点:

  • 必须坐在电脑前面。偶尔出门唱个 KTV、出门散个步,可能就会因为 agent 等待授权/等待 prompt 停止。同时也难以监控 agent 的运行状态。再比如,早上刚起床不想下床,想马上用手机启动一个任务跑起来。
  • 对于 openclaw (或其它类似产品) 用户,让它去工作/监控 agent 感觉不是那么靠谱——编程的事还是让专业的 code agent 来吧。

所以我研究出了能无缝切换、允许多设备同步访问的 agent 工作流!

工作流配置

我使用 OpenCode 自带的网页端 + tailscale 实现了多端访问。

:OpenCode 可能比较冷门,但它是相当好用的一个 agent,还自带网页端。如果你用 claude code/codex 等,也有一些启动网络服务的第三方项目;整体替换掉文中的 OpenCode 应该没有问题。欢迎大家留言推荐这些项目!

1. Agent 配置

1.1. 服务端

通过以下命令启动一个 opencode web server:

$ opencode serve --hostname 127.0.0.1 --port 56666 

随后访问 http://localhost:56666 就可以进入 OpenCode 的网页版了:

你可以使用 systemd (for linux) 或其它的软件去自动开机运行该命令;由于各个系统不同,恕不给出相关配置方法,直接问 AI 如何配置就好。


1.2 客户端

如果你觉得这个网页不错,那以后就都使用这个网页就可以了。

但是要注意的是,直接像原来一样使用 OpenCode TUI 是不行的。 opencode 命令会自行再启动一个 server + tui client。所以,再按 Ctrl + C 退出 TUI 会同时中断该新启动的服务器,从而会中断任务。推荐使用 opencode attach 命令,attach 到现存的这个服务器。可以设置一个 shell alias,比如在 bash/zshrc 下,向 .bashrc/.zshrc 中加入:

alias opencode='opencode attach http://localhost:56666 --dir "$PWD"'

这样启动的 opencode,即使退出 TUI 任务也不会中断。所以你可以在任何时候直接 Ctrl + C 掉当前 TUI,用手机打开页面继续监测/给指令(比如去上厕所)。统一使用一个 OpenCode server 对于多端同步的好处多相当大的。

2 使用 tailscale 配置私有 VPN,让手机能访问 OpenCode 网页

tailscale 可以帮助你在自己的多台设备之间建立通道(可以穿透 NAT 等),我们会使用它来将 127.0.0.1:56666 这个 web 服务暴露给你的手机/另一台电脑等其它设备。

  1. 首先在本机上下载 tailscale
  2. 然后登录:sudo tailscale login,点击弹出的连接,用谷歌等账号登录。结果大概如图:
  3. 开启服务:tailscale serve --bg --tcp=56666 localhost:56666 。你可能会遇到需要 sudo 等问题,按照它的报错信息添加 OPERATOR 即可。该命令输出类似于:

    记下第一行这个形如 <device>.<id>.ts.net 结尾的网址,之后会用到
  4. 在手机上/其它设备上再下载 tailscale,并用与之前相同的谷歌等账号登录。开启 tailscale 的 VPN 后,浏览器访问 https://<device>.<id>.ts.net:56666——这时,你就能看到 OpenCode 的网页端了:

以后你就可以随时在多设备间切换了——事实上所有的项目都还是在起了 OpenCode server 的那台机器上跑。

如果你的多设备本身就可以直连(比如在同一个 WLAN 中),那 tailscale 会直接直连;否则可能需要使用公共服务,速度会比较慢(但是能用)。在附录中给出了解决方法。

附录

A.1 使用 peer relay 减少延迟

要解决设备不能直连时使用公共服务的延迟过大的问题,可以使用 tailscale 的 peer relay 功能。这需要你有一台(最好是国内、直连速度快的)云服务器,不需要公网 IP,能直连就行。我个人是使用腾讯云最便宜的 2c2g。

具体细节可以参考如下博客,我也是根据这篇博客配置的。

A.2 (安卓)手机端同时使用 tailscale 和其他 VPN

安卓在同一时间只能启用一个 VPN,所以会造成 tailscale 和其他一些软件的冲突。你可以参考以下博客使用工作空间去解决这个问题:

如果你是小米手机,炼妖壶会有些问题;可以看如下 issue: 小米12手机用炼妖壶分身每一个软件都得在壶中界设置里点击“修缮壶中界” · Issue #360 · oasisfeng/island · GitHub 。需要在开发者模式中关闭“应用优化”,并在克隆每个应用前点击“修缮壶中界”。

A.3 除了 OpenCode,我还想用其它软件!

我还启了 CPA, FileBrowser, ttyd, code-server 这几个 web 服务,然后以相同道理用 tailsclae 代理端口即可。其中 FileBrowser 还是挺必要的,可以用来上传、下载文件。另外,直接使用 10.xxx.xxx.xxx 的设备 IP 还能 ssh 上去。

<domain>.<id>.ts.net<10.xxx.xxx.xxx> 的区别在于,前者必须要 tailscale serve 挂上去才能用,但后者可以由任意 taiscale 网内设备访问任何端口,效果就像在当前设备访问 127.0.0.1 一样。

4 个赞

Tailscale 并不会智能地切换打洞还是通过中转,这在校园网的环境中尤其会遭遇许多阻碍。

我的建议是使用其他软件,Easytier 似乎是一个不错的选择,会结合丢包率判断应打洞还是中转。