最近 ClawCloud Run 发布了公告:[Important Notice] Update on Idle Resource Reclamation Policy for Free Plan Users(https://question.run.claw.cloud/questions/10010000000002545)。

简单理解:免费套餐如果长期没有访问,资源可能会被回收。对想长期保留免费实例的用户来说,需要有一个稳定、自动的“定期访问”。

这篇文章用最简单的方式介绍一个开源方案:

  • 项目地址:https://github.com/Ken2626/claw-keepalive-vercel
  • 作用:每周自动触发一次 GitHub 登录 ClawCloud Run,形成“有访问”的保活行为。

这套方案在做什么

整体流程只有三步:

  1. Val Town 按你设置的 cron(例如每周一次)触发。
  2. Val Town 调用 Vercel 的 POST /api/keepalive
  3. Vercel 在函数里启动浏览器自动化,用你的 GitHub 账号登录 ClawCloud Run 登录页。

这不是“绕过规则”,而是在规则内定期访问你的实例,降低被判定长期空闲的概率。

开始前你要准备什么

  • 一个 GitHub 账号(必须开启 2FA 的 Authenticator)
  • 一个 Vercel 账号
  • 一个 Val Town 账号

重点:必须先拿到 GITHUB_OTP_SECRET(base32)

GitHub 开启 2FA 时,请按这个顺序:

  1. 打开 Settings -> Password and authentication -> Two-factor authentication
  2. 选择 Authenticator app
  3. 在二维码页面先显示并复制 setup key(base32),保存为 GITHUB_OTP_SECRET
  4. 再扫码绑定认证器并完成验证。

如果你先扫码但没保存 setup key,后面就很难在自动化里生成 TOTP 验证码。

一步步部署

1) Fork 并导入 Vercel

  1. Fork 仓库到你自己的 GitHub。
  2. 在 Vercel 导入这个仓库并先部署一次。

2) 配置 Vercel 环境变量(建议都设为 Sensitive)

至少配置这些:

  • CRON_SECRET:Val Town 调用 API 的鉴权密钥(自己生成长随机字符串)
  • GITHUB_USERNAME:你的 GitHub 用户名或邮箱
  • GITHUB_PASSWORD:你的 GitHub 密码
  • GITHUB_OTP_SECRET:上一步拿到的 base32 setup key
  • CLAW_SIGNIN_URL:你的机房登录地址(例如 https://eu-central-1.run.claw.cloud/signin

保存后按提示 Redeploy。

3) 配置 Val Town cron

  1. 新建 Val,把 main.ts 内容替换为仓库里的 valtown/main.ts
  2. 在 Val Town 环境变量中设置:
    • VERCEL_URL=https://<your-project>.vercel.app/
    • CRON_SECRET=<和 Vercel 中一致>
  3. 在 Val Town UI 里把计划任务设为每周执行一次。

如何确认已经生效

你可以看两侧日志:

  • Val Town:应看到 main.ts 定时触发记录
  • Vercel:/api/keepalive 返回 200

如果你看到 401,通常是 CRON_SECRET 不一致。如果你看到 500,通常是 GitHub 登录信息、2FA 密钥或 CLAW_SIGNIN_URL 配置错误。

安全注意事项

  • 不要把 .env 提交到仓库。
  • 所有敏感变量在 Vercel/Val Town 中都标记为 Sensitive。
  • 如果你曾把密钥打到公开日志里,立即轮换:
    • CRON_SECRET
    • GITHUB_PASSWORD
    • GITHUB_OTP_SECRET

结论

如果你正在受这个新空闲回收策略影响,这个项目的优势是:

  • 免费可用
  • 配置简单
  • 自动化稳定

对大多数免费用户来说,这是当前“低成本、可维护”的保活实践。