Snowflake 公开预览了「CoCo automations」,可以按计划运行 AI 智能体。只要登记一段提示词,即使关闭终端或浏览器,智能体也会在 Snowflake 托管的沙箱中定期执行。通过 CLI 和 Snowsight 创建的自动化任务是同一种对象,该功能在 AWS、Azure 和 Google Cloud 的所有商用区域均可使用。
需要登记的只有一段提示词
automations 的思路很简单:用自然语言写清楚要做什么,再指定运行频率即可。每次运行都会留下一条 Cortex 线程,之后可以打开查看智能体交换了哪些消息、调用了哪些工具,以及最终返回了什么。
Snowflake 列出的用途包括生成每日业绩摘要、检查指标异常、监控仓库用量与成本、检查数据新鲜度、执行定期的数据质量或代码仓库维护流程,以及从已连接的 MCP 服务器生成定期摘要。换句话说,就是过去有人每天早上盯着仪表板才能发现的那类工作。
在 Snowsight 中,可以从模板开始或从零创建,填写标题与指令,选择模型,再设置频率、星期、时间和时区。也可以在对话中直接要求 CoCo,例如让它在工作日早上 9 点检查前一天的流水线故障并简要汇总。使用 CLI 时写法如下。
cortex automation create \
--name pipeline_health \
--prompt "Check pipeline failures from the last hour and summarize the likely causes." \
--schedule "every 60 minutes"
调度既支持「every 4 hours」这类间隔写法,也支持「daily at 9am」「every Tuesday at 1:15pm」等形式。若一次列出多个每周时间点,内部可能会创建多个任务。
运行发生在 Snowflake 提供的沙箱中
创建的自动化任务会以 AGENT TASK 的形式保存在个人数据库下。计划触发时,Snowflake 以创建者的身份运行已保存的提示词,在托管沙箱中准备好工作目录并启动 CoCo。无需仓库,任务状态、耗时、查询 ID 和错误都会记录在运行历史中。
若通过 CLI 创建,用户的工作区暂存区会挂载为工作目录,写入其中的文件会保留到后续运行。也可以指定其他暂存区,或者干脆取消挂载,让工作目录每次用完即弃。
权限跟随创建者
运维层面最需要注意的正是这一点。automations 采用调用者权限模型,运行时生效的是创建者的默认角色和默认次要角色,创建时 CoCo 会话中所使用的角色并不会被记录。于是就可能出现交互测试时一切正常,但计划运行却因权限不足而失败或返回不完整结果的情况。
此外,使用 automations 所需的 EXECUTE AGENT TASK 权限默认授予 PUBLIC 角色。管理员若不做调整,账户内所有用户都可以创建计划运行。想要收窄范围,需要先从 PUBLIC 收回该权限,再授予需要的角色。
REVOKE EXECUTE AGENT TASK ON ACCOUNT FROM ROLE PUBLIC;
GRANT EXECUTE AGENT TASK ON ACCOUNT TO ROLE automation_user;
由于是无人值守运行,交互时出现的工具执行确认提示会被禁用。可供该次运行使用的工具无需等待批准即可执行,Snowflake 也明确指出,除非提示词、角色权限、连接的工具和目标对象是有意如此配置,否则不应把破坏性或不可逆的操作放进计划任务。如果用户的默认次要角色包含其被授予的全部角色,运行可触及的范围会相当广,这一点同样需要留意。
钩子失败也会被记录为成功
每次运行前后都可以插入 bash 命令作为钩子。它不消耗智能体的对话轮次,每次执行相同的处理,适合克隆仓库、事后清理这类固定作业。
不过其行为有些特别。钩子异常退出并不会让运行本身判定为失败。前置钩子失败时沙箱将无法使用,智能体仍会启动并返回「无法完成工作」的回复,但任务历史中记录的是成功。如果后置钩子负责用 git push 发布结果,就可能出现成果丢失却显示成功的情况。挂载的暂存区不支持向已有文件追加内容,Git 会在写引用日志时受阻,因此需要提交的处理建议克隆到挂载目录之外。仅看任务状态并不足够,必须打开线程记录确认。
预览阶段的限制
目前可指定的最短运行间隔为 1 小时 1 次。CLI 的解析器虽然能接受更短的写法,但预览阶段并不支持。线程与运行历史的保留期为 2 个月,触发方式仅支持基于时间的计划,不支持事件触发。也无法中途接入正在运行的会话继续对话,只能通过历史与线程进行只读查看。政府、FedRAMP、DoD、VPS 和中国部署环境不提供该功能。费用方面,预览期间除每次运行的令牌消耗外,还会产生常规的任务计费。
总结
CoCo automations 把原本需要对话使用的智能体,转变为在指定时刻自行运行的机制。全部在数据平台内部完成、每次运行都以线程形式留存,从运维角度看是易于把控的设计。另一方面,权限绑定创建者的默认角色、EXECUTE AGENT TASK 默认授予 PUBLIC、钩子失败仍记录为成功,这几项都值得在投入生产之前逐一确认。越是无人值守运行的东西,越值得先手动跑一次并读一遍记录。
