← 返回
未分类 中文

OpenClaw Hook Examples

Provides example hooks for OpenClaw to intercept, modify, block tool calls, switch models, log actions, and handle subagent events.
为 OpenClaw 提供示例钩子,用于拦截、修改、阻止工具调用,切换模型,记录操作以及处理子代理事件。
hanxiao-bot
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 417
下载
💾 0
安装
1
版本
#latest

概述

Hook Examples - OpenClaw Hook Usage Examples

Overview

OpenClaw supports 16+ Hook types that can intercept and modify behavior at various stages.

Available Hooks

HookTimingCan Block?
--------------------------
before_model_resolveBefore model resolution
before_prompt_buildBefore prompt building
before_tool_callBefore tool call
after_tool_callAfter tool call
message_sendingBefore message sending✅ cancel
message_sentAfter message sent
subagent_spawningBefore subagent spawn
subagent_endedAfter subagent ended

Example 1: Tool Audit Log

Record all tool calls to a file:

api.registerHook("before_tool_call", async ({ event, ctx }) => {
  const log = {
    time: new Date().toISOString(),
    tool: event.tool.name,
    params: event.tool.params,
    session: ctx.sessionKey
  };
  // Write to log file
  console.log("[TOOL_AUDIT]", JSON.stringify(log));
  return {}; // Don't block, continue execution
});

Example 2: Dangerous Tool Interception

Block dangerous tools in non-elevated sessions:

api.registerHook("before_tool_call", async ({ event, ctx }) => {
  const dangerous = ["gateway", "cron", "nodes"];
  if (dangerous.includes(event.tool.name) && !ctx.session.elevated) {
    return { 
      block: true, 
      reason: `Tool '${event.tool.name}' requires elevated permissions` 
    };
  }
  return {};
});

Example 3: Parameter Validation

Validate dangerous commands in exec tool:

api.registerHook("before_tool_call", async ({ event, ctx }) => {
  if (event.tool.name === "exec") {
    const cmd = event.tool.params.command || "";
    const dangerous = ["rm -rf", "dd if=", "mkfs", ":(){:|:&}:"];
    for (const d of dangerous) {
      if (cmd.includes(d)) {
        return { 
          block: true, 
          reason: `Dangerous command pattern detected: ${d}` 
        };
      }
    }
  }
  return {};
});

Example 4: Dynamic Model Switching

Switch models based on task type:

api.registerHook("before_model_resolve", async ({ event, ctx }) => {
  const msg = event.messages?.[0]?.content || "";
  if (msg.includes("write code") || msg.includes("debug")) {
    return { 
      model: "ollama/deepseek-r1:70b",
      provider: "ollama"
    };
  }
  if (msg.includes("document") || msg.includes("summary")) {
    return { 
      model: "ollama/qwen3:14b",
      provider: "ollama"
    };
  }
  return {};
});

Example 5: Subagent Result Routing

Custom subagent result delivery:

api.registerHook("subagent_ended", async ({ event, ctx }) => {
  // Do extra processing here
  console.log("[SUBAGENT_ENDED]", event.result);
  return {}; 
});

Registration

Register in the plugin's register(api):

export default definePluginEntry({
  id: "my-hook-plugin",
  name: "My Hook Plugin",
  register(api) {
    api.registerHook("before_tool_call", myHandler);
  }
});

Notes

  • Returning { block: true } from a hook blocks the operation
  • before_model_resolve can return { model, provider } to override
  • Hooks are synchronous; avoid long-running operations
  • Multiple hooks execute in priority order

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-03 07:49 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

Error Recovery

hanxiao-bot
错误恢复 - 优雅处理失败的策略
★ 0 📥 500

OpenClaw Compact Summary

hanxiao-bot
生成结构化的 Markdown 摘要,涵盖对话记忆刷新的关键统计、工具、用户请求、任务、文件及时间线详情。
★ 0 📥 439

Auto Skill Trigger

hanxiao-bot
自动技能触发 - 使用关键词评分匹配技能与任务
★ 0 📥 427