Google 为托管智能体加入环境钩子与预算控制
运行时开始同时承载策略、成本和调度,但钩子故障默认放行。
本文要点
- 现有预览智能体从旧默认模型切换为 Gemini 3.6 Flash,下次交互自动生效。
- 工具调用前后新增可编程钩子,允许在沙盒内阻断、校验或审计。
- 单次交互可设 token 预算,达到上限后保留状态并暂停。
阅读辅助
先看数字、证据和来源,再读正文。
Gemini 3.6 Flash 现在是 antigravity-preview-05-2026 的默认模型。
2026-07-07 · Google 扩展 Managed Agents,加入后台任务与远程 MCP 服务器集成。
Google 在 7 月 28 日为 Gemini API Managed Agents 增加环境钩子、显式模型选择、token 预算、定时触发、免费层入口和环境管理接口。托管智能体的控制面由此开始成形,服务重点从单纯运行任务推进到约束、暂停和重复调度任务。
本次默认变化有严格范围:antigravity-preview-05-2026 现在默认运行 Gemini 3.6 Flash。如果调用方省略 agent_config,下一次 interaction 会自动使用 gemini-3.6-flash,无需改代码;调用方也能显式钉住 Gemini 3.5 Flash 或 3.5 Flash-Lite。这是已有预览智能体的默认底层模型切换,Gemini 3.6 Flash 已在此前发布。
控制能力并不等于默认安全。pre_tool_execution 能在工具真正运行前返回 deny,post_tool_execution 则只能在动作完成后做格式化、测试或审计。更关键的限制是:脚本崩溃、HTTP 返回非 2xx、超时或输出无法识别的 JSON 时,运行时会把它当作 allow,继续执行工具。Google 用这种故障放行避免遥测或 lint 服务卡死整个应用,但安全关键团队不能把“装了钩子”直接等同于“危险动作必然被拦住”。
开发者得到的是一组更清楚的运行边界,企业平台团队得到的则是一组仍需二次设计的策略接口。免费层降低试验门槛,预算参数缓解失控消耗,cron trigger 支持无人值守任务;然而免费层有配额、预算是 best-effort、定时执行会重用同一环境,这些条件决定了它们仍需要配额监控、故障策略和环境卫生配套。
默认值变了,产品没有重新首发
Google 原文的状态动词是 “is now the default” 和 “No code changes are required. Your next interaction picks it up automatically.” 忠实的中文应是:Gemini 3.6 Flash 现在成为 antigravity-preview-05-2026 的默认模型;既有调用无需修改代码,下一次交互自动采用。这里没有“再次提高”或“重新发布”的含义,也没有说所有 Gemini API 请求都被强制迁移。
这个范围差异很重要。antigravity-preview-05-2026 是 Managed Agents 使用的预览智能体标识,底层模型可由 agent_config.model 指定。省略配置时才走默认值;如果企业为了回归稳定性显式固定 Gemini 3.5 Flash 或 Flash-Lite,新默认不会替它改写配置。Google 当前列出的三种选择,分别承担均衡能力、上一代通用工作流和更低延迟成本的角色。
| 控制点 | 7 月 28 日后的行为 | 不应误读为 |
|---|---|---|
| 默认模型 | antigravity-preview-05-2026 省略配置时用 Gemini 3.6 Flash | Gemini 3.6 Flash 在当天首次发布 |
| 自动采用 | 无需改代码,下一次 interaction 使用新默认值 | 正在运行的交互被中途热切换 |
| 显式选择 | 可传 agent_config.model 固定支持模型 | 所有 Gemini 模型都可作为该 agent 后端 |
| 免费层 | 无 active billing 的项目可用 API key 试验 | 无限 token、无限调用或所有工具零成本 |
时间线上,Google 在 7 月 7 日已经为 Managed Agents 增加后台任务与远程 MCP 服务器集成。那一轮主要解决长任务异步执行和外部工具连接。本期是在这个执行底座上补充策略入口、预算与调度,news peg 是控制能力进入产品,而不是托管智能体概念第一次出现。
钩子真正阻断什么
环境钩子由沙盒内的 .agents/hooks.json 配置。运行时支持 2 个生命周期事件:pre_tool_execution 在工具运行前触发,可以明确 allow 或 deny;post_tool_execution 在工具完成后触发,可以运行格式化、单测、文件验证或审计上报,但不能撤销已经发生的写文件、网络访问或代码执行。
匹配器使用 RE2 正则。code_execution|write_file 可以同时命中两个工具,匹配全部工具需要写 *;官方文档同时提醒,想匹配一类文件工具时要用合法正则 .*,不能把 shell glob *_file 原样搬过来。处理器既可以是在沙盒中运行的命令,也可以是向外部 HTTPS 端点发 POST 的 HTTP hook。两类 handler 的默认超时都是 30 秒;公告中的 10 秒和 15 秒只是配置示例,不是平台统一上限。
前置拒绝的机制很直接。handler 输出 {"decision":"deny","reason":"..."} 后,工具调用被立即跳过,拒绝理由进入模型上下文,模型可以改走安全路径或向用户解释。后置 handler 会收到工具参数、环境 ID 和执行错误;它适合记录证据或校验产物,却不构成事务回滚。
最值得企业安全团队单独写进设计文档的是失败语义:
| 钩子结果 | 运行时处理 | 风险含义 |
|---|---|---|
前置返回合法 deny | 跳过工具,把理由交给模型 | 可形成显式阻断 |
前置返回合法 allow | 正常执行工具 | 策略明确放行 |
| 脚本非零退出或超时 | 按 allow 处理 | 策略服务故障时危险动作仍可能执行 |
| HTTP hook 非 2xx | 按 allow 处理 | 网络或服务故障不会锁死应用 |
| 返回普通文本或未知 JSON | 按 allow 处理 | 序列化错误会退化为放行 |
| 后置 hook 报错 | 已完成动作无法撤销 | 只能补告警、重试或事后处置 |
这是一种以可用性优先的 fail-open 设计。对代码格式化、非关键遥测和普通质量检查,它减少了因辅助系统故障导致的主任务停摆;对支付、生产变更、PII 读取和凭证访问,它却意味着单一钩子不能成为唯一授权边界。更稳妥的部署需要把不可绕过的权限留在网络 allowlist、最小权限凭证、外部审批或目标系统自身的访问控制中,钩子负责补充上下文策略而不是替代底层隔离。
预算暂停不是硬断电
Managed Agents 会进行多轮推理、工具执行、代码运行和文件管理,单次 API 调用背后可能是一条很长的自主循环。agent_config.max_total_tokens 提供了一个总预算,口径覆盖输入、输出与 thinking token,缓存 token 不计入。达到上限时,interaction 返回 incomplete,而不是把任务标成成功或直接抹掉工作状态。
恢复方式是传入 previous_interaction_id,同时给一笔新预算,让智能体从暂停处继续。对长仓库审计、迁移报告或批量修复,这比进程被杀后从头再来更实用。不过文档明确称上限是 best-effort:运行时在步骤之间检查预算,因此实际 token 使用可能略微越过设定值。它适合防止明显失控,不应被当成精确账单封顶或财务系统的绝对授权线。
预算也没有覆盖全部成本含义。官方定价说明写的是,Antigravity 同时面向 free tier 和 paid tier 项目,付费口径取决于底层 Gemini 模型 token 以及使用的工具。免费层项目有 free rate limit 和 usage quota,但公告没有给出一套跨项目固定的免费额度。所谓“免费层可用”,准确范围是:开发者可以用没有 active billing 的项目 API key尝试这类工作流;它不是永久免费、无限调用,也不保证所有工具成本都被同一配额覆盖。
从一次调用到持续工人
Scheduled triggers 把 agent、environment、prompt 和 cron schedule 绑定为持久资源,在无人手动发起时按计划运行。创建时必须给 cron 表达式和 IANA 时区;trigger 初始状态为 active,在下一个匹配时点触发。每次执行重用同一环境,所以前一轮生成的文件能被后一轮看到。
这个持久性既是价值也是风险。它适合每天扫描 issue、定期处理报告或按小时检查仓库,但旧文件、失败中间态和凭证痕迹也会跨运行保留。文档提供两个值得纳入基线的默认值:单次 trigger 执行超时为 600 秒;连续失败达到 5 次后自动暂停。团队还需要自行决定如何清理工作目录、如何区分幂等任务、失败后是否允许下次运行继续消费半成品。
Environments API 则补上沙盒生命周期管理。环境闲置 15 分钟后会自动快照并停止,自最后活跃起离线保留 7 天,期间可用环境 ID 恢复;TTL 到期后自动删除,也可在任务结束时主动删除。列举、检查和删除环境的接口解决了客户端断线后找回 ID、避免孤儿沙盒长期遗留等运维问题,但并不替团队完成数据分类和删除证明。
这次更新最有价值的部分,是 Google 把智能体产品的竞争点从“能否自主完成任务”往“谁能定义运行时边界”移动。模型选择解决能力与成本路由,前后置钩子提供策略插入点,预算把长循环变成可暂停状态机,trigger 与环境 API 则把单次请求扩成持续工作单元。它们组合起来,才接近企业真正会采购的智能体底座。
但“可插入控制”还不是“默认可治理”。钩子故障按 allow 处理,是整套设计中最容易被宣传语遮住的事实。它体现了平台对可用性的取舍,却要求高风险用户另建真正 fail-closed 的权限层。如果企业只看到“可以阻断工具”,没有测试超时、HTTP 失败和无效 JSON,控制面反而会产生错误安全感。
预算控制也应被理解为运行保护,而非精确结算。best-effort 上限、底层模型与工具的组合计费、免费层配额未在公告中量化,意味着成本治理仍需观测实际 usage。定时任务复用环境则把问题进一步从“一次调用花多少钱”推到“持续运行是否会积累状态污染与权限漂移”。
因此,这批功能已经让 Managed Agents 更像运行时,而不只是远程代理演示;它们是否足以进入严格企业工作流,要看三件事:故障时能否保持预期安全姿态,成本上限能否被真实账单验证,持久环境能否做到可审计清理。功能入口已经出现,生产保证仍需由平台与使用方共同补齐。
上线前应做的验证
安全团队应先构造负向测试:让前置脚本崩溃、故意超时、让 HTTP 端点返回 500,并返回格式错误的 JSON,确认平台确实放行,再决定哪些动作必须移到外部授权层。只有正常 deny 的演示不足以证明策略可靠。
成本团队需要用真实长链任务测 max_total_tokens 的超额幅度,同时把模型 token、工具调用和重试分别计量。免费项目则要记录实际 rate limit 与 quota,而不是把“可用”直接填进零成本假设。
运维团队应把 trigger 的 600 秒默认超时、5 次连续失败自动暂停和环境 7 天保留写进告警与清理规则。对复用沙盒的任务,还要验证上轮残留文件是否会影响下轮输入,凭证是否可轮换,任务是否能在重复执行时保持幂等。
模型默认值也应进入回归流程。没有显式钉住模型的调用会在下一次 interaction 自动采用 Gemini 3.6 Flash;这减少了迁移工作,却也把默认变化直接带入输出质量、工具选择与成本。生产用户若更重视可重复性,应显式指定模型,并为升级建立测试窗口,而不是完全依赖平台默认。