对于 OpenClaw、Hermes 这类面向个人开发者的 AI Agent,传统的无状态 Web 服务模型并不总是合适。它们通常需要长期运行、保存状态,而且大多数时间只服务一个用户。Cloud Run 实例正是为这类单实例、长生命周期工作负载提供了更贴近实际的运行方式。
为什么 Cloud Run 服务不够合适
Cloud Run 服务擅长处理无状态、高吞吐的 HTTP 请求。当一段时间没有请求时,服务可以缩容到零,从而节省成本。但一个持续运行的个人 Agent 往往有不同的要求:
- 希望始终只有一个副本运行,避免多个 Agent 同时处理同一份状态。
- 需要保留配置、会话和工具连接。
- 可能通过 Telegram、WhatsApp 或其他平台持续接收事件。
- 不能因为用户的笔记本合盖或休眠而停止工作。
使用专用虚拟机可以解决长期运行问题,但代价是需要持续支付完整的计算资源,并自行处理操作系统更新、防火墙、HTTPS 入口和运行环境维护。
Cloud Run 实例提供了一个介于两者之间的选择:它在 Cloud Run 上运行一个专用的单例计算运行时,同时保留托管平台的网络和部署体验。
Cloud Run 实例的运行模型
Cloud Run 实例目前处于预览阶段,核心特征包括:
- 只运行一个实例,不进行自动扩缩容。
- 最长可连续运行 7 天,并默认配置自动重启策略。
- 每个实例拥有一个 HTTPS URL,该 URL 在更新和重启后保持不变。
- 不使用时可以停止实例,需要时再恢复。
- 采用共享 vCPU 和突发计算预算,适合大多数时间空闲、被请求时短暂增加计算量的 Agent。
以 1 vCPU、1 GiB 内存的实例连续运行 30 天为例,摘要给出的成本是 5.70 美元。实际费用仍应结合区域、网络流量、存储和其他相关资源核算,不能只看计算实例价格。
这种模型尤其适合不持续执行重计算的个人 Agent:Agent 平时等待消息或定时任务,只有在用户提出问题、调用工具或执行自动化流程时才出现计算峰值。
实践:部署 OpenClaw
下面的命令展示了一个可改造的部署示例。假设你已经完成以下准备工作:
- 已安装并登录
gcloud。 - 当前项目已经启用 Cloud Run 和 Cloud Storage 相关能力。
- 已将 OpenClaw 配置文件上传到一个 Cloud Storage bucket。
- 已设置
BUCKET、PASSWORD和GEMINI_API_KEY环境变量。
命令中的镜像、端口、挂载路径和环境变量需要根据实际 Agent 镜像进行调整:
export BUCKET="your-openclaw-config-bucket"
export PASSWORD="replace-with-a-strong-password"
export GEMINI_API_KEY="replace-with-your-api-key"
gcloud beta run instances create openclaw-instance \
--image ghcr.io/openclaw/openclaw:latest \
--port 18789 \
--public \
--add-volume \
mount-path=/home/node/.openclaw,\
type=cloud-storage,\
mount-options="uid=1000;gid=1000;file-mode=0700;dir-mode=0700",\
bucket="${BUCKET}" \
--set-env-vars \
"OPENCLAW_GATEWAY_PASSWORD=${PASSWORD},GEMINI_API_KEY=${GEMINI_API_KEY}"
部署前应检查几个关键点:
--public会让实例通过公开 HTTPS 入口访问。必须使用强密码,并确认 Agent 自身的认证和授权配置已经启用。- 不要把真实密钥直接提交到 Shell 历史记录、脚本仓库或日志系统。生产环境可以改用更合适的密钥管理方式,并限制访问权限。
- Cloud Storage 挂载目录用于保存 Agent 配置和状态时,要确认容器用户的 UID、GID 以及文件权限与镜像内部用户一致。
- 使用
:latest便于快速试用,但生产部署更适合固定镜像版本,避免一次更新改变运行行为。 - Agent 的外部平台连接、回调地址和工具权限仍然需要单独配置。Cloud Run 实例解决的是运行时托管问题,不会自动替代 Agent 的安全边界。
实例创建完成后,可以继续让它运行,也可以在不使用时停止。由于实例 URL 在更新和重启后保持不变,外部集成不必随着每次重启重新修改地址。
适合什么场景
Cloud Run 实例适合以下类型的工作负载:
- 个人 AI 助手和长期运行的 Agent。
- 需要单例状态的自动化机器人。
- 持续等待消息、Webhook 或定时事件的轻量服务。
- 大部分时间低负载,但偶尔需要突发计算的任务。
- 希望减少虚拟机维护工作,同时又不能接受服务频繁缩容到零的应用。
它并不意味着所有后台任务都应该迁移到实例。高吞吐、可水平扩展的无状态 API 仍然更适合 Cloud Run 服务;持续占用大量 CPU 或需要超过 7 天不间断运行的任务,也应评估其他计算产品。对于需要复杂持久化、队列、分布式锁或多副本容灾的系统,还需要额外设计数据和协调层。
上线前检查清单
可以按下面的顺序评估是否采用 Cloud Run 实例:
- Agent 是否明确需要长期运行,并且只需要一个副本?
- 状态是否保存在持久化存储,而不是只写入容器本地文件系统?
- 实例停止或自动重启后,Agent 能否恢复工作?
- 是否已经限制公开入口、密钥和第三方工具权限?
- 负载是否以等待为主,而不是持续占满 CPU?
- 是否能接受预览阶段的产品边界和最长 7 天连续运行限制?
- 是否同时估算了计算、存储、网络流量和外部 API 成本?
如果这些问题的答案大多是肯定的,Cloud Run 实例可以成为个人 AI Agent 的一个务实运行环境:比本地笔记本稳定,比长期维护虚拟机轻量,并且能以相对可预测的成本承载持续在线的单例工作负载。