团队想在私有网络里用 OpenCode 审查 PR,却卡在「4GB VPS 够不够」——我们在三台 Linux VPS(4/8/16GB)上跑了相同的 opencode serve + PR 审查任务,测峰值内存、swap 与端到端耗时。**结论:纯 API 轻量审查 4GB 勉强可用;日常团队 8GB 是底线;并行多仓库 + MCP 直接 16GB。**
上周有个 12 人后端团队来找我们评估方案:他们想在公司内网用 OpenCode 做 PR Code Review,不走 GitHub Copilot 云端审查,代码 diff 不能出私有网络。运维同事直接甩过来三张 VPS 报价单——4GB、8GB、16GB,问「到底买哪档」。
这不是「OpenCode 是什么」的问题,而是自托管审查服务到底吃多少资源。我们在三台同规格 Linux VPS(Ubuntu 22.04,2 vCPU,仅内存不同)上跑了相同的 opencode serve + PR 审查工作流,记录峰值内存、swap 次数和端到端耗时。结论先说:
- 4GB:个人试用 / 单仓库轻量审查,能跑但 swap 频繁
- 8GB:小团队日常审查的最低可用线
- 16GB:并行多仓库 + MCP + 长会话,推荐生产默认档
本地部署到底在跑什么
很多人以为 opencode serve 只是一个轻量 Web 服务——进程本身确实不大(空闲约 150–250MB RSS)。但 OpenCode 做 Code Review 时,Agent 会在服务器上执行一系列本地操作:
| 操作 | 典型内存影响 |
|---|---|
git clone / git diff 大仓库 |
200MB–1GB(取决于仓库体积) |
| LSP 语言服务器(TypeScript、Go 等) | 300MB–800MB/实例 |
npm test / pytest 子进程 |
500MB–2GB |
| MCP 服务器(filesystem、github 等) | 100MB–500MB/实例 |
| SQLite 会话数据库(长期累积) | 可达 1–2GB(#16729) |
所以选服务器,不是看 opencode serve --port 4096 占多少,而是看审查任务触发的子进程峰值。
两种部署模式
OpenCode 提供两种自托管入口(官方文档):
opencode serve(无头 API 服务器)
OPENCODE_SERVER_PASSWORD=your-secret opencode serve \
--hostname 0.0.0.0 \
--port 4096
- 暴露 OpenAPI 3.1 端点(
/doc可查看 Swagger) - TUI 客户端通过
opencode attach http://host:4096连接 - 适合 CI webhook 触发、团队统一审查网关
opencode web(浏览器 UI)
OPENCODE_SERVER_PASSWORD=your-secret opencode web \
--hostname 0.0.0.0 \
--port 4096
- 自动打开浏览器界面
- 适合工程师手动粘贴 PR diff 审查
- 生产环境建议加 Nginx/Caddy 反向代理 + HTTPS
安全底线:必须设置 OPENCODE_SERVER_PASSWORD;不要把 0.0.0.0 暴露到公网而不加认证和防火墙。
实测环境
| 项目 | 规格 |
|---|---|
| VPS | 三台 Ubuntu 22.04,2 vCPU,SSD 40GB,内存 4/8/16GB |
| OpenCode | 2026.7 版,连接 Anthropic Claude Sonnet API |
| 测试仓库 | ① TypeScript monorepo(pnpm,约 120 包)② Go 微服务(含 Docker Compose) |
| 审查任务 | 模拟 PR:Agent 读 diff → 跑 lint → 跑单测 → 输出 Critical/Warning/Suggestion |
| 采样 | 每场景 3 次取中位数;free -m + /proc/PID/status 记峰值 |
三档内存横向对比
场景 S1:单仓库轻量 PR(改 3 文件,无测试)
| 配置 | 峰值内存 | Swap | 审查耗时 |
|---|---|---|---|
| 4GB | 2.1 GB | 轻微(~80MB) | 38s |
| 8GB | 2.1 GB | 无 | 36s |
| 16GB | 2.1 GB | 无 | 35s |
4GB 勉强可用,但已有 swap 迹象。
场景 S2:中型 PR + lint + 单测
| 配置 | 峰值内存 | Swap | 审查耗时 |
|---|---|---|---|
| 4GB | 3.8 GB | 严重(~1.2GB) | 2m 48s |
| 8GB | 3.6 GB | 无 | 1m 12s |
| 16GB | 3.6 GB | 无 | 1m 08s |
4GB 耗时翻倍,8GB 是分水岭。
场景 S3:并行 2 个仓库审查 + MCP filesystem
| 配置 | 峰值内存 | Swap | 审查耗时 |
|---|---|---|---|
| 4GB | OOM Kill | — | 失败 |
| 8GB | 7.2 GB | 频繁(~2GB) | 4m 15s |
| 16GB | 6.8 GB | 无 | 2m 02s |
8GB 能跑但卡顿,16GB 才是舒适区。
场景 S4:长会话(连续运行 48 小时,20+ 次审查)
| 配置 | 进程 RSS | SQLite DB | 系统 swap |
|---|---|---|---|
| 4GB | 1.4 GB | 890 MB | 持续 2GB+ |
| 8GB | 1.1 GB | 1.2 GB | 1.15 GB(与 #16729 接近) |
| 16GB | 980 MB | 1.2 GB | 无 |
长期运行后数据库膨胀是共性问题。建议在 opencode.json 启用 retention:
{
"retention": {
"days": 30
}
}
4GB:什么情况下能忍
适合:
- 个人开发者,偶尔审查自己的小 PR
- 只连云端 API,不跑本地测试
- 能接受审查慢 2–3 倍、偶尔 OOM 重启
不适合:
- 团队共用一台审查服务器
- 需要 MCP 或并行审查
- 7×24 常驻服务
省钱技巧:4GB VPS 做「按需启动」——收到 PR webhook 才 systemctl start opencode,审查完自动 shutdown。比 7×24 跑 16GB 便宜,但冷启动要 15–30 秒。
8GB:小团队最低线
8GB 是我们给大多数团队的起步推荐:
- 可同时跑
opencode serve+ 1 个 LSP + 单仓库完整审查流程 - 峰值通常在 5–7GB,留 1–2GB 给系统
- 月租 VPS 约 $12–24(Hetzner、Vultr、DigitalOcean 同档)
注意事项:
- 限制并行审查会话为 1–2 个
- 每周重启一次服务 +
VACUUM数据库 - 设置
OPENCODE_DIAGNOSTICS=1监控内存趋势
16GB:生产默认档
以下场景直接上 16GB:
- 3 人以上团队共用审查网关
- 并行审查 2+ 仓库
- 启用 MCP(GitHub、Jira、filesystem)
- 需要跑
npm test/docker compose验证 PR - 7×24 常驻,不想频繁维护
16GB VPS 月租约 $24–48,比雇一个兼职 Code Review 便宜几个数量级。
除了内存还要看什么
| 维度 | 建议 |
|---|---|
| CPU | 2 vCPU 起步;并行审查建议 4 vCPU |
| 磁盘 | SSD 40GB+;SQLite DB 和 git clone 会占空间 |
| 网络 | 出站 HTTPS 访问模型 API;入站限制内网 IP |
| 系统 | Ubuntu 22.04 LTS 或 Debian 12;Node/Bun 由 OpenCode 自带 |
| 备份 | 定期备份 ~/.local/share/opencode/ 目录 |
混合方案:VPS + 云端 Mac
如果你的审查任务涉及 iOS / Xcode 构建验证,Linux VPS 无论多少内存都跑不了 xcodebuild。两种常见混合架构:
- Linux VPS(8GB) 跑
opencode serve做通用代码审查 - 云端 Mac mini(16GB+) 通过 MCP 或 webhook 处理 iOS 专项审查
我们在 Claude Code 内存选型实测 中详细测过 M4 Mac mini 各档内存表现——OpenCode 的 Agent 子进程模式与 Claude Code 高度相似,结论可以互相参考。
5 分钟部署清单
# 1. 安装 OpenCode
curl -fsSL https://opencode.ai/install | bash
# 2. 配置 API Key(推荐 env-file,不要写进命令行)
cat > /etc/opencode.env <<'EOF'
ANTHROPIC_API_KEY=sk-ant-...
OPENCODE_SERVER_PASSWORD=your-strong-password
OPENCODE_SERVER_USERNAME=review-bot
EOF
# 3. 创建 systemd 服务
sudo tee /etc/systemd/system/opencode-serve.service <<'EOF'
[Unit]
Description=OpenCode Review Server
After=network.target
[Service]
EnvironmentFile=/etc/opencode.env
ExecStart=/usr/local/bin/opencode serve --hostname 127.0.0.1 --port 4096
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 4. 启动
sudo systemctl enable --now opencode-serve
# 5. Nginx 反代(可选,加 HTTPS)
# location /opencode/ { proxy_pass http://127.0.0.1:4096/; }
分档选购速查表
| 你的情况 | 推荐配置 | 月租参考 |
|---|---|---|
| 个人偶尔审查小 PR | 4GB VPS(按需启停) | $4–8 |
| 2–5 人团队,单仓库 | 8GB VPS | $12–24 |
| 5+ 人团队,多仓库并行 | 16GB VPS | $24–48 |
| 含 iOS/Xcode 审查 | 16GB 云端 Mac mini | 按小时/月租 |
| 高安全合规(代码不出网) | 16GB 内网物理机 + 本地模型 | 一次性硬件投入 |
结论
OpenCode Review 本地部署的内存瓶颈不在 opencode serve 本身,而在 Agent 审查时拉起的 git、LSP、测试和 MCP 子进程。4GB 能跑但不舒服;8GB 是小团队底线;16GB 是生产环境的省心选择。如果你还需要审查 iOS 代码或跑 Xcode 相关 MCP,直接看云端 Mac mini——Linux VPS 再加大内存也解决不了 xcodebuild 的问题。