____ ____ ____ _
/ __ \ ___ / __/___ ___ ___ ___ / ___|| | __ _ __ __
/ / / / / _ \/ /_// _ \ / _ \ / __|/ _ \| | | |/ _` |\ \ /\ / /
/ /_/ / / __/ __// __/| | | |\__ \ __/| |___ | | (_| | \ V V /
/_____/ \___/_/ \___/ |_| |_||___/\___| \____||_|\__,_| \_/\_/
OpenClaw 与智能体 AI 运行时的安全治理。
在使用前扫描能力,检查运行时流量,并导出持久的审计证据。
| 治理 | 检查 | 探测 |
|---|---|---|
| 技能、MCP 服务器、插件和生成的代码在运行前 | 提示词、补全、工具调用以及运行时沙箱活动 | SQLite 审计历史、JSONL、OTLP、Splunk、webhook 和 TUI 视图 |
DefenseClaw 结合了 Python 操作员 CLI、Go 网关 sidecar 和 OpenClaw TypeScript 插件。它们共同执行一条简单的操作规则:不受信任的智能体能力会被扫描、治理、记录,并在策略认为不安全时被阻止。
DefenseClaw 是智能体 AI 部署的强制执行和证据层。它通过结合扫描器结果、运行时检查、策略决策、沙箱控制和审计跟踪来提高安全性,但并不能证明智能体、技能、插件或模型交互是无风险的。
高风险部署应将 DefenseClaw 与人工审查、最小权限凭证、沙箱化、CI 门禁和生成环境监控结合使用。在观察模式下,发现的结果会被记录而不阻止。在行动模式下,配置为 HIGH 和 CRITICAL 的发现可以阻止提示词、工具调用或组件准入。
项目 Markdown 文档集中在 docs/ 下。包本地 README 会保留在需要本地上下文的包或示例旁边。
| 要求 | 版本 |
|---|---|
| Python | 3.10-3.13 |
| Go | 1.26.4+ |
| Node.js | 18+(用于 OpenClaw 插件) |
| uv | 推荐用于 Python 安装 |
| Docker |
根据意图选择命令:
源目标和`scripts/install-dev.sh`是开发工具,而不是升级路径。直接安装目标拒绝覆盖由发布版管理的安装或由其他检出拥有的安装。`make all`是明确的开发者机器重装工作流:当已安装的CLI正好指向当前检出时,它可能会回收无标记或先前发布版本的源状态,并在重建后记录严格的所有权标记。这可以对开发者状态运行当前检出的迁移,绝不能用作发布升级。发布版管理的安装必须使用发布版拥有的`scripts/upgrade.sh`或`scripts/upgrade.ps1`解析器。`make install`、`make dev-install`和`scripts/install-dev.sh`是用于全新或隔离开发环境的下层严格管道;它们不是正常的重复开发命令。
### 通过发布脚本安装```bash
VERSION=0.8.6
INSTALL_URL="https://raw.githubusercontent.com/cisco-ai-defense/defenseclaw/${VERSION}/scripts/install.sh"
curl -LsSf "$INSTALL_URL" | VERSION="$VERSION" bash
defenseclaw init --enable-guardrail
有关平台特定步骤,请参阅 docs/INSTALL.md。
在原生 Windows x64 上,使用原生 Setup EXE 和 hook-only connector 路径(位于 原生 Windows 指南 中)。不支持 WSL。Codex CLI 和 Claude Code 是唯一经过认证的 Windows 连接器。
defenseclaw doctor
defenseclaw init --enable-guardrail
defenseclaw skill scan all defenseclaw mcp list defenseclaw plugin scan extensions/defenseclaw
defenseclaw-gateway start
defenseclaw tui
在调优时以观察模式运行 guardrail:```bash
defenseclaw setup guardrail --mode observe --restart
当策略准备就绪时切换到操作模式:```bash defenseclaw setup guardrail --mode action --restart
请参阅 [docs/QUICKSTART.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/QUICKSTART.md) 获取完整教程。
---
## 架构
| 组件 | 运行环境 | 角色 |
|-----------|---------|------|
| Python CLI | Python | 操作命令、扫描器编排、配置设置、本地包 |
| 网关边车 | Go | REST API、WebSocket 桥接、策略引擎、护栏代理、审计存储、遥测 |
| OpenClaw 插件 | TypeScript | 请求拦截、工具调用检查钩子、斜杠命令、边车集成 |
| 策略 | YAML/Rego | 准入决策、护栏动作、沙箱/防火墙行为、扫描器配置文件 |
| 文档 | Markdown/JSON | 集中文档、包本地 README 以及 DeepWiki 配置 |
网关为 CLI 和插件暴露本地 REST API,通过 WebSocket 连接到 OpenClaw,通过本地代理检查 LLM 流量,并在持久化审计存储中记录决策。```text
Agent runtime -> OpenClaw plugin -> DefenseClaw gateway -> policy + scanners + audit
|
+-> guardrail proxy -> LLM provider
+-> OTLP / Splunk / webhooks / JSONL
对于图表和详细流程,请阅读 docs/ARCHITECTURE.md。
DefenseClaw 将 Cisco AI Defense 扫描器和本地策略封装为一个统一的准入流程:
扫描策略位于 policies/scanners/。护栏规则包位于 policies/guardrail/。
DefenseClaw 通过多种渠道记录强制措施和运行时证据:
配置 v8 在保持源配置简洁的同时,将遗漏项编译为完整有效的计划:```yaml config_version: 8 observability: {}
该默认设置会收集所有已注册的日志、追踪和指标,并在本地 SQLite 中保留每一条未经脱敏的日志。在添加目标之前,不会执行任何远程导出。已启用的目标若未设置 `send` 或 `routes`,则接收其支持的每种类型的全部桶和全部信号(未脱敏):通用 OTLP 接收日志/追踪/指标,Splunk HEC 接收日志,Prometheus 接收指标,Galileo 预设接收追踪。多个目标将收到独立的副本。
使用以下命令查看展开的策略及未脱敏的支路:```bash
defenseclaw config show --effective --section observability
defenseclaw observability plan
使用集中式的 none、sensitive、content、strict 或自定义的字段感知脱敏配置文件,按桶或目标分别设置。完整保真默认值可能包含提示、输出、工具参数/结果、证据、路径和标识符,因此在跨信任边界导出时(该边界不得接收这些内容)请先配置脱敏配置文件。
在源文件中编辑桶和脱敏策略,在网关接收之前进行验证,并检查编译后的结果,而不是直接复制生成的参考配置:```bash
umask 077
cp "$HOME/.defenseclaw/config.yaml"
"$HOME/.defenseclaw/config.yaml.before-observability-edit"
${EDITOR:-vi} "$HOME/.defenseclaw/config.yaml"
defenseclaw config validate &&
defenseclaw config show --effective --section observability &&
defenseclaw observability plan &&
defenseclaw-gateway restart &&
defenseclaw doctor
不要在一次验证失败后重新启动。恢复私有备份,纠正源文件并重新验证。全局或存储桶隐去配置也适用于生成的本地SQLite投影。要在保留完整本地历史的同时仅隐去远程信任边界,请将全局/存储桶配置设置为`none`,并在该远程目标上设置`send.redaction_profile`或路由配置。
开始本地可观测性,使用:```bash
defenseclaw setup local-observability up
defenseclaw-gateway start
defenseclaw setup local-observability status
仪表盘的空状态并非单一含义:0 表示被检测信号有零个匹配事件,无数据 表示在所选范围和过滤条件下不存在匹配的序列/日志/痕迹,而 未报告 表示连接器/提供者未提供可选值(如令牌或成本)。条件面板(如 HITL、仅失败视图以及在选择 Trace ID 之前的痕迹瀑布图)预期显示 无数据。目标测试仅检查连接性,不生成常规仪表盘流量;请生成新的真实代理轮次、工具调用、扫描或审批来验证相应面板。
Agent360 的节点图是一个基于 Loki 的生命周期 DAG:会话创建是一个独立的锚点,每个根节点的 Prompt inputs 节点统计范围内不同的深度零 model.request 事实数量,而父到子的委托为每个代理提供模型、工具、审批、更新、轮次结果和终端摘要。Prompt inputs 按轮次、模型请求、请求、操作、再按发生 ID 去重;有序/原始视图保留各个初始和后续记录。会话和生成锚点可从过去 24 小时内恢复,以便边界窗口可渲染;仅当该子节点在所选范围内有符合图条件的活动时,恢复的生成节点才保留。
重复的模型调用按所属代理、提供者和模型分组。重复的工具调用按所属代理分组到 Bash、MCP、技能、协作、文件编辑、Web/浏览器、视觉或任务控制中;无法识别的工具保留其报告的名称。确切的 collaboration.send_message 请求从通用协作家族中排除,因此它们仅作为消息组出现;其他协作工具仍保留在该家族中。请求记录即使没有对应的终端记录也会包含在内。它们的分组总数是请求计数,并不表示每个请求仍处于待处理状态;终端状态在链接的原始记录中仍然可用。深度 0 是根节点,递归子节点可报告到深度 64;点击详情可识别每条血缘边是由连接器报告还是由 DefenseClaw 推断。节点点击暴露精确计数和稳定的代理/根/父标识,并提供过滤后的链接,指向每个组背后的原始 OTEL 事件。可选的当前/根/父会话字段保留在生命周期、会话、有序和原始层面;它们不是代理节点分组键,因此缺失或延迟的会话元数据不会分割单个代理的总数。
仪表盘不会再次编辑、屏蔽或隐藏字段。DefenseClaw 在规范 OTEL 导出之前应用集中的 v8 编辑;Grafana 显示或链接该投影中实际存在的每个字段,包括生产者导出时的内容。导出前被移除或转换的字段无法被本地栈恢复。更新边仅来自实际的 collaboration.send_message 工具记录。对于每个发送者,/root 和 /root/* 目标合并为一个 Messages to root 节点,其目标代理 ID 解析为导出的根。确切的根任务路径和调用保留在有序/原始下钻中。非根目标始终按确切的任务路径显式分组,当连接器未报告该映射时,不会将其虚构为不透明的代理 ID 连接。通用兼容性事件永远不会被重新标记为更新。
可选目标拥有独立的有限队列。默认每队列为 2,048 条记录和 64 MiB;推送批次默认为 512 条记录、8 MiB 和 5 秒(省略 Galileo 预设延迟时为 1 秒)。队列溢出会丢弃最新尝试的入队,而不会逐出较旧的 FIFO 工作或影响强制性的 SQLite 和同级目标。确切字段、界限和适配器差异详见 docs/OBSERVABILITY.md。
添加 Galileo Cloud 或自托管 Galileo,无需替换本地路由:```bash export GALILEO_API_KEY='...' defenseclaw setup galileo --project defenseclaw --logstream production defenseclaw setup galileo test
请参见 [docs/OBSERVABILITY.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/OBSERVABILITY.md)、[Galileo 指南](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs-site/content/docs/observability/galileo.mdx) 和 [schema 所有权映射](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/schemas/README.md)。Splunk 特定的设置位于 [docs/SPLUNK_APP.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/SPLUNK_APP.md)。
每个受支持的现有 POSIX 安装,包括已经运行在 `0.8.4` 上的安装,都会以最新模式通过经过身份验证的目标版本 `defenseclaw-upgrade.sh` 资产跨越 `0.8.5` 硬切割,无需版本覆盖。不可变的 `0.8.4` 内置解析器无法接受其 Windows 桥接矩阵为空的那个真实目标清单。请勿执行由冻结的内置 CLI 印出的任何过时的原始网络提示。由版本拥有的解析器将 `source → 0.8.4 bridge → fresh 0.8.4 controller → 0.8.5 hard cut` 作为一个事务执行。该迁移会备份并原子化地转换配置,保留更窄的路由/编辑行为以及 root/subagent Agent360 兼容性,刷新拥有的本地仪表板而不重置卷,并且永远不需要单独的 apply 命令。请参见 [CLI 参考 — upgrade](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/CLI.md#upgrade) 了解经过身份验证的解析器引导程序。
对于 Splunk Observability Cloud,请使用位于 [bundles/splunk_o11y_dashboards/README.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/bundles/splunk_o11y_dashboards/README.md) 的仪表板包:```bash
defenseclaw setup splunk dashboards apply \
--api-url <api-endpoint> \
--o11y-api-token <api-access-token> \
--with-detectors \
--enable-detectors \
--yes
make build
make test
make lint
专注的测试和开发指南位于 [docs/TESTING.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/TESTING.md) 和 [docs/CONTRIBUTING.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/CONTRIBUTING.md) 中。
---
## 贡献
欢迎贡献。从 [CONTRIBUTING.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/CONTRIBUTING.md)、[docs/CONTRIBUTING.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/docs/CONTRIBUTING.md) 以及您要修改领域的专注文档开始。
## 安全
请通过 [SECURITY.md](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/SECURITY.md) 中描述的流程报告漏洞。
## 许可证
Apache 2.0 - 见 [LICENSE](https://github.com/cisco-ai-defense/defenseclaw/blob/HEAD/LICENSE)。
版权 2026 Cisco Systems, Inc. 及其附属公司。
| 指南 | 描述 |
|---|
| 快速入门 | 首次成功的本地设置和扫描流程 |
| 安装 | Windows、macOS、Linux、DGX Spark、源码构建和发布版安装 |
| 原生 Windows | x64 设置生命周期、可选的 Authenticode 状态、连接器、命令、安全性和故障排除 |
| CLI 参考 | Python CLI 命令和操作员工作流 |
| API 参考 | 网关 REST API 和 sidecar 端点 |
| 架构 | 组件模型、数据流和职责 |
| 护栏 | LLM 和工具检查架构 |
| 护栏规则包 | 规则包、抑制和调优 |
| 沙箱 | OpenShell 沙箱设置、架构、监控和调试 |
| 可观测性 | V8 桶、本地历史记录、编辑、目标分发、OTLP、Splunk 和 Grafana |
| Splunk 应用 | 本地 Splunk 应用仪表盘和调查流程 |
| Splunk O11y 仪表盘 | Splunk Observability Cloud 仪表盘和用于原生 OTel 指标的检测器 |
| TUI | 终端仪表盘面板和导航 |
| 配置文件 | 配置位置、环境变量和策略文件 |
| 注册表 | 外部技能/MCP 目录摄取(clawhub、smithery、skills.sh、http、git、file) |
| 插件开发 | 自定义扫描器插件工作流和示例 |
| 测试 | Python、Go、TypeScript、Rego、文档和 CI 检查 |
| 开发者规范 | 历史产品/开发者规范 |
| 网关规范 | 内部网关包规范 |
| 可选,用于本地可观测性和 Splunk 包 |
| 目标 | 命令 | 是否改变安装状态? |
|---|
| 从此代码库进行常规开发 | make all | 是;重新构建并激活此确切代码库 |
| 仅编译/测试工件 | make build | 否 |
| 查看支持的开发者路径 | make help | 否 |
| 升级打包发布的版本 | defenseclaw upgrade | 是;使用签名发布解析器 |
| git clone https://github.com/cisco-ai-defense/defenseclaw.git | ||
| cd defenseclaw | ||
| make all |
| 层面 | 扫描器或控制 |
|---|
| 技能 | cisco-ai-skill-scanner, CodeGuard, 策略动作 |
| MCP 服务器 | cisco-ai-mcp-scanner, 阻止/允许策略 |
| 插件 | DefenseClaw 插件扫描器, 安装源检查, 可选的 LLM 分析 |
| 源代码 | CodeGuard 通过 CLI、sidecar API 以及插件写入/编辑钩子 |
| 提示与补全 | 安全护栏代理,包含规则包、抑制规则、可选的 LLM 裁判、Cisco 检查 |
| 工具调用 | 工具参数检查、敏感路径检查、命令风险检查、策略判定 |
| 渠道 | 用途 |
|---|
| SQLite 审计存储 | 本地持久化事件历史 |
| 可选的 JSONL | 当配置了文件目标时的关联结构化运行时事件 |
| OTLP | 带有原生扇出的命名独立指标/日志/跟踪目标 |
| Splunk HEC | SIEM 转发和本地 Splunk 应用工作流 |
| Splunk O11y 仪表盘 | 用于 DefenseClaw 指标的原生 Splunk Observability Cloud 仪表盘和检测器 |
| Webhooks | Slack、PagerDuty、Webex 和通用事件通知 |
| TUI | 面向操作员的告警、健康、扫描、工具、策略和设置 |