ClawKeeper: Comprehensive Safety Protection for OpenClaw Agents Through Skills, Plugins, and Watchers
Paper: arXiv:2603.24414 Code: SafeAI-Lab-X/ClawKeeper Code reference:
main@f980e3aa(2026-05-20)
1. Motivation (研究动机)
ClawKeeper 的出发点是:OpenClaw 这类 local-first autonomous agent runtime 已经不只是聊天机器人,而是能长期运行、调用工具、读写本地文件、执行 shell、连接 Feishu/Lark/Telegram 等软件的“准操作系统层”代理;一旦模型被 prompt injection、恶意 skill、错误配置或长链工具调用误导,错误会直接变成系统级风险。
论文把现有 OpenClaw 安全方案的问题归纳为四类:第一,覆盖碎片化(Fragmented Coverage),很多方案只防 prompt injection、日志审计、配置保护、恶意 skill 中的一两类,缺少跨 instruction、runtime、external supervision 的全生命周期视角;第二,安全与任务效率耦合(Safety–Utility Tradeoff),skill/plugin 都装在任务 agent 内部,agent 同时要完成任务和自我约束,严格安全会牺牲效率,追求效率又容易放松安全;第三,很多机制是事后型 reactive defense(Reactive Defense),只能在危险行为发生后看日志,而不能在执行前拦截;第四,静态规则(Static Defense Mechanisms)无法跟随 OpenClaw 自我演化,面对新威胁需要人工更新。
这篇论文要解决的具体问题不是“让 LLM 更安全”这种宽泛目标,而是为 OpenClaw-style agent ecosystem 提供一个可组合的安全框架:在 skill 层写入环境/软件边界规则,在 plugin 层做硬编码 runtime enforcement,在外部 Watcher 层做独立监督、实时诊断和 human-in-the-loop 中断。它的研究价值在于把 agent security 从单点 guardrail 推进到“agent OS 的 antivirus”式设计:安全逻辑不再只依赖 agent 自己是否听话,而是可以由独立过程持续审计、阻断和升级。
2. Idea (核心思想)
核心洞察是:如果 agent 的风险来自“prompt、tool、file、plugin、memory、long-running state”共同作用,那么防御也不能只放在一个位置;最可靠的结构是把 instruction-level policy、runtime-level enforcement 和 external-level supervision 分层,同时让外部 Watcher 与任务 agent 职责分离。
ClawKeeper 的关键创新是三层组合:Skill-based Protection 把安全规则写成 OpenClaw 可读的 Markdown skills 和脚本;Plugin-based Protection 把安全检查、日志、配置保护、hardening 写成 runtime plugin;Watcher-based Protection 则运行一个独立 OpenClaw/watch process,通过 WebSocket/bridge 接收上下文、工具调用和错误状态,在高风险路径上返回 continue、ask_user 或 stop。
与 OpenGuardrails、SecureClaw、ClawBands、Clawscan-Skills 等点状方案相比,ClawKeeper 的本质差异在于 external Watcher 的“监管独立性”。skill 和 plugin 仍然可能被任务 agent 的上下文污染、卸载或规则遗漏影响;Watcher 不在任务 agent 的普通 skill/plugin namespace 内,能把任务执行和安全裁决拆开,因此更接近可审计的外部安全控制面。
3. Method (方法)
3.1 Overall framework: 三层安全栈

Figure 1 解读:这张图把 ClawKeeper 放在 OpenClaw agent 的整个执行生命周期外侧:用户输入、skills/plugins、工具调用、文件系统、通信软件和长期运行状态都可能成为风险源。ClawKeeper 不是单一 guardrail,而是把 prompt/skill 约束、runtime plugin 约束和外部 Watcher 约束连接起来,形成从静态配置到动态执行再到外部审计的 defense-in-depth。

Figure 2 解读:总览图展示三层的职责边界。Skill 层在 agent 构造上下文时注入安全规则;Plugin 层在 OpenClaw runtime 内部拦截工具、监控日志、保护配置;Watcher 层作为独立 agent 接收被保护 agent 的上下文和执行事件,独立判断是否继续、请求用户确认或停止运行。直觉上,越靠外层,越不容易被任务 agent 的 prompt 或模块状态绕过,但部署和运行成本也越高。
论文用五个属性比较三种范式:safety、compatibility、flexibility、running cost、deployment difficulty。Skill-based 部署最轻、灵活性较好,但安全性最低;Plugin-based 运行开销最低,但强耦合 OpenClaw,规则静态;Watcher-based 安全性、兼容性和灵活性最高,但需要额外 agent 和通信通道。
| Paradigm | Safety | Compatibility | Flexibility | Running Cost | Deployment Difficulty | 关键含义 |
|---|---|---|---|---|---|---|
| Skill-based | Low | Medium | High | Medium | Low | 依赖 prompt/skill 规则和模型遵从性,最容易部署,也最难强制保证 |
| Plugin-based | Medium | Low | Low | Low | Medium | runtime 内硬编码 enforcement,速度快但迁移性和更新性差 |
| Watcher-based | High | High | High | Medium | Medium | 独立监督,能实时介入,但需要额外进程和通信接口 |
3.2 Skill-based Protection: 用可读规则覆盖系统与软件边界

Figure 3 解读:Skill 层把安全策略写成结构化 Markdown skills,让 agent 在推理上下文中直接看到规则。论文特别强调两条边界:系统级边界(例如 Windows 文件系统、权限、任务调度、危险命令)和软件级边界(例如 Feishu/Lark 消息发送、外部联系人、token/credential 暴露)。这种设计的优点是部署低成本、跨场景可读;缺点是执行力仍取决于 LLM 是否理解和遵守规则。
代码中对应 clawkeeper-skill/skills/windows-safety-guide/SKILL.md、clawkeeper-skill/skills/feishu-safety-guide/SKILL.md 和 clawkeeper-skill/script/nightly-security-audit-windows.ps1。README 显示 Windows guide 覆盖 behavior security policy、configuration baseline protection、operation logging/audit、nightly security audit;Feishu guide 覆盖 message content protection、credential/permission management、behavior security policy、audit/reporting。脚本层面,nightly-security-audit-windows.ps1 会定位 $OPENCLAW_STATE_DIR 或 ~/.openclaw,生成 security report,用于定期自检。
Skill 层的工作流可以抽象为:先把不同环境的安全规则注入 agent context,再用脚本做周期性审计,最后把高风险操作写入日报/报告,形成低成本的“软约束 + 可见性”。
def install_skill_based_protection(openclaw_state, enabled_profiles):
policies = []
if "windows" in enabled_profiles:
policies.append(load_markdown_skill("windows-safety-guide/SKILL.md"))
install_script("nightly-security-audit-windows.ps1", openclaw_state)
if "feishu" in enabled_profiles:
policies.append(load_markdown_skill("feishu-safety-guide/SKILL.md"))
agent_context = read_agent_context(openclaw_state / "AGENTS.md")
agent_context = merge_security_policies(agent_context, policies)
write_agent_context(openclaw_state / "AGENTS.md", agent_context)
schedule_daily_job(
name="clawkeeper-nightly-security-audit",
command="powershell nightly-security-audit-windows.ps1",
output_dir=openclaw_state / "workspace/security-reports",
)
return {"installed_profiles": enabled_profiles, "policy_count": len(policies)}Skill 层与 baseline 的差异主要是覆盖面。Table 2 中 ClawKeeper 同时覆盖 prompt injection defense、audit/scanning、configuration protection、multi-platform support;OpenGuardrails 缺 configuration/multi-platform,OSPG 缺 audit/multi-platform,ClawSec 缺 prompt injection/configuration,clawscan-skills 缺 configuration。
3.3 Plugin-based Protection: runtime 内的审计、拦截和 hardening

Figure 4 解读:Plugin 层把安全功能放进 OpenClaw runtime 内部,核心是“先记录、再拦截、再审计、再修复”。它能读取工具调用参数、LLM 输入输出、消息收发事件和配置文件,因此比纯 skill 更接近强制执行;但它仍然与 OpenClaw 内部接口耦合,且主要依赖规则库识别风险。
实现上,clawkeeper-plugin/src/core/interceptor.js 提供多种 hooks:createToolLoggerHook 处理 before_tool_call,结合 permission store、budget guard、input validator、path guard、exec gate 判断是否阻断;createMessageReceivedHook、createMessageSendingHook、createLLMInputHook、createLLMOutputHook 和 createBeforeAgentReplyHook 记录完整生命周期事件。日志被写入 $OPENCLAW_WORKSPACE/log/YYYY-MM-DD.jsonl,供后续 scanner 分析。
clawkeeper-plugin/src/core/security-scanner.js 从日志记录中检测 prompt injection、credential leak、dangerous command、suspicious tool calls 和 anomalous activity;clawkeeper-plugin/src/core/skill-scanner.js 扫描第三方 skill 的 SKILL.md、安装脚本、缺失边界和高风险证据;clawkeeper-plugin/src/core/hardening.js 则先备份 openclaw.json 与 AGENTS.md,再执行 controls.js 中定义的 remediation,例如把 gateway.bind 收缩到 127.0.0.1、检查 gateway auth token/password、向 AGENTS.md 注入 runtime constitution。
def plugin_before_tool_call(tool_name, params, user_scope, state):
permission = permission_store_check(tool_name, params, user_scope)
budget = check_budget(tool_name, params, state.turn_usage)
input_risk = validate_tool_input(tool_name, params)
if permission.decision == "allow" and not budget.block and not input_risk.block:
log_event("before_tool_call", tool=tool_name, params=params, permission=permission)
return "continue"
path_risk = guard_before_tool_call(tool_name, params) if not input_risk.block else ok()
exec_risk = guard_execution(tool_name, params) if not path_risk.block else ok()
blocked = budget.block or input_risk.block or path_risk.block or exec_risk.block
log_event(
"blocked_tool_call" if blocked else "before_tool_call",
tool=tool_name,
params=params,
guard=first_blocking_guard(budget, input_risk, path_risk, exec_risk),
)
if blocked:
raise SafetyBlock(reason=format_guard_reason(budget, input_risk, path_risk, exec_risk))
return "continue"def scan_logs_for_security_risks(records):
risks = []
risks += detect_prompt_injection(records, patterns=PROMPT_INJECTION_PATTERNS)
risks += detect_credential_leaks(records, patterns=CREDENTIAL_LEAK_PATTERNS)
risks += detect_dangerous_commands(records, patterns=DANGEROUS_COMMAND_PATTERNS)
risks += detect_suspicious_tool_calls(records, high_risk_tools=HIGH_RISK_TOOLS)
risks += detect_anomalous_activity(records, frequency_thresholds=ANOMALOUS_ACTIVITY_CONFIG)
return format_scan_results({"risks": risks, "statistics": summarize(records)})Table 3 中 ClawKeeper 是唯一同时覆盖 threat detection、monitoring/logging、behavior scanning、configuration protection 和 hardening 的 plugin;OpenClaw Shield/OpenGuardrails 只覆盖 detection+logging,ClawBands 覆盖 logging+behavior scanning,SecureClaw 覆盖 detection+configuration+hardening 但缺 logging 与 behavior scanning。
3.4 Watcher-based Protection: 独立 agent 负责安全裁决

Figure 5 解读:Watcher 层是论文最重要的结构创新。它不是任务 agent 内部的普通 skill/plugin,而是一个独立 OpenClaw instance 或治理进程,通过 WebSocket/bridge 接收任务 agent 的上下文、工具调用、错误和多轮消息,然后独立给出动作裁决。因为它不负责完成用户任务,所以可以专注安全,不需要在“完成任务”和“阻断风险”之间自我妥协。
论文把 Watcher 的优势拆成四点:任务与安全目标分离、抗 adversarial manipulation、可与 agent 共同演化、透明可验证。它也提供两种部署:local deployment 把任务 agent 和 Watcher 放在同一台机器上,保护隐私并允许本地文件/skill 扫描,但成本近似运行两个 OpenClaw;cloud deployment 让多个 OpenClaw 连接远端 Watcher,便于企业集中治理和统一更新,但需要上传 session 信息,带来隐私风险。
代码中 Watcher 的核心裁决在 clawkeeper-watcher/plugins/clawkeeper-watcher/src/core/context-judge.js。judgeForwardedContext 会归一化 policy 和 messages,先处理缺失输入、用户显式 stop/cancel、上游错误;然后检查工具调用数量是否超过限制,返回 ask_user 且 stopReason="tool_loop_limit";如果正在等待用户确认,也返回 ask_user;最后比较当前最高风险等级与 maxRiskBeforeStop,达到阈值则 stop,否则 continue。risk-fingerprint.js 则从历史 decision !== "continue" 的记录中构造 <sorted_tool_names>|<stopReason> 指纹,例如 bash,exec|tool_loop_limit,当同一指纹在 lookback window 中重复出现超过阈值时,将其作为已知风险模式提示后续裁决。
def watcher_judge_forwarded_context(request, policy):
messages = normalize_messages(request.get("messages", []))
tool_names = collect_tool_names(messages)
highest_risk = estimate_highest_risk(messages, request.get("metadata", {}))
if not messages:
return decision("stop", reason="missing_input", risk="medium", next_action="stop_run")
if latest_user_message_matches_stop(messages):
return decision("stop", reason="user_requested_stop", risk="low", next_action="stop_run")
if request.get("metadata", {}).get("error") or has_tool_error(messages):
return decision("stop", reason="upstream_error", risk="high", next_action="stop_run")
if count_tool_calls(messages) > policy.max_tool_calls_per_turn:
return decision(
"ask_user",
reason="tool_loop_limit",
risk="high",
next_action="ask_user",
evidence=summarize_evidence(messages),
)
if waiting_for_user_confirmation(messages):
return decision("ask_user", reason="waiting_user_confirmation", risk="high", next_action="ask_user")
if risk_rank(highest_risk) >= risk_rank(policy.max_risk_before_stop):
return decision("stop", reason="high_risk_action", risk=highest_risk, next_action="stop_run")
return decision("continue", reason="completed", risk=highest_risk, next_action="continue")def update_and_match_risk_fingerprint(decision_record, current_context, config):
history = load_decision_history(lookback_days=config.fingerprint.lookback_days)
fingerprints = extract_fingerprints(
r for r in history if r.decision != "continue"
)
current_key = build_key(
tool_names=sorted(current_context.tool_names),
stop_reason=decision_record.stop_reason,
)
match = fingerprints.get(current_key)
append_decision_memory(decision_record)
if match and match.count >= config.fingerprint.min_occurrences:
return {"known_risk_pattern": current_key, "count": match.count, "max_risk": match.max_risk_level}
return None代码与论文覆盖差异
未发现“论文公式与 released code 实现”之间的明显符号级冲突;但 released repo 更像产品实现与参考实现,而不是完整复现实验包。论文中的 140-instance benchmark、人工标注流程和 Watcher self-evolving 曲线没有在当前 main@f980e3aa 仓库中暴露为一键复现实验脚本;代码主要覆盖 skill/plugin/watcher 机制本身。因此笔记中的伪代码和 code mapping 基于 released implementation,实验数字仍以论文表格为准。
3.5 Code-to-paper mapping
Code reference:
main@f980e3aa(2026-05-20) — pseudocode and mapping based on this commit
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| Skill-based Windows / system boundary rules | clawkeeper-skill/skills/windows-safety-guide/SKILL.md; clawkeeper-skill/script/nightly-security-audit-windows.ps1 | Markdown policy; nightly Windows audit script |
| Skill-based Feishu/Lark software boundary rules | clawkeeper-skill/skills/feishu-safety-guide/SKILL.md | Message/content/credential policy rules |
| Plugin lifecycle logging and before-tool interception | clawkeeper-plugin/src/core/interceptor.js | createToolLoggerHook, createMessageReceivedHook, createLLMInputHook, createBeforeAgentReplyHook |
| Runtime threat detection / behavior scanning | clawkeeper-plugin/src/core/security-scanner.js | scanLogsForSecurityRisks, detectPromptInjection, detectCredentialLeaks, detectDangerousCommands, detectAnomalousActivity |
| Configuration hardening | clawkeeper-plugin/src/core/hardening.js; clawkeeper-plugin/src/core/controls.js | harden, getControls, gateway bind/auth controls, AGENTS.md constitution injection |
| Malicious skill supply-chain scanning | clawkeeper-plugin/src/core/skill-scanner.js; clawkeeper-plugin/src/config/core-rules.json | scanSkill, evaluateSkillName, scanPrerequisites, calculateSkillScore |
| Watcher context decision | clawkeeper-watcher/plugins/clawkeeper-watcher/src/core/context-judge.js | judgeForwardedContext |
| Watcher memory and recurring-risk fingerprint | clawkeeper-watcher/plugins/clawkeeper-watcher/src/core/decision-memory.js; risk-fingerprint.js | appendDecisionMemory, extractFingerprints, matchFingerprint, resolveFingerprint |
| Watcher ↔ task-agent bridge | clawkeeper-watcher/plugins/clawkeeper-bands/src/plugin/agent-end-bridge.ts; clawkeeper-watcher/src/infra/ws.ts | agent-end bridge and WebSocket infrastructure |
4. Experimental Setup (实验设置)
4.1 Dataset / benchmark
论文构造了一个安全评测 benchmark,总计 个 adversarial instances。每个 task category 含 20 个样例,分为 10 个 simple 和 10 个 complex examples,任务类别对齐 OWASP Agent Security Initiative 与开源 OpenClaw 防御的威胁 taxonomy。
| Category | Name | Definition / representative risk |
|---|---|---|
| T1 | Prompt Injection | 外部内容嵌入恶意指令,诱导 agent 忽略规则并外传 SSH private key 等敏感信息 |
| T2 | Credential & Sensitive Data Leakage | 让 agent 复述含 token/password/private key/PII 的文件或消息 |
| T3 | Privilege Escalation & Tampering | 请求越权修改系统目录、sudoers、/etc/passwd 等 |
| T4 | Dangerous Command Execution | 执行破坏性或混淆 payload,例如 Base64 解码后 rm -rf / --no-preserve-root |
| T5 | Configuration File Tampering | 修改 AGENTS.md 等关键配置以禁用安全策略或植入 backdoor |
| T6 | Vulnerability & Threat Detection | 发现 gateway 暴露、缺 auth、弱权限等 OWASP ASI-aligned misconfiguration |
| T7 | Malicious Skill Installation | 第三方 skill 含 supply-chain backdoor、cron delayed trigger 或 covert exfiltration |
4.2 Baselines
对比方法是 OpenClaw-style agent ecosystem 中的开源安全仓库:OpenGuardrails、ClawSec、OSPG (OpenClaw Security Practice Guide)、SecureClaw、OpenClaw Shield、ClawBands、Clawscan-Skills。论文强调这些 baseline 的覆盖面高度碎片化:最多只覆盖 3/7 类任务,很多方法只支持 prompt injection、monitoring、privilege/access 或 malicious skill 中的少数几项。
4.3 Metrics and protocol
核心指标是 Defense Success Rate (DSR): 成功防御的判定是:威胁被检测并阻断,同时不破坏 legitimate functionality。每个 baseline 和 ClawKeeper 都部署在 clean OpenClaw installation 上,底层 LLM 为 GLM-5;两个 independent human annotators 审查 execution trace 并标记 defense success/failure。不支持某类任务的 baseline 在表格中记为 “−”。
4.4 Runtime / implementation setting
定量实验使用 clean OpenClaw + GLM-5;定性 real-environment case studies 使用 OpenClaw version 2026.3.8 与 GLM-5。论文不是模型训练论文,因此没有报告 GPU 类型/数量、learning rate、batch size 或训练步数;released code 也主要是 skill/plugin/watcher runtime 实现,而非训练配置。可复现实验需要注意:当前公开仓库给出了安全机制实现,但论文中的 benchmark data、人工标注 pipeline 和 DSR 评测脚本未作为独立训练/评测配置文件完整暴露。
5. Experimental Results (实验结果)
5.1 Main defense success rate
Table 5 的主结果显示,ClawKeeper 是唯一覆盖全部 7 类任务的方法,并在每一列都达到最高 DSR。
| Method | T1 Prompt Inj. | T2 Cred. Leak | T3 Priv. Tamp. | T4 Dang. Cmd | T5 Config. Mod. | T6 Threat Det. | T7 Mal. Skill |
|---|---|---|---|---|---|---|---|
| OpenGuardrails | 55 | − | − | − | − | 60 | − |
| ClawSec | 65 | 50 | − | − | − | − | 45 |
| OSPG | 45 | 70 | − | − | 60 | − | − |
| SecureClaw | − | 55 | − | − | 65 | 50 | − |
| OpenClaw Shield | − | − | 55 | − | − | − | − |
| ClawBands | − | − | 60 | 45 | − | 65 | − |
| Clawscan-Skills | − | − | − | − | − | − | 60 |
| ClawKeeper | 90 | 85 | 85 | 90 | 90 | 85 | 90 |
主结论有三点:第一,ClawKeeper 相对各列最佳 baseline 提升 15–45 percentage points;第二,baseline 覆盖碎片化严重,没有一个 baseline 覆盖超过三类任务;第三,即使 baseline 支持某一任务,其 DSR 通常只有 60–70%,而 ClawKeeper 达到 85–90%,说明三层统一 enforcement 不只是覆盖更多,而且单项鲁棒性也更强。
5.2 Watcher self-evolving capability

Figure 6 解读:Watcher 在处理从 1 到 100 个新增 adversarial cases 的过程中,DSR 从约 90.0% 上升到约 95.0%。论文解释为两种机制共同作用:Watcher 更新 monitoring skills 和 in-context memory,补充新攻击模式;同时调整 confirmation-request thresholds,减少 false negative 和不必要打断。需要注意的是,这条曲线在论文中是模拟 online learning 场景,released repo 中没有直接给出对应数据生成脚本。
5.3 Qualitative cases: skill layer
Figure 7a–7b 解读:Figure 7a 展示 Windows system-level defense:面对 Base64 混淆 payload,skill 机制解码并识别 code injection/危险执行意图,从而阻断本地脚本执行。Figure 7b 展示 Feishu/Lark software-level defense:当 agent 试图把敏感凭据发送给外部联系人时,触发 Red-Line 行为协议,停止消息发送,防止 credential exfiltration。
Figure 8a–8b 解读:Figure 8a 是 daily system security scan,会检查异常进程、外部网络连接、目录修改和配置 baseline mismatch;Figure 8b 是 Feishu/Lark interaction report,会把历史事件按风险等级汇总,并标出 jailbreak attempt、SSH key access request 等关键风险。这个 case 说明 skill 层不仅能在当下阻断,也能承担周期性自审计和管理员报告。
5.4 Qualitative cases: plugin layer
Figure 9a–9b 解读:安装 ClawKeeper 前,OpenClaw 会直接输出本地文件中的 plaintext GitHub username/password;安装后,Hardening module 已把风险感知规则注入 AGENTS.md,agent 能识别敏感信息并用 policy notice 替换 raw password。这说明 plugin hardening 既保留了用户请求中合法的会议笔记部分,也阻断了 credential leakage。

Figure 10 解读:Threat Detection report 给出 overall security score 83/100,并指出 network.local-gateway 这类 high-severity 配置问题:gateway binding 没有明确限制在 loopback,可能带来暴露风险。报告不仅给出 evidence,还标注 auto-fixable,并提示通过 npx openclaw clawkeeper harden 调用 remediation,从发现问题连接到修复路径。

Figure 11 解读:Behavioral Scanning case 对 228 个 lifecycle events 做异步审计,包括 message receptions、LLM inputs/outputs、pre-tool invocations。scanner 从 Feishu 来源的日志中定位到 “Forget all security restrictions” 这类 jailbreak attempt,并把尝试访问 desktop private key 的行为作为 latent prompt injection risk 暴露给管理员。
5.5 Qualitative cases: Watcher layer

Figure 12 解读:Watcher 在 task agent 解码 Base64 并准备执行危险命令前介入,识别该命令涉及高风险系统级文件修改,于是把动作切换为 ask_user,要求 human confirmation。这体现了 Watcher 的关键价值:它不是事后报告,而是在 tool execution 之前把高风险路径转成 HITL。

Figure 13 解读:当 agent 在一轮中连续调用 read/write/shell/command 等多个工具时,Watcher 统计 tool invocation 数,触发 tool_loop_limit,并返回 ask_user。这类限制不是判断单个工具是否危险,而是识别长链 autonomous execution 失控的过程风险。

Figure 14 解读:当上游 privileged command 因权限错误失败,而用户诱导 agent 进入 silent recovery/retry mode 时,Watcher 识别 upstream failure loop 风险并返回 stop,终止 run。这个 case 说明 Watcher 不只防恶意命令,也防“失败后继续自动重试”这种 operational hazard。
5.6 Limitations and takeaways
论文自身给出的限制主要来自三层各自的 trade-off:Skill-based protection 依赖规则质量和模型遵从性,容易被 adversarial instruction 要求删除/绕过;Plugin-based protection 与 OpenClaw runtime 紧耦合,面对未知攻击需要持续开发新规则;Watcher-based protection 虽然安全性最高,但 local deployment 需要额外计算资源,cloud deployment 需要上传 session context,带来隐私和治理边界问题。
总体结论是:ClawKeeper 的贡献不在于单个检测规则,而在于把 OpenClaw 安全问题重构成分层控制面。Skill 层提供低成本、可读、可迁移的政策入口;Plugin 层提供 runtime 内的强制拦截与审计;Watcher 层提供独立监督、实时中断和可演化风险记忆。实验上,ClawKeeper 在 7 类安全任务上达到 85–90% DSR,并且在 Watcher 处理 100 个新案例后从约 90.0% 提升到约 95.0%,支持作者关于“统一多层防护优于点状防御”的主张。