因为个人精力有限,项目暂时搁置
Openclaw Guard(龙虾卫士)是一个面向 OpenClaw 的非侵入式安全增强客户端与本地控制面。
项目目标不是替换 OpenClaw,而是在不修改 OpenClaw 源码的前提下,为 OpenClaw 增加更清晰的安全交互、更可控的执行前审批、更完整的基线扫描与审计能力,并把这些能力集中到一个可直接使用的前端工作台中。
它适合以下场景:
- 高安全终端或内网环境中的 OpenClaw 部署
- 需要对危险动作做“先审批、再执行”的本地防护
- 需要对 OpenClaw 配置、运行状态、基线风险和审计日志进行集中管理
- 需要保留 OpenClaw 原有工程结构,不希望修改官方源码
- 非侵入式接入 OpenClaw
- 不修改 OpenClaw 源码
- 通过 OpenClaw 原生 Hook、Gateway 调用、本地插件桥与 Guard Web 前端完成联动
- 对话式工作台
- 从 Guard 前端直接与 OpenClaw 对话
- 支持模型切换、会话重置、状态检测、运行时调试
- 执行前风险控制
- 删除、写入、配置修改、危险命令、外联、渠道发送、技能执行等动作会先经过 Guard 决策
- 支持
allow / ask / block / escalate - 高风险动作需要明确确认后才继续执行
- 基线扫描与风险展示
- 扫描 OpenClaw 配置、运行用户、网络暴露、日志、依赖与 Hook 状态
- 输出 JSON / HTML / PDF 报告与整改脚本
- 前端提供动态扫描界面、检查项详情和整改建议
- 审计与导出
- SQLite + JSONL 双写审计
- 支持 JSON / CSV 导出
- 适配本地取证与后续集成
- 普通用户模式
- 提供
normal一键启动入口 - 默认打开更简洁的操作界面
- 提供
OpenclawGuard/
├── openclaw_guard/ # 核心后端代码
│ ├── baseline.py # 基线扫描与报告生成
│ ├── behavior.py # 行为事件采集与整理
│ ├── control.py # 审批与执行决策
│ ├── detection.py # 规则引擎与风险判定
│ ├── discovery.py # OpenClaw 环境发现
│ ├── hook_runtime.py # OpenClaw Hook 插件写入与检查
│ ├── manager.py # 统一编排层
│ ├── openclaw_adapter.py # OpenClaw Gateway / Session / Chat 适配
│ ├── ui.py # 前端静态资源生成
│ ├── web.py # 本地 HTTP 服务与 API
│ └── whitelist.py # 白名单匹配
├── docs/ # VuePress 文档站
├── pics/ # README / 文档截图
├── tests/ # 自动化测试
├── scripts/ # 安装与卸载脚本
├── docker/ # Docker 部署文件
└── k8s/ # Kubernetes / Sidecar 示例
Openclaw Guard 的核心链路可以概括为:
- Guard 自动发现本机 OpenClaw 配置、工作区、日志目录与 Gateway 状态
- Guard 将本地 Hook 插件写入 OpenClaw 配置,并通过 OpenClaw 官方插件机制接入
before_tool_call/after_tool_call - 用户从 Guard 前端发起对话或操作
- OpenClaw 在真正调用工具前,先把请求交给 Guard 判定
- Guard 根据规则、白名单、上下文与风险等级给出
allow / ask / block / escalate - 若需要审批,前端会展示待确认动作;用户明确确认后,OpenClaw 才会继续执行
- 执行结果、日志和审计记录会统一写回 Guard
- Python 3.13+
- Node.js 与 npm
- 已可正常运行的 OpenClaw
cd OpenclawGuard
bash scripts/install.sh
source .venv/bin/activatepython -m openclaw_guard.main normal该命令会:
- 自动发现 OpenClaw 配置
- 准备
runtime/、output/、exports/等目录 - 自动补齐一份基线扫描结果
- 启动本地 Web 服务
- 打开简洁模式界面
python -m openclaw_guard.main launchpython -m openclaw_guard.main normal --once --no-browserpython -m openclaw_guard.main normalpython -m openclaw_guard.main launch --no-browserpython -m openclaw_guard.main baseline --config-path ~/.openclaw/openclaw.jsonpython -m openclaw_guard.main export-auditpython -m openclaw_guard.main action --event-file examples/dangerous-delete.json当前前端已经支持以下主要功能:
- 聊天与会话管理
- OpenClaw 连接状态检测
- 当前模型与 Agent 状态展示
- 模型切换
- 新建会话
- 待确认动作审批
- 动作分页浏览
- 技能管理
- 渠道管理
- 运行时 Hook 状态检查
- 基线扫描与整改建议查看
- 审计导出
- 运行时调试信息与日志查看
目标是让普通用户尽量不需要直接去改配置文件、翻日志目录或手动调用命令行接口。
运行过程中,Guard 会生成以下内容:
output/reports/compliance-report.jsonoutput/reports/compliance-report.htmloutput/reports/compliance-report.pdfoutput/fixes/baseline-remediation.sh
output/audit/audit.dboutput/audit/audit.jsonlexports/audit-export.jsonexports/audit-export.csv
runtime/ui/runtime/guard.logruntime/controlled-actions.jsonruntime/latest-baseline.jsonruntime/openclaw-guard-plugin/
本项目附带完整 VuePress 文档站,位于 docs/。
本地预览:
cd docs
npm install
npm run docs:dev构建静态站点:
cd docs
npm run docs:build直接使用 Python 启动:
python -m openclaw_guard.main normal参考:
docker/Dockerfile
参考:
k8s/openclaw-guard-sidecar.yaml
Openclaw Guard 遵循“非侵入式”原则:
- 不修改 OpenClaw 源码
- 不替换系统库
- 不要求改动 OpenClaw 官方前端代码
它主要通过以下方式与 OpenClaw 交互:
- OpenClaw Gateway RPC
- OpenClaw
sessions.patch/chat.send/chat.history/agent.wait - OpenClaw 原生 Hook
- 本地运行时插件桥
如果 Guard 已写入 Hook 插件但仍未生效,通常需要按你的实际启动方式重启 OpenClaw Gateway。
例如:
cd /path/to/openclaw
npm run openclaw gateway运行完整测试:
python -m unittest discover -s tests -v不会。Openclaw Guard 设计上遵循非侵入式原则,不修改 OpenClaw 官方源码文件。当前集成方式主要依赖:
- Gateway RPC
- OpenClaw 原生 Hook
- 本地运行时插件桥
- Guard 自己的前端与本地 HTTP 服务
通常有以下几种原因:
- OpenClaw Gateway 尚未启动
- Gateway 已启动,但当前鉴权信息与 Guard 读取到的配置不一致
- Hook 插件已经写入配置,但当前运行中的 Gateway 进程还没有重启加载它
- 本机回环地址、局域网绑定方式或端口暴露状态与当前配置不一致
建议优先检查:
openclaw.json中的gateway配置- Guard 设置页中的运行时调试信息
runtime/guard.log
当前版本已经优先使用 OpenClaw 会话中的真实 session key 和 canonical model 标识来切模型,并在切换后回读会话模型确认结果。如果仍然不一致,通常说明:
- 当前运行中的 OpenClaw 会话不是 Guard 正在控制的那一个
- Gateway 返回的是旧会话状态
- 当前 provider 已限流或不可用,OpenClaw 在运行时做了降级或回退
当前重点覆盖这些动作:
- 删除文件
- 写入文件
- 修改配置
- 外联请求
- 渠道发送
- 技能执行
- OpenClaw 工具层 Hook 进入的高风险工具调用
其中高风险动作会先进入审批,不会直接继续执行。
推荐直接使用:
python -m openclaw_guard.main normal这个模式会自动准备运行目录、补一份基线扫描结果,并打开更简洁的前端界面。
当前版本已经能完成真实对话、模型切换、Hook 接入、动作审批、基线扫描与审计导出,但仍有这些边界:
ptrace/eBPF目前主要是能力探测与接口预留,主执行链依赖 OpenClaw 原生 Hook- 某些不走
before_tool_call的内部运行路径,仍需要继续补充覆盖 - 运行时链路依赖 OpenClaw Gateway 的实际可达性与鉴权配置
- 前端仍在持续优化中,当前版本已支持局部 patch、增量消息刷新和轻量状态轮询,但还会继续打磨
本项目采用 Apache-2.0 开源协议。


