Featured image of post 在虚拟机上运行 Claude Code 实现自动化测试与开发

在虚拟机上运行 Claude Code 实现自动化测试与开发

语速

最近我验证了一套行之有效的 AI 开发方法,还不影响现有的工作流。这里总结一下。

为什么选择 VM + Claude Code

  • 隔离性:避免污染主系统,可快照回滚
  • 可复现:团队成员可以快速复制相同环境
  • 适合自动化测试:Playwright 等浏览器自动化工具需要桌面环境
  • 安全: 不怎么担心 agent 生成 rm -rf / 命令。虚拟机崩溃不影响虚拟化平台,重新创建一个即可。

环境搭建

1. PVE 创建 Ubuntu Desktop VM

  1. 下载 Ubuntu Desktop ISO,上传到 PVE 的 ISO 存储
  2. 创建 VM:
    • CPU:host 类型,2-4 核
    • 内存:4-8 GB
    • 磁盘:VirtIO SCSI,40GB+
    • 网卡:VirtIO
  3. 挂载 ISO,启动安装
  4. 安装完成后安装 qemu-guest-agent:
1
2
sudo apt install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

2. 配置 Xfce + xrdp 远程桌面

安装 xrdp 和 Xfce(比 GNOME 更轻量、兼容性更好):

1
2
3
4
5
6
sudo apt install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp

sudo apt install xfce4 xfce4-goodies
echo xfce4-session > ~/.xsession

安装过程中提示选择 display manager,选 lightdm

解决黑屏问题

编辑 xrdp 启动脚本:

1
sudo nano /etc/xrdp/startwm.sh

在最后两行 test -xexec 之前加上:

1
2
3
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
startxfce4

重启 xrdp:

1
sudo systemctl restart xrdp

注意:连接前不要在本地登录桌面,否则同用户会黑屏。

调整分辨率/DPI

  • Windows 远程桌面连接前,在"显示选项"里调低分辨率(如 1920×1080)
  • 或在 Xfce 内:设置管理器 → 外观 → 字体 → 调高 DPI(如 120)

禁用崩溃提示

切换桌面后可能有 GNOME 组件崩溃提示(不影响使用):

1
sudo systemctl disable apport

3. 安装 Claude Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 安装 Node.js(如使用 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts

# 安装 Claude Code
npm install -g @anthropic-ai/claude-code

# 或使用官方安装脚本
curl -fsSL https://claude.ai/install.sh | bash

首次运行 claude 命令,按提示登录认证。

自动化测试工作流:MCP 配置

Playwright MCP

MCP特点
@playwright/mcp (微软官方)轻量、基于无障碍树
@executeautomation/playwright-mcp-server (社区)功能更全、支持截图、JS 执行
@agentdeskai/browser-tools-mcpconsole 日志监控、Lighthouse 性能分析

Claude Code 配置

在项目根目录创建 .mcp.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@executeautomation/playwright-mcp-server"]
    },
    "browser-tools": {
      "command": "npx",
      "args": ["-y", "@agentdeskai/browser-tools-mcp"]
    }
  }
}

或用 CLI 添加:

1
claude mcp add playwright --scope project -- npx -y @executeautomation/playwright-mcp-server

OpenCode 配置

如果使用 OpenCode,配置格式不同(opencode.json):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": ["npx", "-y", "@executeautomation/playwright-mcp-server"],
      "enabled": true
    },
    "browser-tools": {
      "type": "local",
      "command": ["npx", "-y", "@agentdeskai/browser-tools-mcp"],
      "enabled": true
    }
  }
}

配置差异对比

配置项Claude CodeOpenCode
顶层 keymcpServersmcp
type不需要必须(local
command字符串数组

使用示例

配置好后可以用自然语言驱动测试:

1
2
3
4
5
claude "打开 localhost:3000,测试登录流程,验证是否跳转到首页"

claude "截图对比 mobile/tablet/desktop 三种尺寸下的首页布局"

claude "检查页面 console 是否有报错"

效果展示

VM 远程桌面运行 Claude Code

总结

VM + Claude Code + Playwright MCP 的组合提供了一个隔离、可复现的自动化开发测试环境。整个流程:

  1. PVE 创建 Ubuntu Desktop VM
  2. 配置 Xfce + xrdp 远程访问
  3. 安装 Claude Code / OpenCode
  4. 配置 Playwright MCP
  5. 用自然语言驱动自动化测试