團隊想在私有網路裡用 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 的問題。