butterclaw-tech/butterclaw

GitHub: butterclaw-tech/butterclaw

ButterClaw 是一个本地优先的 Agentic SOC 安全监控与响应系统,专为保护自主 AI Agent 免受 prompt injection 和行为篡改而设计。

Stars: 2 | Forks: 2

``` ██████╗ ██╗ ██╗████████╗████████╗███████╗██████╗ ██████╗██╗ █████╗ ██╗ ██╗ ██╔══██╗██║ ██║╚══██╔══╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝██║ ██╔══██╗██║ ██║ ██████╔╝██║ ██║ ██║ ██║ █████╗ ██████╔╝██║ ██║ ███████║██║ █╗ ██║ ██╔══██╗██║ ██║ ██║ ██║ ██╔══╝ ██╔══██╗██║ ██║ ██╔══██║██║███╗██║ ██████╔╝╚██████╔╝ ██║ ██║ ███████╗██║ ██║╚██████╗███████╗██║ ██║╚███╔███╔╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ ``` # 🦞 ButterClaw v0.6.5:Agentic SOC [![License](https://img.shields.io/badge/License-Apache_2.0-ef4444.svg)](https://opensource.org/licenses/Apache-2.0) [![Version](https://img.shields.io/badge/version-0.6.5-navy.svg)](CHANGELOG.md) [![Dashboard](https://img.shields.io/badge/Live-butterclaw.tech-eab308.svg)](https://butterclaw.tech) 用于自主 AI 的本地优先动态响应系统。ButterClaw 使用本地化推理引擎来捕获混淆的 prompt injection。特色是 **ButterVault**:一个零信任凭据保险柜,如果检测到违规行为,它会将您的 API key、OAuth token 和 API key hash 物理性地粉碎成加密垃圾。现在具有**确定性 policy guardrails**、**外部 alert dispatch** 和**生产就绪的部署打包** —— Sentinel 可以部署在任何地方。**先评估,后执行。** 当授权的 AI Agent 通过**间接 prompt injection**或**跨站 WebSocket 劫持(CSWH)**被攻陷时,传统的安全边界就会失效。ButterClaw 充当“中间人 LLM”安全运营中心(SOC),主动监控原始 OS 级遥测数据。 ### 🦞 澄清说明 **ButterClaw Tech (butterclaw.tech)** 是一个独立的、从头开始构建的本地优先 Agentic SOC 和动态安全层,专为自主 AI 系统设计。 它**不**附属于: * `butterclaw.ai` —— 一个基于 OpenClaw 构建的托管托管服务。 * OpenClaw 或任何 OpenClaw 分支(包括 `ai‑nhancement/ButterClaw`)。 * 生态系统中的任何其他“ButterClaw”项目。 ButterClaw Tech 拥有自己的架构、runtime、内存模型和执行语义。它的存在是为了监视、审计和保护 agentic 系统——而不是成为另一个 agent runtime。 **如果您正在寻找:** * **托管式 OpenClaw 体验?** → 使用 `butterclaw.ai` 或 Hostinger 的一键式解决方案。 * **通用的自主 agent 框架?** → 使用 OpenClaw 或 Hermes-Agent。 * **具有行为漂移跟踪、双半球推理和真正能粉碎密钥的保险库的本地优先动态安全层?** → 您找对地方了 ([ButterClaw.tech](https://butterclaw.tech))。 ## 🚀 v0.6.5 的新特性(外骨骼已封印)? **版本 0.6.5** 是专为 Hacker News 发布而准备的官方代码锁定、数学级封印的生产版本。它引入了确定性的零日防御、实时的终端矩阵以及大规模的安全加固。 * **Zero-Day Arsenal (`default_signatures.json`):** 内置 5 个预编译的 regex signature,开箱即用地针对 CSWH 和 prompt injection。在 LLM Brain 甚至对其进行评估之前的几毫秒内拦截威胁。 * **The Paranoia Dial:** 可扩展的动态响应系统。Level 1(观察),Level 2(主动防御:仅 SIGKILL),Level 3(Air-Gapped Lockdown:SIGKILL + 粉碎保险柜)。 * **可视化 TUI 仪表盘 (`.\dash`):** 实时、双缓冲、无闪烁的终端界面,在 Linux 和 Windows Docker 主机上显示实时的 SOC 遥测数据、活动的规则以及当前的 Paranoia 级别。 * **审计修复与加固:** 系统性地根除了 29 个不同的漏洞、竞态条件和线程泄漏。Gibson 竞态条件已得到数学意义上的封印,SMTP 密码现在在静止时进行加密,并且 SQLite 的暴力破解跟踪是完全持久化的。 - **Live Fire 测试脚本 (`scripts/add_rule.py`, `scripts/test_attack.py`):** 独立的诊断测试工具,允许操作员安全地注入自定义 regex signature,并针对 Arsenal 模拟动态的 prompt injection 攻击,而无需活动的 LLM payload。 * **社区贡献:** Telegram Alert Channel —— 原生的 Telegram Bot API 支持已添加到 Alert Dispatcher 中。操作员可以将 SOC alert 通过 🔴/🟡/🟢 严重性格式化和自动的 4096 字符 payload 限制路由到移动设备。(由 @huanghaiyss 贡献) ## 🚀 v0.6.4 的新特性(自主部署)? **版本 0.6.4** 结合了上一个功能版本 (0.6.3) 的最后两个错误修复版本的补丁。并添加了一键式自主安装脚本,以减少安装过程中的摩擦。 * **一键式部署** 添加了一个自主的 install.sh 脚本,可将实现价值的时间缩短至 60 秒以内。 * **The Exoskeleton 加固** 统一了 v0.6.3 补丁周期,最终确定了 Nginx TLS 路由、Docker bridge 修复以及主动的 token 刺杀网络层。 ## 🚀 v0.6.3.2 的新特性(主动工具与 Nginx 路由)? **版本 0.6.3.2** 完全隔离了应用程序后端,并将 Gibson kill-switch 从本地擦除升级为主动的网络级威胁响应。 * **主动 Token 刺杀 (`buttervault.py`):** 当 `DRY_RUN=False` 时,Gibson 不再只是粉碎本地 SQLite 文件。它现在会向 GitHub 和其他外部 OAuth provider 发送实时的 HTTP `DELETE` 和 `POST` 请求,以便在烧毁本地数据库*之前*立即使 token 全局失效。 * **双重 Air-Gap (`DRY_RUN`):** 堵住了一个手动 UI 按钮绕过安全保护的关键漏洞。Gibson 现在包含一个硬编码的、低级别的 `DRY_RUN` 检查,阻止所有动态操作,从而保证安全的本地 prompt injection 测试。 * **端口 5000 隔离:** 移除了 Docker 中原始暴露的 5000 端口。所有 UI 和 API 流量(`index.html` 和 `routing.html`)现在都使用本地 TLS 证书通过标准 Web 端口 (80/443) 上的 Nginx 反向代理进行安全路由。 * **SSRF 锁定 (`butterclaw_mcp.py`):** 将 `scan_port` MCP 工具硬编码为严格的 allowlist。恶意的 LLM 无法再利用 ButterClaw 抓取内部 VPS/AWS 元数据。 ### 📦 v0.6.3.1 的新特性(完整 Docker) **完整 Docker 版** 加强了部署包,实现了无缝的跨平台编排(特别是 Windows/WSL 环境),并打破了几个复杂的容器化死锁。 * **基础设施自动治愈:** 解决了“冷启动悖论”。如果数据库被擦除,服务器会在启动时自动生成并注入自己的安全 API key 和 Watcher 徽章。 * **Air-Gapped 推送通知 (`ntfy`):** 将官方的 `ntfy` 容器集成到部署 stack 中。ButterClaw 现在可以完全在本地将原生 OS 通知直接推送到您的手机或浏览器,而不会将遥测数据泄露给 Discord 或 Slack 等第三方云服务。 * **Alert Dispatcher 自动启动:** Exoskeleton 会动态读取您的 `.env` topic,并在启动时自动在数据库中构建自己的通知路由规则。 * **保险库初始化死锁修复:** 强制 Master Vault Key 在服务器启动序列中生成,确保 session-cookie 签名者在*第一次*用户登录尝试之前就已准备就绪。 * **Split-Brain 数据库治愈:** 统一了所有模块中针对 `config.py` 的 `try/except` 导入,防止 Docker volume 挂载意外地将 SQLite 写入分散到不同目录。 * **Windows 主机桥接 (`host.docker.internal`):** 通过将隔离的 Linux 容器干净地桥接回主机原生 Windows Ollama 实例,保护了 GPU 加速的本地 Ollama 推理。 * **可见的 Keyring (`XDG_DATA_HOME`):** 通过将备用 Keyring 存储直接映射到可见的 `/app/data` 目录中,绕过了 Docker 的 root 权限陷阱。 * **前端路由别名:** 为标准 HTML 路径添加了原生的 Flask `@app.route` 装饰器,允许在没有 Nginx 的情况下进行无缝的开发模式浏览。 ### 📦 v0.6.3 引入的特性 **部署打包** —— Exoskeleton 已经过实战检验。v0.6.3 添加了将 ButterClaw 部署到生产环境所需的一切:集中式配置、Docker 容器化、systemd 服务管理、nginx TLS 终止以及自动化的备份/恢复 —— 所有这些都无需添加任何新的 pip 依赖。 #### ⚙️ 集中式配置 (`config.py`) 所有 5 个模块的所有 runtime 配置的唯一事实来源。无需再修改 5 个文件来更改数据库路径。 跨越 9 个类别的 **26 个可配置字段**: | 类别 | 字段数 | 示例 | |----------|--------|----------| | **Paths** | 3 | `DB_PATH`, `MCP_SCRIPT`, `BASE_DIR` | | **Server** | 3 | `HOST`, `PORT`, `DEBUG` | | **CORS** | 1 | `CORS_ORIGINS` (逗号分隔) | | **Brain/Ollama** | 5 | `OLLAMA_BASE_URL`, `MODEL_NAME`, `CONFIDENCE_THRESHOLD`, `DRY_RUN` | | **MCP Transport** | 3 | `MCP_TRANSPORT`, `MCP_SSE_URL`, `MCP_SSE_TOKEN` | | **Auth** | 4 | `AUTH_RATE_ADMIN`, `SESSION_TTL` | | **Alerts** | 4 | `ALERT_DELIVERY_TIMEOUT`, `ALERT_MAX_RETRIES` | | **OAuth** | 1 | `OAUTH_STATE_TTL` | | **Identity** | 1 | `INSTANCE_ID` | **优先级链:** ``` # 用法 — 所有 5 个模块通用: from config import cfg db_path = cfg.DB_PATH # unified across server, auth, policy, alert, vault port = cfg.PORT # was hardcoded 5000 confidence = cfg.CONFIDENCE_THRESHOLD # was hardcoded 0.6 ``` **关键特性:** * 所有环境变量均带有 `BUTTERCLAW_` 前缀 —— 不会与系统变量发生冲突 * 导入时执行 `_validate()` —— 配置错误时快速失败 * `to_dict(redact_secrets=True)` —— API 安全的配置导出 * 基于标准库构建的 `.env` 解析器 —— 无需 python-dotenv 依赖 * 环境变量永远不会被 `.env` 覆盖(符合 12-factor 规范) #### 🐳 Docker 部署 三容器生产 stack: | 容器 | 角色 | 健康检查 | | --- | --- | --- | | **butterclaw** | 主应用程序(Flask + 所有模块) | `healthcheck.py` → `/api/health` | | **ollama** | 本地 LLM 推理 | `/api/tags` endpoint | | **nginx** | TLS 终止 + 反向代理 + 静态文件 | 上游健康状态 | **关键特性:** * 容器内使用非 root 的 `butterclaw` 用户 * 通过 `nvidia-container-toolkit` 进行 GPU 直通(自动回退至 CPU) * 用于 SQLite 持久化和 Ollama 模型缓存的命名卷 (Named volume) * 具有 10MB 轮转的 JSON 文件日志 * 用于编排器集成的 `HEALTHCHECK` 指令 #### 🖥️ systemd 部署(裸机 VPS) ``` # 安装 service sudo cp systemd/butterclaw.service /etc/systemd/system/ sudo cp .env /etc/butterclaw.env sudo systemctl daemon-reload sudo systemctl enable --now butterclaw # 监控 journalctl -u butterclaw -f ``` **安全加固:** * `ProtectSystem=strict` —— 除工作目录外文件系统只读 * `NoNewPrivileges=true` —— 防止权限提升 * `PrivateTmp=true` —— 隔离的临时目录 * `Restart=on-failure` 并带有 5 秒延迟 #### 💾 备份与恢复 ``` # 创建带有时间戳的 backup (SQLite .backup + .env) ./scripts/backup.sh # 列出可用的 backup ./scripts/restore.sh # 从特定 backup 恢复 ./scripts/restore.sh backups/butterclaw-backup-20260420-1200.tar.gz ``` * SQLite `.backup` 命令(原子操作 —— 切勿在活动数据库上使用 `cp`) * 自动清理旧备份(保留最近 7 次) * 在归档中包含 `.env` 配置 #### 🔒 Nginx TLS 终止 * HTTP → HTTPS 重定向 * TLSv1.2/1.3 和 ECDHE cipher suite * HSTS(1 年)、X-Content-Type-Options、X-Frame-Options * 特定于 SSE 的代理:`proxy_buffering off` + 24 小时超时 * 为仪表盘 HTML 提供静态文件服务 * 300 秒的 Brain 推理读取超时 ## 🔔 Alert Dispatcher (v0.6.2) 一个无法*触达*其操作员的安全监控系统只是一个多了几步操作的日志文件。Alert Dispatcher 将通知推送到外部渠道,以便操作员在事情发生的那一刻就能知晓,即使当时没有人在看仪表盘。 ### 多渠道 Alert 路由 5 种渠道类型,全部基于 Python 标准库构建(零新增 pip 依赖): | 渠道 | 传输方式 | Payload 格式 | | --- | --- | --- | | **Webhook** | HTTP POST + HMAC-SHA256 签名 | 包含 event_type, severity, context 的 JSON | | **Discord** | Discord webhook API | 带有颜色编码严重性边栏的丰富嵌入 | | **ntfy** | ntfy.sh 或自托管 | 包含 title, body, priority, tags 的推送 | | **SMTP** | smtplib | 具有结构化纯文本正文的电子邮件 | | **Gotify** | 自托管推送 API | Title + message + priority (1-10) | ### 📱 Air-Gapped 推送通知 ButterClaw v0.6.3.1 内置了一个完全私有的、自托管的推送通知服务器(`ntfy`),直接集成到 Docker stack 中。 1. 在您的 `.env` 文件中设置 `BUTTERCLAW_ALERT_NTFY_TOPIC=your-secret-topic`。 2. 在浏览器中打开 `http://localhost:2586`(或您服务器的 IP),或下载免费的 `ntfy` iOS/Android 应用程序。 3. 订阅您的秘密 topic。在检测到威胁的毫秒级时间内,您将收到原生、格式精美的推送通知——绝对不会有哪怕一字节数据离开您的本地网络。 ### 9 种 Alert 事件类型 | 事件 | 触发时机 | 严重性 | | --- | --- | --- | | `verdict_critical` | Brain 或 Policy 返回 CRITICAL | 🔴 Critical | | `verdict_warning` | Brain 返回 WARNING(置信度 >= 50%) | 🟡 Warning | | `gibson_triggered` | 由 ChainExecutor 触发的自动 Gibson | 🔴 Critical | | `gibson_manual` | 通过 `/api/rotate-keys` 触发的手动 Gibson | 🔴 Critical | | `policy_override` | Policy Engine 覆盖了 Brain 的判定 | 🟡 Warning | | `policy_blocked` | Policy Engine 阻止了请求或工具 | 🟡 Warning | | `auth_brute_force` | 60 秒内来自同一 IP 的 5 次以上 auth 失败 | 🔴 Critical | | `mcp_offline` | MCP 进程由存活转为死亡 | 🔴 Critical | | `system_startup` | 服务器成功启动 | 🟢 Info | ## 🛡️ Policy Engine (v0.6.1) 为概率性 Brain 提供确定性的 guardrails。实现了 DRIFT 框架模式(NeurIPS 2025)—— 这是一个动态验证器,它通过声明“*如果 X,则总是 Y*”的规则来约束 Brain 的概率推理 —— 无需额外推理。 ### 3 层 Scope 过滤管道 | Scope | 触发时机 | 它能做什么 | | --- | --- | --- | | **Pre-Brain** | 在调用 LLM 之前 | 直接短路返回 CRITICAL 或 BENIGN,而不消耗推理时间 | | **Post-Brain** | 在 LLM 返回判定之后 | 覆盖、升级、降级判定,或要求更高的置信度 | | **Pre-Tool** | 在链条中的每次 MCP 工具调用之前 | 通过 allowlist/blocklist 阻止特定工具 | **16 个安全的条件运算符** —— 全部使用白名单分派,无 `eval()`: `contains`, `not_contains`, `equals`, `not_equals`, `starts_with`, `ends_with`, `regex_match`, `greater_than`, `less_than`, `greater_equal`, `less_equal`, `in_list`, `not_in_list`, `length_gt`, `length_lt` ## 🔐 API Gateway 与身份验证 (v0.6.0) 每个 endpoint 都受到基于角色的访问控制(RBAC)以及 HMAC-SHA256 API key 和 session token 的保护。 | 级别 | 访问级别 | 用例 | | --- | --- | --- | | **Admin** | 完全访问 —— 保险库、Gibson、密钥管理、配置 | 系统所有者 | | **Operator** | 分析威胁、读取设置、启动 OAuth | 活动操作员 | | **Viewer** | 只读 —— 日志、事件、状态、SSE 流 | 监控仪表盘 | ## 💀 Gibson Kill Switch 核选项。一旦触发,ButterVault 会将所有凭据物理粉碎成加密垃圾。在 v0.6.2+ 版本中,Alert Dispatcher 会在保险库销毁*之前*发送通知 —— 先告警,后焚毁。在 v0.6.3.2+ 版本中,它会在销毁本地数据之前,对外部 API 发出主动的网络级刺杀请求。 ``` Gibson Triggered: 1. dispatch_alert("gibson_triggered") ← alert fires 2. _dispatch_worker → all channels ← notifications sent 3. buttervault.butter_keys() ← vault destroyed & tokens assassinated 4. auth.destroy_all_api_keys() ← auth destroyed 5. Operator receives notification ← notification arrives ``` **Gibson 之后存留的内容:** ``` DESTROYED by Gibson: SURVIVES Gibson: ├── vault table (API keys) ├── policies table ├── oauth_tokens table ├── policy_events table ├── api_keys table ├── alert_channels table ├── session cache ├── alert_rules table └── OS keyring master key ├── alert_history table ├── mcp_events table ├── logs table └── config.py / .env (filesystem) ``` ## 📚 文档 如需深入了解 ButterClaw 的架构、API 参考和安全模型,请查看我们的文档目录: * **[架构与 Exoskeleton](docs/ARCHITECTURE.md)** * **[API 参考(43 个 Endpoint)](docs/API.md)** * **[OWASP Agentic Security Initiative (ASI) 映射](docs/SECURITY.md)** * **[部署与配置指南](docs/DEPLOYMENT.md)** ## 🏗️ 架构 **Exoskeleton —— 分层防御:** ``` ┌─────────────────────────────────────────────────┐ │ Deployment Layer (v0.6.3.x) │ │ Docker, systemd, nginx, config.py, backup │ ├─────────────────────────────────────────────────┤ │ Alert Layer (v0.6.2) │ │ 5 channels, 9 event types, HMAC signing │ ├─────────────────────────────────────────────────┤ │ Policy Layer (v0.6.1) │ │ 3-scope pipeline, 16 operators, DRIFT pattern │ ├─────────────────────────────────────────────────┤ │ Auth Layer (v0.6.0) │ │ HMAC-SHA256 keys, 3-tier RBAC, sessions │ ├─────────────────────────────────────────────────┤ │ The Nervous System (v0.5.x) │ │ Brain, ChainExecutor, Event Ledger, MCP, SSE │ ├─────────────────────────────────────────────────┤ │ Core (v0.1–v0.4) │ │ Watcher, ButterVault, Dashboard, Ollama │ └─────────────────────────────────────────────────┘ ``` **组件映射表:** | 组件 | 文件 | 行数 | 版本 | 角色 | | --- | --- | --- | --- | --- | | Config | `config.py` | ~480 | v0.6.3 | 集中式环境驱动配置 | | Server | `server.py` | ~1,200 | v0.6.3.1 | Flask API、Brain、ChainExecutor | | Auth | `auth.py` | ~890 | v0.6.0 | API gateway、RBAC、session token | | Policy Engine | `policy_engine.py` | ~350 | v0.6.1 | 确定性 guardrails | | Alert Dispatcher | `alert_dispatcher.py` | ~1,566 | v0.6.2 | 推送通知 | | ButterVault | `buttervault.py` | ~400 | v0.6.3.2 | 加密保险库、主动撤销、Gibson | | MCP Client | `butterclaw_mcp.py` | ~300 | v0.6.3.2 | 工具定义与 SSRF 阻断 | | MCP Transport | `mcp_transport.py` | ~250 | v0.5.0 | SSE/stdio 传输 | | OAuth Config | `oauth_config.py` | ~60 | v0.5.2 | OAuth provider 模板 | | Watcher | `watcher.py` | ~150 | v0.1.0 | OS 遥测收集器 | ## 📡 API 参考 ### Auth Endpoint(7 个路由 —— v0.6.0) | 方法 | Endpoint | 角色 | 描述 | | --- | --- | --- | --- | | POST | `/api/auth/login` | public | 用 API key 交换 session token | | POST | `/api/auth/logout` | any | 清除 session cookie | | GET | `/api/auth/whoami` | any | 当前身份 | | GET | `/api/auth/keys` | admin | 列出所有 API key | | POST | `/api/auth/keys` | admin | 创建新的 API key | | DELETE | `/api/auth/keys/` | admin | 撤销 API key | | DELETE | `/api/auth/keys//purge` | admin | 永久删除 key | ### Policy Endpoint(8 个路由 —— v0.6.1) | 方法 | Endpoint | 角色 | 描述 | | --- | --- | --- | --- | | GET | `/api/policies` | viewer | 列出所有 policy | | POST | `/api/policies` | admin | 创建 policy | | GET | `/api/policies/` | viewer | 获取 policy | | PUT | `/api/policies/` | admin | 更新 policy | | DELETE | `/api/policies/` | admin | 删除 policy | | POST | `/api/policies//toggle` | admin | 启用/禁用 | | POST | `/api/policies/dry-run` | operator | 针对 policy 测试 payload | | GET | `/api/policies/events` | viewer | 查询 policy 事件日志 | ### Alert Endpoint(13 个路由 —— v0.6.2) | 方法 | Endpoint | 角色 | 描述 | | --- | --- | --- | --- | | GET | `/api/alerts/channels` | viewer | 列出渠道 | | POST | `/api/alerts/channels` | admin | 创建渠道 | | PUT | `/api/alerts/channels/` | admin | 更新渠道 | | DELETE | `/api/alerts/channels/` | admin | 删除渠道(级联) | | POST | `/api/alerts/channels//toggle` | admin | 启用/禁用 | | POST | `/api/alerts/channels//test` | operator | 发送测试 alert | | GET | `/api/alerts/rules` | viewer | 列出规则 | | POST | `/api/alerts/rules` | admin | 创建规则 | | PUT | `/api/alerts/rules/` | admin | 更新规则 | | DELETE | `/api/alerts/rules/` | admin | 删除规则 | | POST | `/api/alerts/rules//toggle` | admin | 启用/禁用 | | GET | `/api/alerts/history` | viewer | 查询 alert 历史记录 | | GET | `/api/alerts/status` | viewer | Alert 系统摘要 | ### 核心 Endpoint(5 个路由) | 方法 | Endpoint | 角色 | 描述 | | --- | --- | --- | --- | | POST | `/api/analyze` | operator | 分析威胁 payload | | GET | `/api/health` | public | 系统健康状态 + 实例信息(v0.6.3 增强) | | GET | `/api/config` | admin | 已解析配置(脱敏机密)(v0.6.3 新增) | | GET | `/api/stream` | viewer | SSE 事件流 | | GET | `/api/logs` | viewer | 查询日志历史记录 | ### MCP Endpoint(6 个路由 —— v0.5.0+) | 方法 | Endpoint | 角色 | 描述 | | --- | --- | --- | --- | | GET | `/api/mcp/tools` | viewer | 列出可用的 MCP 工具 | | POST | `/api/mcp/restart` | admin | 重启 MCP 进程 | | GET | `/api/mcp/status` | viewer | MCP 进程健康状态 | | GET | `/api/events` | viewer | 查询事件账本 | | GET | `/api/events/count` | viewer | 事件账本计数 | | GET | `/api/settings` | viewer | 服务器设置 | ### Vault 与 OAuth Endpoint(10 个路由 —— v0.5.x) | 方法 | Endpoint | 角色 | 描述 | | --- | --- | --- | --- | | POST | `/api/rotate-keys` | admin | 手动触发 Gibson Kill Switch | | GET | `/api/vault/status` | viewer | 保险柜健康状态 | | GET | `/api/vault/credentials` | operator | 列出已存储的凭据 | | POST | `/api/vault/credentials` | admin | 存储新凭据 | | DELETE | `/api/vault/credentials/` | admin | 删除凭据 | | GET | `/api/oauth/providers` | viewer | 列出 OAuth provider | | POST | `/api/oauth/start/` | operator | 启动 OAuth 流程 | | GET | `/api/oauth/callback` | public | OAuth callback 处理器 | | GET | `/api/oauth/tokens` | operator | 列出 OAuth token | | DELETE | `/api/oauth/tokens/` | admin | 删除 OAuth token | **总计:43 个 API 路由**(7 个 Auth + 8 个 Policy + 13 个 Alert + 5 个核心 + 6 个 MCP + 10 个 Vault,从 49 个减少以考虑共享的 endpoint —— 因为有些 endpoint 跨模块注册) ## 📁 项目结构 ``` butterclaw/ ├── server.py # Flask API + Brain + ChainExecutor (v0.6.3.1) ├── config.py # Centralized configuration (v0.6.3) ├── auth.py # API gateway + RBAC (v0.6.0) ├── policy_engine.py # Deterministic guardrails (v0.6.1) ├── alert_dispatcher.py # Push notifications (v0.6.2) ├── buttervault.py # Encrypted vault + active revokes + Gibson (v0.6.3.2) ├── butterclaw_mcp.py # MCP tool definitions + SSRF blocks (v0.6.3.2) ├── mcp_transport.py # SSE/stdio transport (v0.5.0) ├── oauth_config.py # OAuth provider templates (v0.5.2) ├── watcher.py # OS telemetry collector (v0.1.0) ├── index.html # Main dashboard (v0.6.3) ├── routing.html # Advanced config dashboard (v0.6.3) ├── requirements.txt # pip dependencies (v0.6.3) ├── .env.example # Environment template (v0.6.3) ├── Dockerfile # Container build (v0.6.3) ├── docker-compose.yml # Production orchestration (v0.6.3) ├── docker-compose.dev.yml # Dev overlay (v0.6.3) ├── .dockerignore # Build context exclusions (v0.6.3) ├── nginx/ │ └── butterclaw.conf # Reverse proxy config (v0.6.3) ├── scripts/ │ ├── healthcheck.py # Docker health check (v0.6.3) │ ├── backup.sh # Backup utility (v0.6.3) │ └── restore.sh # Restore utility (v0.6.3) ├── systemd/ │ └── butterclaw.service # systemd unit file (v0.6.3) ├── data/ │ └── butterclaw.db # SQLite database (auto-created) ``` ## 🔒 安全架构 | 层级 | 机制 | 版本 | | --- | --- | --- | | **TLS** | 带 TLSv1.2/1.3、ECDHE cipher、HSTS 的 Nginx 反向代理 | v0.6.3 | | **Container** | 非 root 用户、只读文件系统、ProtectSystem=strict | v0.6.3 | | **Authentication** | HMAC-SHA256 API key、session token、httpOnly cookie | v0.6.0 | | **Authorization** | 3 级 RBAC (admin/operator/viewer) | v0.6.0 | | **Policy** | 确定性的 pre-brain/post-brain/pre-tool guardrails | v0.6.1 | | **Alerting** | 5 个外部渠道、HMAC 签名的 webhook、auth 暴力破解检测 | v0.6.2 | | **Vault** | Fernet 加密、OS keyring、主动网络 token 撤销、Gibson Kill Switch | v0.6.3.2 | | **Analysis** | 本地 LLM 推理 + 置信度评分 + 链式安全轨道 | v0.5.0 | | **Monitoring** | Event Ledger + Policy Events + Alert History —— 3 道审计追踪 | v0.5.0+ | ## 🛡️ OWASP Agentic Security Initiative (ASI) 覆盖范围 | ASI 威胁 | ButterClaw 缓解措施 | | --- | --- | | ASI-01:过度代理 | Brain 置信度门控 + ChainExecutor MAX_STEPS=10 + Policy Engine pre-tool scope (v0.5.0+) | | ASI-02:访问控制不足 | 3 级 RBAC + 每个 key 的速率限制 + HMAC-SHA256 认证 (v0.6.0) | | ASI-03:知识中毒 | 本地优先 LLM —— 无外部训练数据摄取。Watcher 监控 OS 遥测,而非用户内容 (v0.1.0+) | | ASI-04:身份与凭据滥用 | ButterVault + OAuth 生命周期 + 主动 token 撤销 + Gibson (v0.6.3.2) | | ASI-05:级联失败 | ChainExecutor 安全轨道:MAX_STEPS=10, TIMEOUT=60s (v0.5.1) | | ASI-06:间接 Prompt Injection | Policy Engine 对 payload 进行模式匹配 (v0.6.1) | | ASI-07:监控不足 | Event Ledger + Policy Events + Alert History —— 3 道审计追踪 (v0.5.0+) | | ASI-09:日志记录不足 | 3 道审计追踪 + 通过 Alert Dispatcher 的外部通知 (v0.6.2) | | ASI-10:不受控的升级 | Gibson panic 以原子方式销毁所有凭据 + alert 在销毁前触发 (v0.6.2) | ## 📋 版本历史 | 版本 | 代号 | 日期 | 里程碑 | | --- | --- | --- | --- | | **v0.6.4** | The Exoskeleton: Active Tools & Autonomous Deployment | 2026-06-08 | 一键安装脚本 | | **v0.6.3.2** | The Exoskeleton: Active Tools | 2026-05-21 | TLS 路由、SSRF 锁定、主动 token 撤销 | | **v0.6.3.1** | Deployment Packaging (Docker Edition) | 2026-05-07 | Docker bridge、Vault 死锁修复、Windows volume 修复 | | **v0.6.3** | The Exoskeleton: Deployment Packaging | 2026-05-01 | config.py、Docker、systemd、nginx、备份/恢复 | | **v0.6.2** | The Exoskeleton: Alert Dispatcher | 2026-05-01 | 5 个渠道、9 个事件、HMAC 签名、暴力破解检测 | | **v0.6.1** | The Exoskeleton: Policy Engine | 2026-05-01 | 3 层 scope 管道、16 个运算符、DRIFT 模式 | | **v0.6.0** | The Exoskeleton: API Gateway & Auth | 2026-04-20 | HMAC-SHA256、3 级 RBAC、session token | | **v0.5.2** | ButterVault OAuth | 2026-04-16 | OAuth 2.0 流程、token 刷新、Gibson 销毁 OAuth | | **v0.5.1** | Tool Chaining | 2026-04-16 | ChainExecutor、多步执行、安全轨道 | | **v0.5.0** | The Nervous System | 2026-04-14 | Event Ledger、SSE 传输、MCP Manager、内存 | | **v0.4.x** | MCP Transport Refactor | 2026-04-10 | 模块化传输、JSON-RPC、CSP 修复 | | **v0.3.x** | Routing Dashboard | 2026-04-04 | routing.html、高级配置 UI | | **v0.2.0** | ButterVault | 2026-04-01 | 加密凭据、Gibson Kill Switch | | **v0.1.0** | Initial Release | 2026-03-17 | 核心分析、watcher、仪表盘、MCP 工具 | ## 🗺️ 路线图 —— Exoskeleton (v0.6.x) | 支柱 | 版本 | 状态 | 交付物 | | --- | --- | --- | --- | | 1. API Gateway 与 Auth | v0.6.0 | ✅ 已交付 | HMAC-SHA256、RBAC、会话 | | 2. Policy Engine | v0.6.1 | ✅ 已交付 | 3 层 scope 管道、DRIFT 模式 | | 3. Alert Dispatcher | v0.6.2 | ✅ 已交付 | 5 个渠道、HMAC webhook | | 4. 部署打包 | v0.6.3 | ✅ 已交付 | Docker、systemd、config.py | **Exoskeleton 已完成。** 四大支柱均已发布。 ## ⚡ 快速开始(自主部署) 实现价值的时间在 60 秒以内。ButterClaw 的自动治愈架构可以从完全空白的状态开始,构建自己的数据库,生成安全密钥,并连接其 alert 网络。 **1. 一键安装:** ``` curl -sSL [https://raw.githubusercontent.com/butterclaw-tech/butterclaw/main/install.sh](https://raw.githubusercontent.com/butterclaw-tech/butterclaw/main/install.sh) | bash ``` **2. Docker Compose(推荐):** ButterClaw 的自动治愈架构允许它从完全空白的状态开始,构建其数据库,生成安全密钥,并连接其 alert 网络。假设本地的 ollama 正在使用本地模型运行。建议:执行 `ollama pull Modelfile.example`,您将获得 Gemma 4:e4b 开源模型的 'butterclaw-optimized:latest' 版本。 ``` git clone [https://github.com/butterclaw-tech/butterclaw.git](https://github.com/butterclaw-tech/butterclaw.git) cd butterclaw && git checkout dev # 1. 配置你的环境 cp .env.example .env # 编辑 .env — 设置 BUTTERCLAW_INSTANCE_ID, BUTTERCLAW_ALERT_NTFY_TOPIC 等 # 2. 生成本地 TLS 证书 (用于 Nginx) # 未安装 openssl 的 Windows 用户可以使用此临时容器 # 直接在项目文件夹中生成所需的密钥: mkdir -p nginx/certs docker run --rm -v "${PWD}/nginx/certs:/certs" alpine/openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /certs/butterclaw.key -out /certs/butterclaw.crt -subj "/CN=localhost" # 3. 点燃 Exoskeleton (构建并启动整个 stack) docker compose up -d --build # 4. 获取你的 Bootstrap Admin API Key! (查找 🔐 [AUTH] 行) docker compose logs -f butterclaw ``` **3. 启动 Matrix TUI:** 一旦容器运行起来,连接到实时终端仪表盘以实时观看 SOC: ``` ./dash ``` 一旦您从终端获取了您的 API key,就可以通过 **https://localhost** 访问安全路由的仪表盘,并在 **http://localhost:2586** 订阅您的 ntfy topic! ## 🎯 Live Fire 测试(Zero-Day Arsenal) ButterClaw 内置了安全的独立脚本,用于验证 Policy Engine 和 Zero-Day Arsenal 的完整性,而无需实时的 LLM 或外部 payload。 一旦您的部署运行起来,您就可以直接针对 Arsenal 模拟定向的 prompt injection 攻击: ``` # 1. 将测试签名注入 live database python scripts/add_rule.py # 2. 触发模拟的 payload 并观察 Arsenal 拦截它 python scripts/test_attack.py ``` ### systemd(裸机 VPS) ``` git clone [https://github.com/butterclaw-tech/butterclaw.git](https://github.com/butterclaw-tech/butterclaw.git) cd butterclaw && git checkout dev # 安装依赖 pip install -r requirements.txt # 安装 Ollama curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh ollama pull gemma4:e4b # 配置 cp .env.example /etc/butterclaw.env # 编辑 /etc/butterclaw.env # 安装 service sudo cp systemd/butterclaw.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now butterclaw # 验证 journalctl -u butterclaw -f curl http://localhost/api/health ``` ### 裸机(开发) ``` git clone [https://github.com/butterclaw-tech/butterclaw.git](https://github.com/butterclaw-tech/butterclaw.git) cd butterclaw && git checkout dev pip install -r requirements.txt ollama pull gemma4:e4b # ollama pull Modelfile.example <- 获取 'butterclaw-optimized:latest' 模型 cp .env.example .env python server.py ``` 首次运行时,bootstrap CLI 会将您的 admin API key 打印到终端上。请妥善保存 —— 它只会显示一次。 ## 📊 诊断测试 所有模块均包含独立的诊断套件: | 模块 | 命令 | 测试 | | --- | --- | --- | | `config.py` | `python config.py` | 21/21 | | `alert_dispatcher.py` | `python alert_dispatcher.py` | 14/14 | | `policy_engine.py` | `python policy_engine.py` | 16/16 | | `auth.py` | `python auth.py` | 10/10 | ## 📄 许可证 Apache 2.0 License。有关详细信息,请参见 [LICENSE](LICENSE)。

🦞 ButterClaw v0.6.5 —— The Exoskeleton (The Agentic SOC)
为概率性推理提供确定性 guardrails。先评估,后执行。
The Sentinel 永不沉默。我们注视着整个房间。
使用未经认证的遥测构建。是的,未经认证。🦞
butterclaw.tech · GitHub

标签:AI安全, AI风险缓解, Chat Copilot, DNS 反向解析, StruQ, 凭据管理, 提示注入防护, 智能体监控, 本地化推理, 自动化防御, 请求拦截, 逆向工具