第一期的文章:【Pi Coding Agent】我的个性化配置,已经基本介绍了我的配置环境,第二次介绍一下我的 Pi Coding Agent 是怎么用在 vps 上面的,第一期的时候还没有这个功能,现在多了个这个功能,于是写篇文章记录一下。

背景

我经常需要移动电脑,并且全部身家就只有一部 mba,同时很多时候我需要后台运行 Pi Coding Agent 在我盖上电脑屏幕的时候,于是我经常使用这个组合:

  1. 手机开着热点给电脑连接,保证网络
  2. Amphetamine 软件用于动态控制电脑唤醒的时间,比如这 4 小时内电脑都在唤醒状态
  3. 使用 bash 命令 pmset displaysleepnow关闭屏幕,然后盖上电脑,但是电脑在运行

这一套不是不能跑,是能跑,但是费电,加上我的 mba 电池好像不太行了,我经常需要用充电宝给电脑充电,而且 Amphetamine 有时候有个 bug,开启了没生效,盖上电脑就暂停运行了,等于白弄了。总体上这一套属于是能运行,但是体验并不是很好。

其实上整体的需求是电脑没开启的时候,也能运行 Pi Coding Agent,那么自然就需要另外一台机器跑,比如放在家里面的手机、电脑、电视盒子,vps等。

因为我还有一个月的 gcp 赠金,于是我想用 vps 看看,后续过期了还得看看怎么搞,不太想花钱哈哈哈,总之先把这一套跑起来。

把 Pi Coding Agent 放到 vps

有三个方案:

  1. 使用 pi-ssh-remote 这种插件,本地运行 agent,文件操作和命令执行在 vps 上执行。这种不符合我的情况,因为还是会得保持电脑在运行状态。
  2. 把 Pi Coding Agent 跑在 vps,我目前采用的是这个方案。
  3. Pi Coding Agent 的 rpc 模式,或者新版本的 Pi Durable,感觉对我的代码改动太大了,暂时不考虑。

所以我需要做的就是:

  1. 把所有插件、配置放到 vps
  2. kitty + tmux 这一套兼容跑在 vps

所有插件、配置放到 vps

我让 ai 根据我现有的环境,写一个脚本,然后在全新的 debian 上面,执行这个脚本,就能够

  1. git clone 所有我自己的开发插件到本地,然后 pi install,因为我还得修改这些插件,所以只能拉下来。
  2. pi install 别人的插件。
  3. 将我自定义的 slash command、prompt、settings.json 等 Pi Coding Agent 配置迁移到 vps。
  4. 安装上常用的开发环境,比如 curl、zsh、nodejs 等等。

配置是链接的方案,后续配置就跟着仓库走了,这样修改后提交,后续可以快速迁移到新的机器。

LLM 网关我之前是本地部署 octopus,现在部署在 Northflank 平台,这个是免费的。缺点就是像黑与白这种限制 ip 的公益站用不了,可以在 vps 再跑一个或者是直接写到配置里面吧,到时候看看怎么搞,目前还没有用到黑与白的模型。

kitty + tmux 兼容 vps

这个肯定是得修改代码,跑不掉,好在修改的不多,因为之前是 tmux 跑在本地电脑上面,然后通过本地 socket 跟 kitty 建立连接,现在是 tmux 跑在 vps 上面,通过远程 socket 跟 kitty 建立连接,大差不差。

查看项目代码也是沿用了 vscode,毕竟 vscode remote 模式可以快速连接到 vps,然后直接查看和操作 vps 上的项目。所以现在如果 tmux 跑在本地,按ctrl+b+v,直接打开本地 vscode 查看项目,如果是跑在vps,也是可以按同样的快捷键,只不过是打开的是 vscode remote,需要稍微等一等初始化。

ssh 连接,我之前用的是 mosh,后来发现这个项目很久没更新了,跟现代的终端有点冲突,于是我换成了,trzsz-ssh 和 tsshd,用的 kcp 协议,效果其实跟 mosh 差别,主要用处是:断网后能自动恢复连接,所以盖上电脑,断网了,然后回到家,重新打开电脑,它会自己连接上,稍微等一会,所有东西都在,一样的排版,好像没有变过一样,这样体验会好很多。

所以现在的情况就变成:

  • 如果在本地电脑上跑 Pi Coding Agent,那么直接在kitty tab上输入 spi (alias 命令)就行了。
  • 如果在 vps 上跑,那么得先输入tssh-vps(alias 命令),然后再 spi(alias 命令)就行了。

alt text

上图是本地电脑的 kitty,然后这个 tab 是连接在 vps,看左下角的 debian 图标就知道了,然后 tmux 是跑在 vps 上面的,有三个 tab,其中第一个和第三个代表跑了两个 Pi Coding Agent,分别是 main 分支 和 名字为 1 的 worktree 分支。

alt text

这个则是相同的 kitty 进程,不同的 tab,这个 tab 是跑在本地 mac 上,目前只跑了一个 Pi Coding Agent。

在 vps 的 tab 上也能快速预览 Pi Coding Agent 的情况,然后跳转过去,不过我很少用这个,可能还有点问题。

alt text

目前的情况

目前我大部分项目如果不需要跑在 mac 上,我就是直接连接上 vps 跑了,然后盖上电脑,也能后台跑,回到家连上网络就能恢复 ssh 连接了,一切是无感。不过我还写了个脚本,用于重启后自动恢复布局,但是还没有试。并且电脑上没有跑 agent,省电了很多,再也不用充电宝了。😁

不过坏处在于 gcp 的机器 ssh 有点卡,即使我挂了个节点,所以流畅度肯定比不上在本地上操作,偶然会滑动掉帧啥的,极端情况下断断续续,或者完全操作不了,只能自适应了。。。