@ai-sdk/workflow 2.0.90:沙箱会话新增文件操作能力

AI SDK workflow 包补丁更新,沙箱会话新增三个文件操作方法。
@ai-sdk/workflow@2.0.90 是一次补丁更新,核心变化是为 Experimental_SandboxSession 增加了 stat、listDirectory、deleteFile 三个文件操作方法,并规定所有相对路径都相对于 run 与 spawn 启动时所在的目录解析,从而消除多方法间的路径歧义。just-bash 与 Vercel Sandbox 两个适配器均已实现新方法,run 与 spawn 的相对 workingDirectory 也统一相对于沙箱工作目录解析;差异在于 just-bash 会拒绝向目录写入而非替换目录,跨适配器迁移需留意。本次还同步更新了 provider-utils、ai、provider 等依赖版本,需在锁文件层面确认兼容性。

AI SDK 生态中的 workflow 包迎来一次补丁更新。@ai-sdk/workflow@2.0.90 的发布说明信息量不大,但改动的方向值得关注:沙箱会话(SandboxSession)开始支持文件级操作,这意味着工作流在隔离环境中处理文件的能力向前推进了一步。
沙箱会话新增三个文件方法
本次更新的核心是给 Experimental_SandboxSession 补充了 stat、listDirectory 和 deleteFile 三个方法。发布说明同时明确了一条路径解析规则:每个方法中的相对路径,都相对于 run 与 spawn 启动时所在的目录进行解析。
这条规则的实用价值在于消除歧义。工作流代码在沙箱中执行时,文件操作的基准目录如果不统一,很容易出现「同一个相对路径在不同方法里指向不同位置」的问题。把基准锚定到 run/spawn 的启动目录,让 stat、listDirectory、deleteFile 与执行入口共享同一参照系。
说个细节,这三个方法目前挂在 Experimental_ 前缀下,说明接口仍处于试验阶段,后续行为可能调整。
在 Node.js 生态(以及多数 POSIX 风格 API)中,stat、listDirectory、deleteFile 分别对应三类基础文件系统操作:stat 用于获取路径的元数据(类型是文件还是目录、大小、修改时间等),listDirectory 用于枚举目录下的条目,deleteFile 用于删除单个文件。把它们放进沙箱会话,等于让工作流代码在隔离执行环境里具备「检查—枚举—清理」的最小文件管理闭环。由于沙箱通常与宿主文件系统隔离,这类方法往往由适配器转译成远程或虚拟文件系统的调用,因此路径基准目录的约定尤为关键。
两个适配器的行为差异
发布说明提到,just-bash 和 Vercel Sandbox 两个适配器都已经实现了新方法。两者的共同变化是:run 与 spawn 的相对 workingDirectory 现在都相对于沙箱的工作目录解析。
分歧出现在写入语义上。just-bash 适配器会拒绝「向一个目录写入」的操作,而不是用文件替换掉该目录。这个细节对工作流的安全性有实际意义——如果写入逻辑不做这层判断,一次误操作可能把目录结构覆盖掉。两个适配器在这一点上的处理并不完全一致,使用方在跨适配器迁移时需要留意。
「向目录写入」在文件系统层面通常有两种实现:一是用新内容替换目标路径,二是直接报错拒绝。POSIX 的 rename/open 等语义在不同实现下并不统一,许多语言的标准库在写入前会先检查目标是否为目录。just-bash 选择拒绝,实际上是在适配器层做了一道防御性检查,避免工作流中一条错误的写入路径把整个目录树覆盖掉。跨适配器迁移时,如果代码依赖「写入会覆盖」的行为,就可能在新适配器上收到错误,因此写入语义应当被视为适配器契约的一部分来对待。
依赖链同步更新
作为补丁版本,本次发布一并更新了多个依赖:@ai-sdk/provider-utils@5.0.72、ai@7.0.158、@ai-sdk/provider@4.0.35,以及发布说明中列出的若干提交引用。对于锁定版本的工程,升级 workflow 包会同时拉高这几项的版本号,需要在锁文件层面确认兼容性。
从版本号能看出,AI SDK 的核心包已经走到 7.x,provider 层在 4.x,provider-utils 在 5.x,各层版本节奏并不同步。workflow 作为上层封装,跟随这些底层包滚动更新是常规做法。
AI SDK 采用分层包结构:@ai-sdk/provider 定义模型提供方的抽象接口,@ai-sdk/provider-utils 提供各 provider 共用的工具函数与类型,ai 包则是面向应用的高层入口,workflow 等上层封装依赖这些基础包。各层独立发版意味着版本号节奏不同步是常态,但也带来一个实际问题:上层包升级时若 peerDependencies 或 dependencies 范围较宽,锁文件可能解析出与预期不同的底层版本。对于锁定版本的工程,升级后应检查锁文件中这几项的实际解析结果,必要时用 overrides/resolutions 固定版本。
这次更新意味着什么
把三个文件方法加进沙箱会话,指向的是一个更完整的工作流执行环境:不仅能在沙箱里跑命令,还能检查文件状态、枚举目录内容、清理文件。对于需要让 AI 工作流在隔离环境中读写产物的场景,这些方法是基础设施的一部分。
试验性前缀也提示了现状——接口形态尚未定型。关注这个包的话,更适合把它当作方向信号而非稳定 API 来对待,等 Experimental_ 前缀去掉之后再考虑深度依赖。
本次发布由 github-actions 自动完成,附带 GPG 签名验证,属于标准的自动化发布流程。
相关推荐

合理使用制度为何对AI时代人人有益
从Hacker News讨论出发,解析合理使用(Fair Use)原则在AI训练与内容创作中的法律逻辑、争议焦点及其对创作者与技术生态的双重影响。

Salesforce 3.75亿美元收购Rune,AI物流技术补强国防业务
Salesforce 据报道以 3.75 亿美元收购国防科技初创公司 Rune,这家 AI 物流公司的技术将用于补强 Salesforce 的 Missionforce 国防平台,也延续了 Salesforce 近期的并购节奏。

Mistral Large 4开源万亿参数,微软6万员工自愿离职
Mistral Large 4 开源万亿参数多模态模型,编码智能体评测得分 48;闪迪财报显示 AI 推理重塑 NAND 需求;谷歌 Gemini 上线应用内文件编辑,OpenAI 上调 Codex 额度,微软向 6 万员工提供自愿离职方案。