sandstorm
在你自己服务器上运行 Claude Agent SDK,支持 Slack 集成和任意 LLM 的开源
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在你自己服务器上运行 Claude Agent SDK,支持 Slack 集成和任意 LLM 的开源
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:你的团队需要用 AI Agent 自动化处理客户合同——它要联网搜索竞品信息、抓取公开财报数据、生成摘要报告。这听起来很美好,直到你意识到:每次调用 Claude Managed Agents,敏感的业务上下文都在 Anthropic 的服务器上流转。对于金融、医疗、法律这些强合规行业,这简直是噩梦。
另一边,Vercel 出的 Slack Agent 确实香——直接集成到团队日常沟通工具里,工程师用斜杠命令就能触发 Agent 干活。但问题是它绑死在 Vercel 基础设施上,TypeScript only,还只能跑 Claude。如果你用的是 GPT-5 或者公司内部部署的模型,对不起,做不到。
这就是 Sandstorm(GitHub: tomascupr/sandstorm)诞生的背景。作者 Tomáš Čupr 在 2026 年 4 月 Anthropic 发布 Claude Managed Agents 后不到一个月,就掏出了这个开源方案——一句话概括:在你自己服务器上跑 Claude Agent SDK,Slack 里直接 @ 它,支持任意 LLM,结果还吐给任意可观测性后端。
Sandstorm 的核心架构可以概括为三层:
第一层:CLI / Slack Bot(用户入口)
用户通过三种方式调用 Agent:
ds 命令行工具,核心逻辑在 src/sandstorm/cli.py(约 58KB),支持 ds init(初始化项目模板)、ds(运行 Agent)、ds replay(用不同模型回放历史运行)、ds slack setup(配置 Slack 集成)等命令。src/sandstorm/main.py),暴露 /query 端点接收 prompt,返回 SSE 流式响应。API 文档见 docs/api.md。@Sandstorm xxx 触发 Agent,支持 /remember 系列记忆命令,支持表情符号 reaction 触发自动化任务(v0.9.1+)。pip install "duvo-sandstorm[client]")和 repo 内置的 TypeScript 客户端源码(clients/typescript/),开发者可直接在代码里调用。第二层:E2B 沙箱编排(核心差异化)
src/sandstorm/sandbox.py(约 18KB)是整个项目的灵魂。它的工作流程是:
work-43ca/sandstorm 自定义模板,内置 Claude Agent SDK v0.2.112)sandstorm.json)、自定义 Skills 上传到沙箱src/sandstorm/runner.mjs),驱动 Claude Agent SDK 的 agent loopkeep_alive)这带来几个关键特性:每个对话线程有独立的沙箱实例(Slack thread 复用机制见 src/sandstorm/slack.py),文件上传、生成的产物都保存在沙箱内;沙箱支持 GCP 认证(用于 Vertex AI),支持任意 MCP 工具包(Linear、Notion、GitHub、Firecrawl 等)。
第三层:多 LLM 路由(差异化亮点)
Sandstorm 不绑定 Claude。通过 OpenRouter 可以路由到 GPT-5、Gemini、DeepSeek、Qwen、Kimi、Grok 等模型;也支持 Vertex AI、AWS Bedrock、Azure Foundry 或任何 OpenAI-compatible 端点。路由配置在 src/sandstorm/config.py,通过环境变量切换 Provider。
Sandstorm 的部署设计体现了作者对「开发者友好」的极致追求。
Docker 一键启动。根目录有 Dockerfile,基于 python:3.13-slim-bookworm,安装了 [slack,telemetry] 两个常用扩展;docker-compose.yml 定义了健康检查(/health 端点)。对于想本地快速验证的开发者,docker compose up 即可跑起来。
Railway 一键部署。作者提供了 deploy/railway.json 模板,点击 README 里的 Railway 按钮,填入环境变量,30 秒内完成生产部署。
pipx / pip 直接安装。pip install duvo-sandstorm && ds serve 就能在本地启动服务。不需要 Docker 也能跑(只是需要 E2B API Key)。
可选的 Langfuse 可观测性栈。deploy/docker-compose.langfuse.yml 附带了 Langfuse + Postgres 的完整观测套件,开箱即用,支持 OTel 链路追踪、成本分析和延迟监控。
部署前提条件:
Sandstorm 内置了 7 个 Starter 模板(src/sandstorm/starters/),每个都是一个预配置好的 Agent 场景:
这些 Starter 通过 ds init <name> 一键生成项目骨架,内含 sandstorm.json(Agent 配置)和 .claude/ 目录(Skills)。
Sandstorm 的工具扩展机制基于 MCP(Model Context Protocol)。内置工具包包括 Linear(项目管理)、Notion(知识库)、GitHub(代码和 PR)、Firecrawl(网页爬取)、Exa(语义搜索)。
通过 ds add <name> 命令可以零配置添加内置工具包;ds add --custom 支持任意 MCP 服务器,包括 npm 包(--package @hubspot/mcp-server)、MCP Remote URL(--arg https://mcp.zapier.app/mcp)、本地 uvx 进程(postgres-mcp)等三种模式。
强依赖 E2B。虽然沙箱是 Sandstorm 的核心差异化,但默认依赖 E2B 云服务——虽然 E2B 支持自托管,但官方文档对此着墨不多。如果 E2B 成为瓶颈或涨价,用户需要自行评估迁移成本。
沙箱冷启动延迟。每次新线程创建沙箱需要等待 VM 启动,相比本地即时执行的 Agent 框架有一定延迟。作者在 Slack 复用机制上做了优化(同一 thread 保持沙箱存活),但新会话仍有等待时间。
多 Worker 下的状态管理。文档明确指出:Dashboard 运行历史和 Slack 沙箱复用是进程本地的,多 Worker 部署时需要额外配置 sticky routing 或共享后端。
v0.9.x 仍为 Beta。PyPI 上最新版本 0.9.2,Development Status 为 4 - Beta,生产使用前建议评估版本稳定性。
Sandstorm 的出现填补了一个真实的市场空白:企业级 Agent 运行平台。在 Anthropic 和 Vercel 各自提供「云端封闭方案」的背景下,Sandstorm 代表了一种「开源可替换」的第三条路。
它的核心价值不在于技术上的颠覆性创新(E2B 沙箱 + FastAPI + SSE 是成熟组合),而在于产品化程度:把一个完整的 Agent 运行体验——从 CLI 到 Slack 集成、从记忆系统到触发器、从可观测性到 Replay——打包成一个任何人 pip install 就能用的工具。这降低了企业引入 AI Agent 的门槛,让「数据不出境」成为可能。
截至分析日,Sandstorm 在 GitHub 拥有 443 Stars,topics 覆盖 agent-sdk、ai-agents、anthropic、claude、e2b、fastapi、llm、sandbox、slack-bot,反映了其在开源 AI Agent 生态中的准确定位。