用 Effect Layer 抽象沙箱供应商,一行切换 e2b 与 Daytona 防锁定
samgoodwin89 · x · 2026-11-15
作者分享了一套对抗 agent 沙箱供应商锁定的工程模式:各沙箱服务(e2b、Daytona 等)用法趋同——都是建基础模板、打快照、运行时 fork,因此可以统一抽象到自己的 Context.Service 接口后面,每个供应商实现为一个 Layer。
配图给出完整 TypeScript 代码:定义 Runner 服务接口(只暴露 run(cmd)),再分别用 Layer.effect 实现 E2BRunner 和 DaytonaRunner(各自 CreateSandbox(Warm) 后执行命令);在 Cloudflare Worker 入口处只需把 Effect.provide(E2BRunner) 换成 Effect.provide(DaytonaRunner),即完成供应商切换,业务代码零改动。核心思路:沙箱供应商已高度同质化,值得在自己的接口层后封装以保持可替换性。
所属事件:Alchemy 作者演示沙箱接入模式:快照加 fork 趋同,可抽象防锁定(2 条相关)→
「编程与Agent」频道最新
- Alchemy 作者演示 E2B 沙箱套路:部署时建模板快照,运行时按需 fork — samgoodwin89 · 2026-11-15
- Alchemy 新版支持 Rivet 与 Effect Cluster,可部署到任意云并跨平台换沙箱 — samgoodwin89 · 2026-11-15
- 开源 NHL MCP 服务器上线,自然语言直查比赛与球员数据 — modelcontextprotocol · 2026-11-15
- HiveAttest 为 AI Agent 加执行前认证围栏,每次调用签发回执 — modelcontextprotocol · 2026-11-15
- GitHub Octoverse 报告:AI agent 发起的 PR 占比公布 — 0xkarasy · 2026-11-15
- 车主在 75 mph 高速上经 Starlink 与 Claude Code 对话写码 — nathanborror · 2026-11-15