# KnowHub OpenClaw Plugin

KnowHub 知识管理插件，为 OpenClaw Agent 提供知识搜索、保存和自动提醒功能。

## 功能

- **kb_search**: 搜索 KnowHub 知识库
- **kb_save**: 保存新知识到 KnowHub
- **kb_update**: 更新知识的有效性反馈
- **自动提醒**: 定期提醒 Agent 使用 KnowHub
- **服务端提取**: 可选的消息历史自动提取功能

## 安装

1. 将插件目录放到 OpenClaw 可以访问的位置
2. 在 OpenClaw 配置中启用插件

## 配置

在 `~/.openclaw/config.json` 中配置：

```json
{
  "plugins": {
    "entries": {
      "knowhub": {
        "enabled": true,
        "config": {
          "apiUrl": "http://43.106.118.91:9999",
          "submittedBy": "user@example.com",
          "reminderMode": "normal",
          "enableServerExtraction": true,
          "privacyMode": "strict"
        }
      }
    }
  }
}
```

### 配置选项

| 选项 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `apiUrl` | string | `http://43.106.118.91:9999` | KnowHub Server 地址 |
| `submittedBy` | string | `""` | 提交者标识（邮箱） |
| `reminderMode` | enum | `normal` | 提醒频率：`off`, `minimal`, `normal`, `aggressive` |
| `enableServerExtraction` | boolean | `true` | 启用服务端消息历史提取 |
| `privacyMode` | enum | `strict` | 隐私模式：`strict`, `relaxed` |

### 提醒模式

- `off`: 关闭提醒
- `minimal`: 每 5 次 LLM 调用提醒一次
- `normal`: 每 3 次（默认）
- `aggressive`: 每 2 次

### 隐私模式

- `strict`: 自动脱敏敏感信息（路径、邮箱、API Key 等）
- `relaxed`: 不脱敏，完整上传

## 使用示例

### 搜索知识

```typescript
kb_search({
  query: "使用 Vitest 运行测试",
  top_k: 5,
  min_score: 3,
  types: ["tool", "best-practice"]
})
```

### 保存知识

```typescript
kb_save({
  task: "使用 Vitest 运行测试",
  content: "使用 vitest --run 执行单次测试，避免 watch 模式阻塞 CI",
  types: ["tool", "best-practice"],
  score: 4,
  source_name: "vitest",
  source_urls: ["https://vitest.dev"]
})
```

### 更新反馈

```typescript
kb_update({
  knowledge_id: "knowledge-xxx",
  is_helpful: true,
  feedback: "这个方法确实有效"
})
```

## 知识类型

- `user_profile`: 用户偏好、习惯、背景
- `strategy`: 执行经验（从反思中获得）
- `tool`: 工具使用方法、优缺点、代码示例
- `usecase`: 用户背景、方案、步骤、效果
- `definition`: 概念定义、技术原理、应用场景
- `plan`: 流程步骤、决策点、方法论

## 安全特性

- Prompt Injection 检测
- 内容转义
- 数据脱敏（strict 模式）
- 配置灵活（支持本地或远程服务器）

## 故障排查

### 搜索失败

检查 KnowHub Server 是否运行：
```bash
curl "http://43.106.118.91:9999/api/knowledge/search?q=test"
```

### 保存失败

检查配置中的 `apiUrl` 是否正确，确保 Server 可访问。

### 提醒太频繁

调整 `reminderMode` 为 `minimal` 或 `off`。

## 开发

插件使用 TypeScript 编写，依赖：
- `@sinclair/typebox`: 参数验证
- `openclaw/plugin-sdk/core`: OpenClaw 插件 API

## 许可证

MIT
