MiGoller/ai-agent-sandbox

GitHub: MiGoller/ai-agent-sandbox

基于 Podman 的 rootless 容器沙盒,为自主 AI 编码 Agent 提供安全隔离的运行环境,防止潜在的提示词注入攻击危害主机系统。

Stars: 0 | Forks: 0

# AI Agent 沙盒 🛡️ **安全、隔离且 rootless 的环境,用于运行自主 AI CLI Agent(`Hermes`、`Aider`、`Claude Code`),避免暴露您的主机系统。** ## 问题所在 现代 AI 编码 Agent 功能极其强大,但它们需要您的终端具备执行能力。如果 Agent 遭到 **Indirect Prompt Injection**(间接提示词注入)的攻击(例如,通过读取公共代码仓库或网站上的恶意文件),它可能会被指示执行以下操作: - 🔐 **窃取私有 SSH 密钥** (`~/.ssh`) 或凭据。 - 💥 由于幻觉或恶意输入而**运行破坏性命令** (`rm -rf /`)。 - 🌐 **访问敏感的主机进程**。 简单的 `.gitignore` 样式文件只能帮助减少 token 混乱——**它并不是安全边界。** ## 解决方案 `ai-agent-sandbox` 使用 Podman 和多层安全验证机制,将您的 AI Agent 锁定在经过强化的 **rootless 容器牢笼**中。 - 🔒 **完全隔离:** Agent 只能看到您授予其访问权限的特定项目文件夹。它无法查看您的主目录或未经批准的进程。 - 🌐 **网络锁定(可选/默认):** 除非通过 `--online` 明确启用,否则禁用网络访问以防止数据泄露。 - 🛡️ **阶段一预检验证:** 启动器会自动检查主机依赖项、验证输入路径,并在执行前拦截潜在的危险命令。 - 🧹 **干净的工作区策略:** 特定于工具的数据、聊天历史记录和配置会映射到集中的主机目录,让您的项目文件夹保持完全整洁。 ## 目录结构与内存映射 主机系统提供了一个集中的配置目录,该目录会动态映射到容器内每个工具期望的原生标准目录: ``` Host System Container (Guest) └── ~/.config/ai-agent-sandbox/ ├── hermes/ ───────────────► /root/.hermes/ ├── aider/ ───────────────► /root/.aider/ └── claude-code/ ───────────────► /root/.claude-code/ ``` ### 仓库布局 ``` . ├── run.sh # Universal secure launcher (with Phase 1 validation) └── flavors/ ├── base/ # Common core layer (Ubuntu 24.04 + core utilities) ├── hermes/ # Hermes Agent flavor layer ├── aider/ # Aider flavor layer └── claude-code/ # Claude Code flavor layer ``` ## 支持的版本 | 版本 | 目标 AI Agent | 默认容器命令 | 网络要求 | | --- | --- | --- | --- | | `hermes` | 开源多 Agent 路由器 | `hermes chat --tui` | 支持离线 | | `aider` | CLI 结对编程工具 | `aider` | 支持离线(配合本地 LLM) | | `claude-code` | Anthropic 官方 CLI Agent | `claude` | 需要 `--online` | | `base` | 沙盒核心环境 | `bash` | 支持离线 | ## 前置条件与安装 要使用此沙盒,您需要在主机系统上安装 **Podman**。之所以需要 Podman,是因为它默认以 rootless 方式运行,与标准的 Docker 设置相比提供了更出色的安全性。 ### 🐧 Linux / WSL2 (Ubuntu / Debian) ``` sudo apt update && sudo apt install -y podman ``` ### 🍏 macOS (Homebrew) ``` brew install podman podman machine init podman machine start ``` ## 快速开始 1. **使启动器脚本可执行**: ``` chmod +x run.sh ``` 2. **在严格隔离模式下启动默认 Agent(Hermes)**: ``` ./run.sh ``` 3. **启动一个在线 Agent(例如 Claude Code)**: ``` ./run.sh claude-code --online ``` ## 用法与 CLI 标志 通用启动脚本(`run.sh`)充当容器执行的安全包装器。 ### 核心标志 * `./run.sh` ➔ 在 **严格隔离模式**(无网络)下启动默认版本(`hermes`)。 * `./run.sh --online` ➔ 启用主机网络模式(外部 API 调用或诸如 LiteLLM 之类的本地 LLM 代理需要此模式)。 * `./run.sh --build` ➔ 强制 Podman 重新构建所选版本的容器层。 * `./run.sh --local` ➔ 将 Agent 内存从全局回退目录(`~/.config/ai-agent-sandbox`)切换到当前目录中特定于项目的隐藏文件夹(`.ai_agent_sandbox_data`)。 ### 自定义命令与 Shell 访问 要绕过默认的启动命令或进入交互式调试 shell,只需将您的命令附加到脚本的末尾: ``` # 在 Aider sandbox 内获取标准的交互式 bash shell ./run.sh aider bash # 执行一次性命令并立即退出 ./run.sh --online hermes profile list ``` ## 许可证 本项目基于 **MIT License** 授权。
标签:AI代理, Cutter, Docker, Podman, SOC Prime, 安全防御评估, 安全防护, 容器沙箱, 开发工具, 环境隔离, 请求拦截