logo
0
0
WeChat Login
add readme~

KnowledgeBase Hook Skill

一个 OpenClaw Hook 技能,在用户消息发送给 Agent 之前自动查询 CNB 知识库,将相关的记忆和知识注入到上下文中,帮助 Agent 更好地理解用户需求。

🎯 功能特性

  • 自动上下文注入:在消息预处理阶段自动查询知识库
  • 智能记忆检索:基于语义相似度检索最相关的知识
  • 可配置参数:支持自定义查询数量、相似度阈值等
  • 非阻塞设计:Hook 错误不会影响正常消息处理
  • 调试友好:内置详细日志,方便调试和监控

📦 项目结构

knowledgebase-hook-skill/ ├── handler.ts # OpenClaw Hook 处理器 ├── query.sh # 知识库查询脚本 ├── HOOK.md # Hook 安装和使用文档 ├── SKILL.md # 技能说明文档 └── README.md # 本文件

🚀 快速开始

1. 前置要求

  • Node.js 环境
  • CNB API Token(具有 repo-code:r 权限)
  • OpenClaw Gateway

2. 安装步骤

2.1 设置环境变量

# 必须配置 export CNB_TOKEN="your-token-here" # 可选配置(有默认值) export KB_REPO="cnbnas/clawd" export KB_TOP_K="3" export KB_SCORE_THRESHOLD="0.3" export KB_HOOK_DEBUG="true"

2.2 安装 Hook

handler.tsHOOK.md 复制到 defaultAgent 的 workspace 目录(通常是 /workspace/clawd/hooks/)。

2.3 配置 OpenClaw Gateway

/root/.openclaw/openclaw.json 中添加 Hook 配置:

{ "hooks": { "internal": { "enabled": true, "handlers": [ { "event": "message:preprocessed", "module": "./hooks/handler.ts" } ] } } }

2.4 重启 Gateway

openclaw gateway restart

⚙️ 配置说明

环境变量

变量名说明默认值是否必须
CNB_TOKENCNB API Token-✅ 是
CNB_API_ENDPOINTCNB API 地址https://api.cnb.cool❌ 否
KB_REPO知识库仓库cnbnas/clawd❌ 否
KB_TOP_K返回结果数量3❌ 否
KB_SCORE_THRESHOLD相似度阈值 (0-1)0.3❌ 否
KB_HOOK_ENABLED是否启用 Hooktrue❌ 否
KB_HOOK_DEBUG是否开启调试日志true❌ 否

📝 使用示例

查询脚本使用

直接使用 query.sh 脚本查询知识库:

# 基本查询 ./query.sh "记忆系统设计" # 指定返回数量 ./query.sh "如何配置 API" 3 # 指定相似度阈值 ./query.sh "定时任务配置" 5 0.7

Hook 自动注入

用户发送消息:

用户:橘子的记忆系统是怎么设计的?

Agent 实际接收到的消息(包含上下文):

📚 知识库上下文: • [MEMORY.md - 橘子的长期记忆] (cloud/MEMORY.md, code) - 相似度:0.966 • [[#1] 🧠 记忆架构设计 - CNB Issue 记忆系] (/cnbnas/clawd/-/issues/1, issue) - 相似度:0.942 • [TOOLS.md - Local Notes] (cloud/TOOLS.md, code) - 相似度:0.895 --- 用户消息: 橘子的记忆系统是怎么设计的?

🔍 工作原理

用户消息 ↓ 媒体理解 ↓ 🔥 message:preprocessed Hook ↓ 查询 CNB 知识库 ↓ 提取 Top-K 相关结果 ↓ 构建上下文摘要 ↓ 注入 bodyForAgent ↓ Agent 处理并回复

🐛 调试

查看日志

调试日志默认开启,可以在 Gateway 控制台看到:

🔥 KB-Hook 被调用了! [KB-Hook] 收到 message:preprocessed 事件 [KB-Hook] 处理消息 (ID=test-123): 测试查询... [KB-Hook] 查询知识库:测试查询... [KB-Hook] 知识库返回 3 条结果 [KB-Hook] 已更新 bodyForAgent (3 条记忆)

关闭调试日志

export KB_HOOK_DEBUG="false"

⚠️ 注意事项

  1. Token 权限:确保 CNB_TOKEN 有读取目标仓库的权限
  2. 路径配置:Hook 文件必须在 defaultAgent 的 workspace 内
  3. 性能考虑:每次消息都会查询知识库,注意 API 调用频率
  4. 短消息过滤:少于 5 个字符的消息会自动跳过
  5. 错误处理:Hook 错误不会阻塞消息处理,只会记录日志

📚 相关文档

📄 许可证

MIT License

👥 作者

🍊 Juzi (CNB)


Created: 2026-03-17