这里有两个独立的步骤:生成一条新的 OpenRouter 支付链接,以及支付这条链接。CLI 可以自动支付已有的链接,但不会替你生成下一条 OpenRouter 充值链接。
这一页先讲清楚这个约束,再讲那些在实践中真正管用的替代做法。ROZO Checkout 是一个独立的第三方收银台,与 OpenRouter 无隶属关系。

把生成支付链接和付款分开看
auto top-up 的运作方式,是扣一个事先存好的支付方式。必须有人能在你不在场的那一刻把你的钱挪走。对信用卡来说,存卡的意义就在这里。
自托管钱包可以每笔交互式签名,也可以由本地软件用你授权它使用的密钥签名。自托管本身并不排除自动化。
无人值守付款时,签名方需要有花钱的权限:例如可选的 CLI --send 模式使用的本地专用热钱包。这不同于由托管服务保管你的余额,也不同于允许合约花钱的代币授权额度。
授权签名方并不能解决支付链接的生成问题。请把这一步单独明确处理,不要假定 cron 任务能生成新的 OpenRouter 账单。
余额归零时到底会坏成什么样
这里值得说具体一点,因为失败的方式并不体面。
一个长时间运行的任务不会礼貌地暂停下来等钱到账。请求开始失败,而根据你的客户端怎么处理错误,你可能收到一连串失败、一个只跑了一半的批次,或者一个在空余额上不断重试、白白烧时间的循环。在有人发现并手动充值之前,一切都是坏的。
代价很少是充值本身。代价是你得从头再跑一遍的那次运行,以及从余额归零到你发现之间的那段时间。
真正靠得住的替代做法
这些做法都不聪明。它们管用,是因为它们减少了这个问题出现的频率。
- 按你的消耗速度留缓冲,而不是按最低额度。如果一个高负载的日子会花掉某个数额,就在余额上留够好几天的量。一次充多点、少充几次,严格优于反复只充最低额。
- 在长任务开始前充,而不是跑到一半再充。你意识到某个批次会很贵的那一刻,正是加钱成本最低的时刻。
- 在你本来就会看的地方盯余额。一个你从来看不到的数字,就是一个会突然吓到你的数字。把它放在你反正会路过的位置。
- 让充值本身足够快,这样缓冲策略才行得通。这部分我们能帮上忙:粘贴链接,在钱包里确认,通常在付款链上确认后约 2 分钟到账。手动之所以痛苦,只是因为手动很慢。
用 CLI 或 cron 自动付款
OpenRouter 以前提供可以被脚本调用的加密货币充值 API。截至 2026 年 10 月,这个接口(POST /api/v1/credits/coinbase)返回 410 Gone,所以支付链接本身必须在 OpenRouter 的 Credits 页面生成。
有了链接之后,付款可以脚本化。ROZO Checkout CLI 一条命令就能报价和付款,agent 或 cron 任务都能跑:
- npx @rozoai/checkout quote <link>
- npx @rozoai/checkout pay <link> --with usdt-solana --yes
默认路径不需要私钥和环境变量:它创建一次性存款订单,打印地址和准确金额,并等待账单结算。币仍由你从自己的钱包转出,所以上面说的自托管原则不变。想完全无人值守,可选参数 --send 会用本地密钥在 EVM 链或 Solana 上签名,请为此使用余额很少的专用热钱包,因为本地签名方可以花掉其中的资金。
要核实付款,运行 npx @rozoai/checkout receipt <rozoPaymentId> --json。只有 Coinbase 报告账单已支付时,它才以 0 退出;对 v3 来说,这意味着 CAPTURE_SUCCEEDED。退出码 3 表示处理中或未知,退出码 1 表示已过期未支付或需要人工审核。status 命令以 0 退出只说明检查跑完了:要读它的 state、paymentOutcome 和 nextAction。credits 是否到账,要另外在 OpenRouter 确认。
当前命令以及两种受支持的 Coinbase URL 格式(payment link 和 payment session)见 ROZO Checkout CLI README。我们的 AI agent 指南介绍了 CLI、MCP 服务器和 Claude Code skill。
如果你还是想要完全自动化
选择付款如何授权,再另外决定如何取得新的支付链接。
本地签名可以在没有托管余额的情况下自动完成已准备好的付款。限制该签名方可用的资金,授予权限前先看报价,重试前先查 receipt。如果改用托管服务,请看清它的访问、提现和退款条款。
对大多数跑 agent 的人来说,一份缓冲加上一次 30 秒的手动充值,最后的运营风险反而比在别处放一笔常驻余额更小。