Filesystem 支持监听目录变化。适合在长任务中等待 Agent 输出文件、同步沙箱内程序生成的产物,或把文件变化事件转发给业务侧状态机。
监听目录
TypeScript 示例:
const watcher = await sandbox.files.watchDir("/tmp/output", (event) => {
console.log(event);
});
// 任务完成后关闭监听。
await watcher.stop();TypeScript SDK 的 onEvent 是 watchDir() 的第二个位置参数,不是选项对象的字段;recursive、onExit 等可选项通过第三个参数传入。关闭监听使用 watcher.stop()。
Python 示例:
Python SDK 使用 watch_dir(),回调通过位置参数 on_event 传入。由于回调版 watch_dir 仅在异步 API 中提供,示例使用 AsyncSandbox:
import asyncio
from e2b_code_interpreter import AsyncSandbox
async def main():
sandbox = await AsyncSandbox.create("code-interpreter-v1")
handle = await sandbox.files.watch_dir(
"/tmp/output",
on_event=lambda event: print(event),
)
# 任务完成后关闭监听。
await handle.stop()
asyncio.run(main())生产接入前建议先用最小示例确认事件结构、关闭方式和异常返回。
使用建议
监听前先确保目录存在,可以用
sandbox.files.makeDir()创建输出目录。回调可能收到多次事件,业务侧应按文件路径、事件类型和任务 ID 做去重。
监听适合改善实时性,但任务最终状态仍应以命令退出码、业务状态文件或外部任务状态为准。
长时间监听应设置业务超时,并在任务完成、失败或超时后主动关闭 watcher。
如果只需要等待单个文件出现,也可以继续使用
sandbox.files.exists()做有限次数轮询。
该文章对您有帮助吗?