Gemini API 托管代理上线免费层:我不用再为写个自动化脚本单独起一台服务器了

上周Google AI Studio在X上发了一条更新,说Gemini API的托管代理(Managed Agents)现在有了免费层、预算控制和定时触发。这三件事放在一起看,其实指向同一个方向——Google想把托管代理从“能跑”推到“随便跑”。

我最早接触Antigravity代理的时候,最大的感受是这东西真能干活,但真不敢敞开了用。一个代理跑起来,推理、代码执行、文件操作、网络请求,一圈下来token消耗根本刹不住。你让它“克隆一个仓库,扫一遍代码,生成一份报告”,它真能干,但账单也可能让你心疼。现在这三个更新,相当于给代理上了三道保险:免费层让你敢试,预算控制让你不怕超,定时触发让你不用再手写cron脚本。

这篇文章不打算逐条翻译官方公告,而是从实际使用的角度拆一拆这三个功能到底解决了什么问题、怎么用、以及我个人的一些判断。

免费层:不绑信用卡也能跑代理了

先说最直观的变化——托管代理现在对免费层项目开放了。

以前你想跑Antigravity代理,项目必须开通计费。哪怕你只是想试试水、跑个几万token的demo,也得走一遍绑定信用卡的流程。对个人开发者或者还在验证阶段的小团队来说,这个门槛其实不低——不是钱的问题,是心理成本和流程成本。

现在规则改了:只要你的API Key关联的是一个没有激活计费的免费项目,调用托管代理就不会产生费用,按免费层的速率限制和用量配额来跑。

这意味着什么?意味着你可以直接拿一个免费项目去跑代理,验证它能不能解决你的实际问题,再决定要不要上付费。这个“先试后买”的路径,对技术选型阶段的团队来说非常友好。

不过有个细节需要注意——免费层有速率限制。官方文档里提到了“free rate limits and usage quota”。具体数字我没在公告里看到,但按照Gemini API其他免费层的惯例,RPM(每分钟请求数)和TPM(每分钟token数)都会有限制。如果你打算用免费层跑高频任务,建议先确认一下配额是否够用。

另外,免费层和付费层共用同一套API接口,代码不用改。你只需要确保项目没有绑定计费方式,请求就会自动走免费层通道。

我的看法:免费层开放托管代理,最大的价值不是“省钱”,而是“降低尝试成本”。代理类产品和普通API调用不一样——你很难通过看文档判断它能不能完成你的任务,必须实际跑一遍才知道。免费层把“跑一遍”的成本从“绑卡”降到了“拿Key就用”,这个变化会直接影响开发者的采纳意愿。

预算控制:给代理上“财务安全锁”

这是三个功能里我最看重的一个。

Antigravity代理的运行机制是自主循环——它收到任务后,会自己规划步骤、调用工具、执行代码、观察结果,然后决定下一步做什么。这个循环可能跑几轮,也可能跑几十轮。每一轮都会消耗token(输入、输出、思考都算)。

问题在于:你很难在任务开始前准确预估它会消耗多少token。

举个真实场景。你让代理“克隆guava仓库,审计所有模块,生成迁移报告”——这个任务听起来很明确,但代理实际跑起来可能会:克隆代码、遍历目录、读取文件、分析依赖、生成报告……每一步都可能产生大量token。如果某个环节出了意外(比如网络超时、文件权限问题),代理可能会反复重试,token消耗直接失控。

预算控制解决的就是这个问题。

怎么用

agent_config里传一个max_total_tokens参数:

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
  agent: "antigravity-preview-05-2026",
  input: "Clone https://github.com/google/guava, audit all modules in guava/src for deprecated classes and internal utilities, and generate a comprehensive migration audit report with code examples in /workspace/migration_audit.md.",
  agent_config: {
    type: "antigravity",
    max_total_tokens: 10000,  // 总token上限:输入+输出+思考
  },
  environment: "remote",
});

console.log(`Status: ${interaction.status}`);
console.log(`Tokens used: ${interaction.usage?.total_tokens}`);

max_total_tokens控制的是整个交互消耗的token总数,包括输入token、输出token和思考token。一旦达到上限,代理会安全停止,返回status: "incomplete"

停了之后怎么办

代理停了,但工作没丢。

官方文档里有一句话很关键:“Your agent’s work and environment filesystem state are preserved”。也就是说,代理停止时,沙盒里的文件、已安装的包、克隆的仓库都还在。你可以通过SSE流式传输监控执行进度,然后接上之前的环境继续跑。

继续的方式是发起一个新的interaction,传入previous_interaction_idenvironment,再给一个新的预算:

if (interaction.status === "incomplete") {
  const continuation = await client.interactions.create({
    agent: "antigravity-preview-05-2026",
    input: "continue",
    previous_interaction_id: interaction.id,
    environment: interaction.environment_id,
    agent_config: {
      type: "antigravity",
      max_total_tokens: 10000,  // 新预算
    },
  });
  console.log(`Continuation status: ${continuation.status}`);
}

这个设计很实用——预算设小了没关系,续上接着跑就行。你可以把预算设得保守一点,先跑一段看看消耗速度,再决定要不要给更多预算。

我的判断:预算控制不是“省钱工具”,是“风险管理工具”。托管代理的计费逻辑和普通API不一样——它不是按单次请求计费,而是按整个交互周期计费。一个交互可能包含几十次工具调用和代码执行,token累积速度远超你的直觉。没有预算控制,你不敢把代理放进生产环境。有了它,你才敢让代理“放开了跑”——反正有上限兜底。

定时触发:不用再写cron脚本了

第三个功能是定时触发(scheduled triggers)。

以前要让代理定时干活,你得自己搭一套调度基础设施——写cron表达式、配服务器、处理日志、处理失败重试。如果是小任务,你可能懒得折腾;如果是大任务,你又得专门维护一套系统。

现在Gemini API直接把调度能力内置了。

怎么用

创建一个Trigger,绑定代理、环境、提示词和cron调度:

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const trigger = await client.triggers.create({
  schedule: "0 9 * * *", // 每天早上9点
  time_zone: "America/Los_Angeles",
  display_name: "daily-issue-solver",
  interaction: {
    agent: "antigravity-preview-05-2026",
    input: [
      {
        type: "text",
        text: "Review open PRs in our repo for new comments and address feedback. Check for new issues labeled 'accepted', skip any tracked in /workspace/solved-issues/, fix the rest, and open PRs. Save reports to /workspace/solved-issues/.",
      },
    ],
    environment: {
      type: "remote",
      network: {
        allowlist: [
          {
            domain: "api.github.com",
            transform: {
              Authorization: "Bearer ghp_example_token",
            },
          },
          { domain: "github.com" },
        ],
      },
    },
  },
});

console.log(`Trigger created: ${trigger.id}`);
console.log(`Next scheduled run: ${trigger.next_run_time}`);

创建之后,Trigger会按cron自动执行。每次执行都复用同一个沙盒环境——这意味着上一次任务创建的文件、克隆的仓库、安装的包,下一次执行时都还在。

比如上面的例子,每天早上去GitHub扫一遍新issue,处理完把已解决的记录到/workspace/solved-issues/。第二天再跑的时候,代理可以读取这个文件,跳过已经处理过的issue,避免重复工作。

查看执行历史也很简单:

const executions = await client.triggers.listExecutions(trigger.id);
for (const ex of executions.trigger_executions) {
  console.log(`${ex.id}: ${ex.status} (${ex.start_time} - ${ex.end_time})`);
}

适用场景

官方文档里举了几个例子:每日issue分类、夜间回归报告、定时仓库维护。我还能想到几个:

  • 每日代码质量扫描:让代理每天凌晨跑一遍静态分析,把报告推到指定渠道。
  • 定时数据抓取:从指定网站抓取数据、整理、存库。
  • 自动化文档更新:每周自动拉取最新代码、生成API文档、提交PR。
  • 监控告警预处理:定时检查系统状态,发现问题先让代理做初步诊断,再决定是否告警。

关键是,这些任务都不需要你额外维护调度服务。一个Trigger资源就搞定了,而且和代理的运行环境天然打通——文件持久化、网络配置、凭证管理都在同一套体系里。

我的看法:定时触发看起来是个小功能,但它改变了托管代理的定位——从“按需调用的工具”变成了“持续运行的自动化组件”。加上预算控制之后,你可以放心地让代理在生产环境里定时跑任务,不用半夜爬起来看账单。

托管代理到底在什么环境下跑?

聊完三个新功能,有必要说一下托管代理的运行环境——不然你可能会疑惑“它到底在哪跑代码”。

托管代理跑在Google托管的隔离Linux沙盒里。你调用一次Interactions API,Google就会预配一个沙盒,代理在里面做推理、执行代码、管理文件、访问网络。

沙盒有几个特点:

  • 操作系统级隔离,每个代理的环境相互独立。
  • 预装Python 3.12和Node.js 22,基于Ubuntu。
  • 文件在多次交互之间持久保留
  • 默认有不受限制的出站网络访问,也可以用allowlist限制。
  • 环境闲置7天后会被删除

这意味着你可以让代理克隆一个仓库、修改代码、跑测试、提交PR——整个过程都在一个真实的Linux环境里完成,和你在本地开发机上的操作没有本质区别。

另外,Interactions API本身在2026年6月已经正式GA(General Availability)了。它不是实验性功能,是Google官方推荐的Gemini模型和Agent的首要接口。

一些我觉得值得留意的细节

上下文压缩:托管代理在token达到约13.5万时会自动执行上下文压缩。这意味着长时间运行的任务不会因为上下文太长而炸掉。但压缩是有损的——代理可能会丢失一些早期细节。如果你的任务对上下文完整性要求很高,需要注意这一点。

环境冷启动:沙盒在闲置一小段时间后会被关机以节省资源,下次请求会通过冷启动恢复状态。冷启动有延迟,如果你的任务对延迟敏感,需要考虑这个因素。

代理数量上限:每个项目最多可以创建1000个托管代理。对大多数团队来说够用了,但如果你的场景需要大量代理实例,这个限制需要注意。

凭证安全:网络配置里可以通过transform注入认证头。Google的建议是:用最小权限的服务账号、用短期有效令牌、定期轮换凭证。这些建议不是废话——代理能访问你配置的所有凭证,权限给大了风险很高。

总结

这三个更新放在一起看,逻辑是清晰的:

免费层解决“能不能试”的问题——不绑卡就能跑,降低了尝试门槛。

预算控制解决“敢不敢跑”的问题——有token上限兜底,不怕账单失控。

定时触发解决“要不要专门搭系统”的问题——内置调度,不用额外维护cron基础设施。

对开发者来说,这意味着托管代理从一个“需要小心翼翼使用的实验性工具”,变成了一个“可以放进生产环境长期运行的自动化组件”。

当然,它还不是万能的。13.5万token的自动压缩在某些场景下可能丢失信息,冷启动延迟对实时性要求高的任务不友好,免费层的速率限制需要你提前确认是否够用。但这些都不是致命问题——知道边界在哪里,在边界内用好它,才是更务实的做法。

如果你还没试过托管代理,现在可能是最合适的时机——免费层开着,预算控制兜着,定时触发帮你省掉一堆运维活。剩下的问题就是:你想让它帮你干什么?


一页速览

功能 解决什么问题 怎么用
免费层 不绑卡就能跑代理,降低尝试门槛 用未激活计费的项目API Key即可
预算控制 防止token消耗失控,避免意外账单 agent_config中传max_total_tokens
定时触发 不用维护cron基础设施 创建Trigger资源,绑定cron表达式
沙盒环境 代理在真实Linux环境运行 调用Interactions API自动预配
上下文压缩 防止长时间任务token溢出 自动触发,无需配置

FAQ

免费层的速率限制具体是多少?
公告中没有给出具体数字,建议查阅Gemini API官方定价页面获取最新的免费层配额信息。

预算控制的max_total_tokens包含哪些token?
包含输入token、输出token和思考token的总和。

代理达到预算上限后,数据会丢失吗?
不会。沙盒的文件系统状态会被保留,你可以通过previous_interaction_idenvironment继续任务。

定时触发器的最小间隔是多少?
cron表达式支持分钟级调度,具体最小间隔取决于你的配额和任务耗时。

多个Trigger可以共用同一个环境吗?
每个Trigger可以绑定独立的environment配置,也可以复用同一个环境ID。

托管代理支持哪些编程语言?
官方提供TypeScript/JavaScript SDK示例,同时也支持Python和cURL。

免费层和付费层的代码有区别吗?
没有区别,同一套API接口,只是项目是否开通计费决定了走哪条通道。

环境最长能保留多久?
闲置7天后会被永久删除。