Claude Platform Docs
Managed Agents自托管沙箱

自托管 worker 参考

自托管沙箱 worker 的参考文档:ant CLI 标志、环境变量、主机要求、文件系统路径以及 SDK 辅助工具选项。

本页记录了为 self_hosted 环境提供服务的预构建 worker。如需面向任务的指南,请从自托管沙箱和部署自托管 worker 开始。

CLI 命令和标志

命令描述
ant beta:worker poll从环境的队列中认领工作项,并在进程内运行每个会话。使用 --on-work 时,改为针对每个工作项调用您的脚本。
ant beta:worker run处理一个已认领的会话后退出。将其用作每会话沙箱的入口点。
标志描述
--environment-id要轮询工作的环境。也会从 ANTHROPIC_ENVIRONMENT_ID 读取。
--environment-key使用此环境对 worker 进行身份验证。也会从 ANTHROPIC_ENVIRONMENT_KEY 读取。
--workdir下载技能以及工具读写文件的目录。默认为 .(当前目录)。
--on-work针对每个已认领工作项调用的脚本,用于替代在进程内运行工具。该脚本通过环境变量接收会话详细信息,并通过标准输入以 JSON 形式接收工作项。
--max-idle会话以 end_turn 停止原因进入空闲状态后,在关闭前等待的时长。默认为 60s。
--log-format日志输出格式。使用 json 以便进行结构化日志采集。默认为 text。

环境变量

变量描述设置方
ANTHROPIC_ENVIRONMENT_IDworker 所服务队列对应的环境。您,在 worker 主机上设置。轮询器会将其传递给 --on-work 脚本。
ANTHROPIC_ENVIRONMENT_KEY向其队列验证 worker 的身份。您,在 worker 主机上设置。轮询器会将其传递给 --on-work 脚本。
ANTHROPIC_SESSION_ID已认领工作项所代表的会话。轮询器,为 --on-work 脚本设置。
ANTHROPIC_WORK_ID已认领的工作项。轮询器,为 --on-work 脚本设置。
ANTHROPIC_WORK_SECRET工作项的每会话 secret。您。轮询器不会设置它。请参阅转发工作项的 secret。
ANTHROPIC_BASE_URL覆盖默认的 API 端点。可选。您,在 worker 主机上设置。
ANTHROPIC_WEBHOOK_SIGNING_KEY验证传入的 webhook 负载。您,在 webhook 处理程序主机上设置。

主机要求

Worker要求
所有 worker一台 Linux 主机,且 /bin/bash 位于该确切路径。worker 的 bash 工具会直接调用它,而不查询 PATH。
TypeScript SDKPATH 上有 unzip 和 tar,以及 Node.js 22 或更高版本。
Python 和 Go SDK无需额外的二进制文件。这些 SDK 使用其标准库进行归档解压。

记忆存储有其自身的额外要求。

沙箱文件系统

路径内容
/workspace用于工具执行和技能下载的系统默认工作目录。如果您使用不同的工作目录,请更新智能体的系统提示,以便 Claude 能够找到技能文件。
<workdir>/skills/<name>/智能体已下载的技能。
/mnt/memory/<store>/每个附加的记忆存储对应一个目录,位于该存储的 mount_path(例如 /mnt/memory/user-preferences/)。worker 在认领会话时创建这些目录,并在会话结束时删除它们。

在自托管环境中,会话的系统提示会省略 Anthropic 托管沙箱上使用的 /mnt/session/outputs 指令。最终交付物会落在智能体在您的沙箱文件系统中写入的任何位置,通常位于工作目录下。

技能可以包含智能体可直接运行的可执行文件。CLI 和 SDK worker 在解压技能包时会保留其中记录的可执行权限。如果您手动实现技能下载,则需要自行负责设置可执行权限。

SDK 辅助工具

Python、TypeScript 和 Go SDK 提供了三个不同控制级别的辅助工具:

辅助工具功能适用场景
EnvironmentWorker端到端处理轮询、设置和执行。大多数情况。
work.poller()轮询工作队列,并将每个已认领的会话交给您。您需要决定每个会话的处理方式,例如启动沙箱而不是在进程内运行工具。
client.beta.sessions.events.tool_runner()在给定会话 ID 和工具列表的情况下,为单个会话运行工具调用。您已经认领了工作,只需要执行层。

EnvironmentWorker

方法描述
run()无限期运行,在会话到达时接收它们。
handle_item()处理单个已认领的工作项后返回。可以显式传入工作、会话和环境标识符以及 work_secret,也可以让它读取 ANTHROPIC_* 变量。
选项描述
tools一个工厂函数,接收会话的 AgentToolContext 并返回工具列表。默认为标准智能体工具集。
memory_sync_interval会话运行期间,附加的记忆存储与服务器进行协调的频率。请参阅同步间隔。
memory_sync_deletions智能体在本地删除的文件是否也从存储中删除。请参阅删除。

EnvironmentWorker 会自动管理 AgentToolContext 和工具集。传入 tools 工厂函数即可自定义工具列表:

EnvironmentWorker(client, ..., tools=lambda env: [beta_bash_tool(env), my_custom_tool])

工作轮询器

选项描述
drain队列为空时是否停止轮询,而不是等待新工作。
block_ms每次轮询在返回前等待工作到达的时长,以毫秒为单位。必须介于 1 到 999 之间;辅助工具会自动重新轮询。传入 None 可进行非阻塞检查。默认为 999 毫秒的长轮询。
reclaim_older_than_ms重新认领那些已被认领但在此毫秒数内从未被确认的工作项。
auto_stop在您的循环体处理完每个工作项后,是否为其发送停止信号。当运行该工作项的程序会自行发送停止信号时,请将其设置为 False。handle_item() 会这样做,由您启动且负责停止调用的沙箱也会这样做。

如需完整示例,请参阅从 SDK 轮询器启动沙箱。

会话工具运行器

client.beta.sessions.events.tool_runner() 以 tools 的形式接收工具列表。要构建该列表,请自行设置 AgentToolContext 并调用 beta_agent_toolset_20260401(env):

from anthropic.lib.tools.agent_toolset import (
    AgentToolContext,
    beta_agent_toolset_20260401,
)

async with AgentToolContext(
    workdir="/workspace", client=client, session_id=work.data.id
) as env:
    # skills 已下载到 /workspace/skills/<name>/
    tools = beta_agent_toolset_20260401(env)

AgentToolContext 和智能体工具集

AgentToolContext 是工具调用的执行上下文。它定义了工作目录和路径策略,并且可以下载会话的技能。

选项描述
allowed_roots除工作目录之外,文件工具(read、write、edit、glob、grep)可以访问的目录。
read_only_rootswrite 和 edit 会拒绝其下路径的目录。

EnvironmentWorker 会自行将会话的记忆存储目录添加到 allowed_roots,并将以 access: "read_only" 附加的存储目录添加到 read_only_roots。

这种限制仅是针对文件工具的防护措施,而不是沙箱。它不会约束 bash。

beta_agent_toolset_20260401(env) 接收一个 AgentToolContext,并返回标准工具实现(bash、read、write、edit、glob、grep)。

Was this page helpful?