logo
0
1
WeChat Login

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

About

简化 openclaw 的提示词,前置 cnb 知识库向量搜索,需要准备 skills 的知识库

100.00 KiB
Skills
0 forks1 stars1 branches0 TagREADME
Language
TypeScript86.7%
Shell13.3%