news 2026/9/18 3:38:36

cwc-workshops Environments API指南:创建与配置Agent隔离沙箱环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cwc-workshops Environments API指南:创建与配置Agent隔离沙箱环境

cwc-workshops Environments API指南:创建与配置Agent隔离沙箱环境

【免费下载链接】cwc-workshops项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops

在 cwc-workshops 这套 Agent 工作坊示例中,Environments API 是搭建 Claude Managed Agent 的核心环节之一:一个Environment(环境)就是"容器的配置模板",它定义了你 Agent 运行沙箱的云类型、网络策略和预装依赖。掌握environments.create之后,你只需几行代码就能为 Agent 创建完全隔离的云端执行环境,实现安全的一键部署。

为什么 Agent 需要隔离沙箱环境 🛡️

Managed Agents 的运行链路是固定的四步:Agent → Environment → Session → Events。其中:

资源角色一句话理解
Agent大脑定义模型、提示词和工具
Environment躯壳定义容器和网络配置
Session一次任务把大脑放进躯壳开始干活
Events神经系统双向流式事件通道

沙箱按会话创建、用完即销毁(ephemeral),你无需自己运维任何容器。仓库中agents-that-remember工作坊的开场白把这件事总结得很精辟:"agents are templates that define model and prompt configuration, and environments are templates that define container configuration"

三步创建第一个环境:从零到隔离沙箱

ship-your-first-managed-agent(Incident-2277 故障排查工作坊)为例,创建环境只是 7 个函数里的第 2 步。参考实现见 agent_complete.py:

env = client.beta.environments.create( name=f"sre-agent-{uuid.uuid4().hex[:6]}", config={"type": "cloud", "networking": {"type": "unrestricted"}}, )

三步走:

  1. 命名:带上随机后缀,避免多人共用同一 API Key 时重名冲突
  2. 选类型"type": "cloud"表示使用托管云沙箱,容器在首次会话时才会真正分配(约需 15~20 秒)
  3. 定网络策略unrestricted(放开)或limited(白名单),这是最关键的安全开关

拿到env.id后,把它传给sessions.create(environment_id=env_id),沙箱即告就绪。完整链路可对照 agent.py 中的提示注释练习。

最小配置 vs 精细化配置:networking 与 packages

最简环境只需一个{"type": "cloud"},仓库里 bootstrap.sh 就通过 CLI 一行搞定:

ant beta:environments create --name "$ENV_NAME" --config '{"type":"cloud"}'

生产级配置则要精细得多。看 Deal Desk 工作坊的投资研究沙箱 research.yaml:

name: deal-research config: type: cloud networking: type: limited allow_package_managers: true allow_mcp_servers: true allowed_hosts: - sec.gov - "*.edgar-online.com" - "*.googleapis.com" - finance.yahoo.com packages: type: packages pip: - pandas - numpy - yfinance

这份配置体现了三个最佳实践:

  • 🔒网络白名单(allowed_hosts:只放行 SEC、EDGAR 等必要域名,其余出站全部拦截,防止提示注入后的数据外泄
  • 📦预装依赖(packages.pip:把 pandas、numpy 等常用库写进环境模板,Agent 开箱即用
  • 🔌按需开关 MCPallow_mcp_servers控制沙箱能否连接外部工具服务器

环境 ID 的正确管理:幂等与复用

环境是账号级资源,创建后 ID 应持久化,切勿每次运行都新建。仓库里的几个工作坊给出了三种典型做法:

方式一:YAML 文件 + 幂等脚本。Deal Desk 的 setup.sh 直接用ant beta:environments create < seed/environments/research.yaml读取配置文件创建环境,并把返回的 ID 写回.env;重跑时检测到已有ENVIRONMENT_ID就直接复用,脚本完全幂等。

方式二:本地 JSON 缓存。StockPilot 工作坊在 cma.py 的ensure_env()中实现"查缓存 → 查远端 → 才创建"的逻辑,ID 缓存在.stockpilot_ids.json里,部署可重复执行。

方式三:先 list 后 create。bootstrap.sh 先按名字environments list查一次,查不到才创建——适合交互式工作坊场景。

在 Session 中绑定环境并挂载资源

环境创建完毕后,绑定动作发生在创建 Session 时。以 SRE 工作坊为例(见 agent_complete.py):

session = client.beta.sessions.create( agent=agent_id, environment_id=env_id, resources=[{"type": "file", "file_id": log_file_id, "mount_path": "app.log"}], )

注意resources参数:它把之前上传的文件(如 7 万行日志)挂载进沙箱文件系统,Agent 就能在隔离环境里直接 grep、写脚本分析。多 Agent 场景下同样适用——StockPilot 的每个子 Agent 会话都复用同一个environment_id,见 cma.py。

💡经验提示:环境不区分版本,一个环境可被所有会话共享;但 Agent 有版本管理,会话永远使用最新 Agent 版本 + 指定环境,两者职责清晰分离。

常见配置速查表 🧭

配置项取值适用场景
config.typecloud所有托管沙箱(当前唯一类型)
networking.typeunrestricted开发调试、需随意装包
networking.typelimited生产环境、金融/合规场景
allowed_hosts域名列表(支持*.x.com通配符)限定出站白名单
allow_package_managerstrue/false是否允许 pip/npm 等在线装包
allow_mcp_serverstrue/false沙箱能否连 MCP 外部工具
packages.pip包名列表预装 Python 依赖

选型口诀:练习用unrestricted图快;一旦 Agent 要处理真实业务数据(如 research.yaml 中的尽调场景),立即切到limited+ 最小白名单。

总结:Environments API 一页纸清单

  1. 定位:Environment = 容器配置模板,与 Agent(大脑模板)配对使用
  2. 创建:Python SDK 用client.beta.environments.create(),CLI 用ant beta:environments create < 配置.yaml
  3. 安全:生产环境务必用limited网络 +allowed_hosts白名单
  4. 复用:环境 ID 要持久化(.env或 JSON 缓存),创建逻辑保持幂等
  5. 绑定:在sessions.create时通过environment_id挂载,配合resources注入文件

想动手实践,可克隆本仓库并进入任一工作坊目录(如 ship-your-first-managed-agent 或 production-ready-agent),每个工作坊都自带完整的环境配置示例和分步练习:

git clone https://gitcode.com/GitHub_Trending/cw/cwc-workshops

从 4 行代码的unrestricted环境起步,再进阶到 18 行的白名单 + 依赖预装配置——这就是 Environments API 从入门到生产的全部路径 🚀

【免费下载链接】cwc-workshops项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 3:35:53

长上下文评测烧 Token,TaoToken 给 DeepSeek-V4.1-Flash 发 Key

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 3:33:20

C语言练手项目:用扫雷吃透数组与递归实现

今年上半年带一个学弟做期末课程设计&#xff0c;他犹豫了很久&#xff0c;最后选了一个图书馆管理系统。我劝他换个题目&#xff0c;他不听&#xff0c;结果链表删除那一块整整卡了两周。后来我给他出了一个简单得多的题&#xff1a;用C语言写一个控制台扫雷。他一开始很不服气…

作者头像 李华
网站建设 2026/9/18 3:32:36

网络测速不只看带宽:时延、抖动与丢包才是体验关键

1. 测速的本质&#xff1a;为什么我们测的“网速”不等于“网好”1.1 数字背后的真相&#xff1a;带宽只是网络体验的冰山一角网络测速这件事&#xff0c;几乎每个人都干过。装宽带那天&#xff0c;师傅让你打开网页点一下测速&#xff0c;看到一个数字接近运营商承诺的带宽档位…

作者头像 李华