ByteNoteByteNote
AI Agent 搬上 VPS 实战:Mac 只当显示器
字

字节笔记本

2026年10月5日 · 约 19 分钟读完

AI Agent 搬上 VPS 实战:Mac 只当显示器

API中转
¥120

很多人用 Claude Code、Codex 这类 AI Agent 写代码,默认都跑在本地 Mac 上。项目一多,痛点就来了:几个 worktree 并行、几个 Agent 会话同时开着,再跑一个开发服务器和测试套件,风扇狂转、内存吃满、电池掉得飞快,合上盖子任务还会中断。

一位海外开发者在 X 上分享了自己的解法:把所有 Agent 从本地 Mac 搬到 Linux VPS,他称这是最大的十倍开发升级之一,引来大量开发者跟帖讨论。本文把这个思路整理成一份完整的操作指南:为什么要搬、怎么选机器、怎么配置、怎么迁移项目、日常怎么用,每一步都附具体命令。

AI Agent 远程开发架构总览:Mac、VPS、GitHub 与生产环境的分工

一、为什么要搬到 VPS

本地 Mac 的痛点

如果你同时开多个 worktree、多个 Claude Code 会话,还跑着 API 和开发服务器,Mac 很快就会不堪重负:

场景本地 Mac 的表现
3 个 worktree 同时跑内存占用 16GB 以上,开始卡顿
Codex 与 Claude Code 并行CPU 占满,风扇起飞
跑测试套件加开发服务器电池半小时掉一半
Agent 整夜运行合盖就断,第二天从头再来
编译大项目机器发热,其他操作跟着卡

VPS 的五大优势

1. 性能:Mac 只当显示器。 所有计算和 IO 都在 VPS 上跑,你的 Mac 只负责 SSH 连接和显示终端。Mac 不再发热、不卡,电池也耐用了。

2. 成本:比换新 Mac 划算得多。 一台 M4 Max 32GB 的新 Mac 要 3000 英镑起步,而一台 12 核 AMD vCPU、24GB 内存的 VPS 每月大约 40 到 60 美元,足够同时跑多个 Agent 会话、构建、API 和 tmux。想扩容时在线升配即可,不用等机器发货,也不用担心两三年后过时。

3. 持久性:关了 Mac,Agent 继续跑。 tmux 加 SSH 意味着 Mac 合盖、关机、断网,VPS 上的 Agent 都在继续干活,第二天打开 SSH,结果已经出来了。这是本地环境做不到的。

4. 干净的工作流:职责分离。

text
Mac         → SSH / 远程显示(只看结果)
VPS         → Codex / Claude / 构建 / 测试 / API(所有计算)
tmux        → 管理 Agent 会话(一个窗口管多个 Agent)
GitHub      → 源代码仓库(source of truth)
生产环境     → 独立的受保护部署目标

每层职责清晰:Mac 不碰代码,VPS 不碰生产,GitHub 是唯一真相源。

5. 弹性扩展。 要跑更多 Agent,VPS 一键升级配置;要跑 GPU 任务,直接换 GPU 机型,不用换机器、不用等发货。

二、怎么选 VPS

配置推荐

级别配置月费适合
入门4 vCPU / 8GB10 到 20 美元单 Agent 加小项目
推荐8-12 vCPU / 16-24GB30 到 60 美元多 Agent 并行加中型项目
重型16 vCPU 以上 / 32GB 以上80 到 150 美元大项目、多 worktree、CI
GPU8 vCPU 加 RTX A4000100 美元起模型推理与训练

供应商对比

供应商优势劣势参考价格
Hetzner性价比最高,AMD EPYC到中国延迟 200-300msCPX31(8核/16G)约 22 欧元/月
DigitalOcean全球节点,稳定偏贵8核/16G 约 96 美元/月
Vultr高频 CPU,有东京节点中等8核/16G 约 96 美元/月
AWS Lightsail可靠最贵8核/16G 约 120 美元/月
Oracle 免费层免费(4核/24G ARM)难抢,性能不稳0 美元
国内云延迟低需备案,合规复杂看厂商

推荐 Hetzner CPX31 或 CPX41,性价比突出。虽然从中国连欧洲延迟有 200-300ms,但 SSH 终端不是实时交互,打字时的这点延迟完全可以接受。在意延迟就选东京或首尔节点(Vultr、DigitalOcean 都有),想要折中可以看新加坡。

三、VPS 初始配置:从零开始

第 1 步:创建实例

以 Hetzner 为例(其他平台类似):注册 console.hetzner.cloud,创建 Server,选 CPX31(8 核 AMD vCPU、16GB 内存),系统选 Ubuntu 24.04,添加你的 SSH 公钥后创建。

第 2 步:首次登录与更新

bash
ssh root@<你的VPS_IP>

# 更新系统
apt update && apt upgrade -y

# 安装基础工具
apt install -y git curl wget build-essential unzip tmux htop

第 3 步:创建非 root 用户

bash
adduser dev
usermod -aG sudo dev

# 把 Mac 上的公钥复制过去
mkdir -p /home/dev/.ssh
cp ~/.ssh/authorized_keys /home/dev/.ssh/
chown -R dev:dev /home/dev/.ssh
chmod 700 /home/dev/.ssh
chmod 600 /home/dev/.ssh/authorized_keys

su - dev
sudo whoami   # 应该输出 root

第 4 步:SSH 安全加固

bash
sudo nano /etc/ssh/sshd_config

# 修改这两行:
PermitRootLogin no
PasswordAuthentication no

sudo systemctl restart sshd

第 5 步:配置 SSH 别名

在 Mac 上编辑 ~/.ssh/config:

text
Host vps
    HostName <你的VPS_IP>
    User dev
    IdentityFile ~/.ssh/id_rsa
    ServerAliveInterval 60
    ServerAliveCountMax 3

以后一条命令就能连上:ssh vps。

四、装好开发环境和 Agent

语言运行时按需安装,常用的是下面几套:

bash
# Node.js(用 nvm 管理版本)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 22 && nvm use 22

# Python
sudo apt install -y python3 python3-pip python3-venv

# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Go
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc && source ~/.bashrc

# Docker(可选,用于沙箱)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

然后安装 Agent 工具:

bash
# Claude Code
npm install -g @anthropic-ai/claude-code
export ANTHROPIC_API_KEY="你的key"        # 写进 ~/.bashrc 持久化
claude --version

# Codex CLI
npm install -g @openai/codex
export OPENAI_API_KEY="你的key"
codex --version

# 用 DeepSeek 等兼容 OpenAI 接口的模型省钱
export OPENAI_BASE_URL="https://api.deepseek.com/v1"

API Key 一律走环境变量,不要写进代码或仓库,这一点在文末的安全清单里还会再强调。

五、tmux 多会话:整套工作流的心脏

一个终端窗口管理多个 Agent 会话,SSH 断开也不丢失,这是整个方案的核心。先写一份顺手的基础配置:

bash
cat > ~/.tmux.conf << 'EOF'
# 前缀键改为 Ctrl+a,更顺手
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 开启鼠标
set -g mouse on

# 窗口编号从 1 开始
set -g base-index 1
setw -g pane-base-index 1

# 分屏快捷键
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# 256 色与历史记录
set -g default-terminal "screen-256color"
set -g history-limit 50000

# 状态栏
set -g status-style bg=default,fg=white
set -g status-left "#[fg=green]#S "
set -g status-right "#[fg=cyan]%Y-%m-%d %H:%M "
EOF

tmux source ~/.tmux.conf

日常用法:

bash
tmux new -s project1        # 创建会话
# Ctrl+a | 左右分屏
# Ctrl+a - 上下分屏
# Ctrl+a d 脱离(会话继续跑)
# Ctrl+a c 新建窗口
# Ctrl+a 1/2/3 切换窗口
tmux ls                     # 列出所有会话
tmux attach -t project1     # 重新接上
tmux kill-session -t project1

一个典型的多 Agent 布局:

text
tmux 会话: my-project
├── 窗口 1: Claude Code(主力写代码)
├── 窗口 2: Codex(跑构建/测试)
├── 窗口 3: git log(看提交历史)
└── 窗口 4: dev-server(开发服务器)

SSH 断开,tmux 会话继续跑;Mac 合盖,tmux 会话继续跑。第二天 ssh vps 加 tmux attach,一切都在原地。

六、迁移项目与日常工作流

三种常用迁移方式:

bash
# 方式一:Git clone(推荐)
cd ~/ && mkdir projects && cd projects
git clone git@github.com:yourname/your-project.git
cd your-project && npm install

# 方式二:rsync 同步未推送的改动(在 Mac 上执行)
rsync -avz --exclude node_modules --exclude .git \
  ~/projects/my-project/ dev@<你的VPS_IP>:~/projects/my-project/

# 方式三:Git worktree 多分支并行(在 VPS 上)
cd ~/projects/my-project
git worktree add ../my-project-feature-x feature-x
git worktree add ../my-project-bugfix bugfix-123
tmux new -s feature-x -d "cd ../my-project-feature-x && claude"
tmux new -s bugfix -d "cd ../my-project-bugfix && claude"

搬完之后,一天大概是这样过的:

搬上 VPS 之后的一天:早上连接、白天并行、晚上提交脱离

早上:ssh vps 连上去,tmux ls 看看昨晚的会话,tmux attach 接上,Agent 整夜跑的结果已经躺在窗口里。

白天:一个窗口开 Claude Code 写代码,一个窗口跑测试,一个窗口跑开发服务器,互不抢占本地资源。

晚上:git add 加 commit 加 push 提交代码,Ctrl+a d 脱离会话,合盖走人。VPS 上的任务整夜继续,第二天打开,一切都在。

七、可选增强

VS Code Remote SSH。 不只终端,VS Code 也能远程连 VPS:装 Remote-SSH 扩展,Cmd+Shift+P 选 Connect to Host 里的 vps,之后所有文件操作、终端、调试都在 VPS 上执行,Mac 只负责显示界面。

cron 自动化。 把例行任务交给定时器,比如每天早上 6 点让 Claude Code 检查并修复失败的测试:

bash
crontab -e
0 6 * * * cd ~/projects/my-project && claude -p "检查 CI 失败的测试并修复" >> /tmp/ci-check.log 2>&1

mutagen 文件同步。 如果需要 Mac 和 VPS 双向同步文件:

bash
brew install mutagen-io/mutagen/mutagen
mutagen sync create --name my-project \
  ~/projects/my-project dev@vps:~/projects/my-project \
  --ignore node_modules --ignore .git --ignore dist

八、安全清单与成本总结

搬上 VPS 前先过一遍安全清单:禁用 root SSH 登录、禁用密码认证只用密钥、用 ufw 配好防火墙、定期 apt update 升级系统、API Key 只存环境变量、敏感数据不进仓库(.env 加 gitignore)、配置自动备份。

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP(可选)
sudo ufw allow 443/tcp   # HTTPS(可选)
sudo ufw enable

成本上一目了然:

方案花费持久性
新 Mac M4 Max约 3000 英镑一次性合盖即断
Hetzner CPX31约 25 美元/月7x24 常驻
Hetzner CPX41约 45 美元/月7x24 常驻
MacBook Air 加 VPS约 1200 美元加 45 美元/月常驻

最优组合是一台够用的 Mac(Air 就行)加一台 VPS:Mac 负责浏览器、通信和显示,所有开发在 VPS 上完成,比买顶配 Mac 更便宜也更强。

九、写在最后

text
你的 Mac(Air 就够)
  │ SSH / VS Code Remote
  ▼
Linux VPS(所有计算)
  ├── tmux 管理多个会话
  │   ├── 窗口 1: Claude Code
  │   ├── 窗口 2: Codex
  │   ├── 窗口 3: 测试
  │   └── 窗口 4: Dev Server
  ├── Git worktree 并行多分支
  └── cron 定时自动化
        │
        ▼
    GitHub(源代码)
        │
        ▼
    生产环境(独立部署)

一句话总结:Mac 是显示器,VPS 是大脑,GitHub 是真相源,tmux 是永不掉线的纽带。当 Agent 越开越多、任务越跑越长,把算力搬上云,可能是最省心的一次升级。

本文整理自一位海外开发者在 X 上分享的远程开发实践,并扩展成完整的操作指南;价格与配置为撰写时的参考数据,以各厂商官网为准。

相关文章

分享: