2026年6月12日 2 分钟阅读

如何在 AI Agent 构建全程做好沙箱保护:Capakit 从构建到运行的安全实践

tinyash 0 条评论

当你让 AI Agent 为你编写应用时,真正面临的风险是什么?不是 Agent 写错了代码,而是它在你的本机上执行了来历不明的脚本、下载了不可控的依赖包、访问了不该访问的文件。

多数工具只对运行阶段做沙箱隔离,但整个构建阶段——从 npm installbun build——完全暴露在你的宿主机上。这意味着你的 SSH 密钥、AWS 凭据、数据库密码就在那里,等着某个 preinstall 脚本顺手带走。

这篇文章介绍 Capakit,一个免费的 CLI 工具包和运行时,它把你的 AI 应用(Kit)从构建到运行全程沙箱化。所有操作在一次性、无网络的临时沙箱中完成,结束后不留痕迹。

为什么构建阶段比运行阶段更危险

传统沙箱的思路很直接:应用跑起来后,把它关进笼子里。但 AI 应用的生命周期有三个阶段——构建、测试、运行——其中构建阶段实际上是最大风险面:

阶段典型操作风险等级
构建npm installpip installbun build🔴 极高 — 可执行任意脚本
测试运行测试用例、访问文件🟡 中 — 可读取文件
运行提供服务、处理请求🟢 低(已沙箱化)

npm installpostinstall 钩子可以执行任意 shell 命令。一个被污染的包可能在安装时读取你的 ~/.ssh/id_rsa 并外传到攻击者服务器。传统沙箱只隔离运行阶段,让构建阶段完全暴露。

Capakit 的核心差异:它把构建和运行都放进一次性沙箱。没有继承的环境变量,没有文件系统访问权限,默认没有网络——你需要明确声明放行哪些流量。

安装与首次运行

Capakit 目前支持 macOS(使用系统 Seatbelt 沙箱),Bun 运行时,完全免费:

curl -fsSL https://capakit.com/install.sh | sh

brew install capakit/tap/capakit

安装后直接运行一个 Demo Kit 试试:

capakit run https://github.com/capakit/hello-world-demo-kit

你会看到 Capakit 下载 Kit、准备 workloads、启动本地运行时,然后在 localhost:50958 上暴露一个 MCP 端点。整个过程从下载、安装依赖到运行,全部在沙箱中完成

理解 Kit:AI 应用的标准单元

Capakit 提出「Kit」这个概念——一个标准化的 AI 应用包。一个 Kit 的本质是源代码 + manifest 文件,任何人只需一条命令就能完全沙箱化地运行。

典型的 Kit 结构:

hello-world-demo-kit/
├── AGENTS.md         # Agent 引导说明
├── capability.yml    # 核心 manifest
├── capability-test.yml  # 测试定义
├── README.md         # 项目说明
└── workloads/
    └── hello/
        └── src/
            └── index.ts

capability.yml 是关键文件,定义了 workload 的入口、服务端点和网络策略:

version: '1'
name: hello-world
workloads:
  hello:
    endpoints:
      - mcp
    runtime:
      source: .
      toolchain: bun
      prepare:
        command: bun install
      develop:
        command: bun run dev
      launch:
        command: bun run start
    network:
      egress:
        - api.openai.com

注意 network.egress 字段:默认拒绝所有出站流量,只有在这里声明过的域名才放行。这意味着你的 Agent 构建的应用无法偷偷往外传数据——除非你明确允许。

三大实战场景

场景一:让 Agent 创建可共享的 AI 工具

当你需要让 Claude Code 或 Codex 创建一个带 Web UI 的工具时,直接告诉它用 Capakit:

使用 capakit 创建一个 Kit,叫 invoice-helper。
我想要一个 Web UI,可以上传发票文本并提取字段:
vendor、date、total 和 line items。
请添加测试和清晰的使用说明。

Agent 会生成完整的 Kit 结构,包含 MCP 端点。你可以分享给团队:

capakit run https://github.com/你的用户名/invoice-helper

场景二:将 Kit 注册为 Agent Skill

Capakit 支持将运行的 Kit 自动注册为 Codex 或 Claude Code 的 Skill:

capakit run https://github.com/capakit/hello-world-demo-kit \
  --global-skill codex

这条命令会在 ~/.codex/skills/hello-world/ 下创建 Skill 文件,包含 Agent 指令和调用入口。之后你的 Codex 就能直接通过 /hello-world 调用这个 Kit。

场景三:安全地开发和测试

Capakit 提供了一个 exec 命令,让你在沙箱中安全地执行任意 workload 命令:

git clone https://github.com/你的用户名/invoice-helper
cd invoice-helper
capakit exec hello -- bun add pdf-parse

和直接在终端执行 bun add 不同,这个命令运行在隔离沙箱中——没有宿主机环境变量,没有文件访问权限,bun addpostinstall 脚本即使作恶也无法访问你的私密文件。

与同类工具对比

特性CapakitDockermacOS Sandbox
覆盖构建阶段
覆盖运行阶段
默认无网络❌(需配置)
一次性沙箱❌(容器可复用)
MCP 原生支持
Agent Skill 集成
安装复杂度一条命令需安装 Docker系统内置

Capakit 不是 Docker 的替代品。Docker 是通用的容器运行时,而 Capakit 专门为 AI Agent 构建的应用设计:零配置、MCP 原生、自动 Skill 注册、构建+运行全程沙箱。如果你的 Agent 经常创建需要共享的工具,Capakit 的开箱即用体验比 Docker 配 MCP 要顺畅得多。

注意事项

  • 目前仅支持 macOS:使用系统 Seatbelt 沙箱(Apple 的沙箱机制),Linux 和 Windows 暂不支持
  • Bun 运行时:当前 workloads 使用 Bun 作为默认运行时
  • Chromium 不支持:涉及 Chromium 的 workload 已知在 macOS sandbox 下有兼容性问题
  • 免费、无资金支持:开发者从 2025 年初全职投入做这个项目,无外部融资

总结

Capakit 解决了一个被大多数人忽视的问题:AI Agent 构建的应用在构建阶段同样需要沙箱保护。它的「全程沙箱」思路——从 npm install 到生产运行,全部在一次性、无网络的临时环境中完成——比传统只隔离运行时的方案更彻底。

对于需要经常让 AI Agent 创建和共享工具的团队,Capakit 提供了一个零配置的沙箱方案,而且 MCP 和 Agent Skill 的原生支持让集成非常自然。如果你正在让 Agent 写代码并分发给团队,值得一试。

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。