功能说明
AgentkitRemoteSandboxAgent 是一个原生的 ADK 子智能体,将托管在 AgentKit 中的 Skill 或 CodeEnv 沙箱会话包装为一个独立的智能体。它可以作为应用的根智能体直接运行,也可以注册到 Agent 的 sub_agents 列表中,由协调智能体通过 transfer_to_agent 将任务委派给它。
与代码沙箱工具的区别在于:沙箱工具(如 run_code、execute_skills)以独立工具的形式挂载到智能体上,由模型在推理过程中逐次调用;而 AgentkitRemoteSandboxAgent 作为一个完整的子智能体,接收一个文本任务并在远端沙箱中端到端执行,执行过程中的工具调用、流式进度和最终结果直接以事件形式返回,无需本地协调智能体逐工具编排。
AgentkitRemoteSandboxAgent 复用代码沙箱的基础设施与凭证配置。环境变量、Tool ID 等前提条件与代码沙箱页面中的说明一致,此处不再重复。何时使用
适合以下场景:- 需要将完整的编码、技能执行或文件操作任务委派给远端沙箱,而非拆分为多次工具调用;
- 需要一个能够接收任务转交并直接返回结果的子智能体,与协调智能体组成多智能体拓扑;
- 沙箱任务执行时间较长,希望以流式事件观察执行进度。
依赖与前提
导入路径:AgentkitRemoteSandboxAgent 在构造时不发起网络请求;网络连接在首次运行时按需建立。
使用方法
作为子智能体
将AgentkitRemoteSandboxAgent 注册到协调智能体的 sub_agents 列表中。协调智能体在推理过程中通过 transfer_to_agent 将任务委派给沙箱子智能体,后者在远端沙箱中执行任务并直接返回结果。
remote_sandbox_subagent.py
作为根智能体
也可以将AgentkitRemoteSandboxAgent 直接作为应用的根智能体。此模式下没有本地协调智能体,用户发送的文本任务直接在远端沙箱中执行。
remote_sandbox_root.py
沙箱类型
AgentkitRemoteSandboxAgent 支持两种远端沙箱类型,由 tool_type 参数指定。未显式指定时,框架通过 AgentKit 控制面的 GetTool 接口自动发现。
私有工具必须显式指定
tool_type。自动发现仅适用于控制面返回 Skill 或 CodeEnv 类型的工具;对于兼容但类型不同的自定义工具,需显式指定匹配的类型。参数
AgentkitRemoteSandboxAgent 继承自 BaseAgent,以下为构造参数:
环境变量
AgentkitRemoteSandboxAgent 使用以下环境变量,与代码沙箱共享同一套凭证和端点配置:
会话管理
AgentkitRemoteSandboxAgent 在运行时自动管理远端沙箱会话:
- 按应用名称、用户标识和会话标识生成稳定的逻辑会话键,在沙箱侧创建或复用对应的物理会话;
- 会话使用
ttl参数控制存活时间,到期后自动释放; - 同一逻辑会话的并发调用会被串行化,避免同一会话上的重复执行;
- 会话就绪等待时间由
ready_timeout控制,超时后报错。
沙箱会话的默认存活时间为 1800 秒(30 分钟),最长支持 86400 秒(24 小时)。会话在存活期内可复用,跨调用保持沙箱内的文件和运行环境状态。
入站身份凭证
当协调智能体的运行上下文中存在入站身份凭证时,AgentkitRemoteSandboxAgent 会以 inbound_auth 请求头将凭证转发给远端沙箱,使沙箱中的工作流能够以原始用户身份执行。当前请求未携带入站凭证时不附加该请求头,沙箱以匿名方式执行。
入站身份凭证的来源与配置方式参见入站认证。
安全边界
错误处理
沙箱执行过程中发生的错误以事件形式返回,不会导致应用崩溃。常见错误情况包括:- 沙箱会话未在就绪时间内变为可用状态;
- 任务执行超时;
- 沙箱镜像协议不兼容;
- 同一会话上已有正在执行的调用。