以编程方式使用文档

每个沙盒都有一个记录的 **创建者**,即使用其 API 密钥或会话创建沙盒的工作区成员。默认情况下,只有创建者可以在该沙盒上运行命令、读取或写入文件、打开隧道或访问服务 URL。其他工作区成员需要获得 sandboxes:exec 权限 才能与自己未创建的沙盒进行交互。沙盒无法从创建它们的工作区以外的其他工作区访问。

谁可以做什么

调用者默认授予 sandboxes:exec
沙盒创建者✅ 所有运行时操作✅ 所有运行时操作
其他工作区成员❌ 拒绝✅ 所有运行时操作
不同工作区❌ 隐藏(视为未找到)❌ 隐藏(视为未找到)

“运行时操作”涵盖了创建后与运行中沙盒交互的四种方式:

  • 执行 命令(langsmith sandbox exec, SandboxClient.exec)
  • 文件 操作(读取、写入、列出沙盒内的路径)
  • 隧道 一个 TCP 端口回传到您的机器(langsmith sandbox tunnel)
  • 代理 通过 服务 URL

转发请求。生命周期操作——创建、列出、更新、删除沙盒——继续使用现有的 sandboxes:create / sandboxes:read / sandboxes:update / sandboxes:delete 权限。这些权限保持不变。

被拒绝的请求

当请求被拒绝时,沙盒返回 HTTP 403 ,响应体中包含触发的规则名称:

{
  "detail": {
    "error": "Forbidden",
    "message": "sandbox access denied: not the creator and missing sandboxes:exec"
  }
}

对存在于其他工作区中的沙盒的请求返回 404 Not Found 而不是 403,这样响应不会暴露该沙盒是否在其他地方存在。

共享沙盒

您有两种方式允许队友使用您拥有的沙盒:

  1. **授予 sandboxes:exec** 给自定义角色,然后将该角色分配给工作区。拥有该角色的任何人都可以与工作区中的每个沙盒进行交互。
  2. **使用 服务 URL** 用于沙盒内运行的 HTTP 服务。服务 URL 使用自己的访问令牌,不需要接收者成为工作区成员。

对于临时协作,服务 URL 方法通常更简单;当队友需要广泛访问权限来操作自己未创建的沙盒时,再使用 sandboxes:exec