# 知识管理工具迁移指南

## 架构变更

### 旧架构（Deprecated）
```
Agent → knowledge_search/knowledge_save → HTTP API → KnowHub Server → Database
```

### 新架构（推荐）
```
Agent → ask_knowledge/upload_knowledge → IM → Knowledge Manager → Internal Tools → Database
```

## 工具对照表

| 旧工具 | 新工具 | 说明 |
|--------|--------|------|
| `knowledge_search` | `ask_knowledge` | 查询知识库（同步等待回复） |
| `knowledge_save` | `upload_knowledge` | 上传知识（异步，支持增量+批量） |
| `resource_save` | `upload_knowledge` | 统一通过 upload_knowledge 上传 |

## 迁移步骤

### 1. 启用 IM 和 Knowledge Manager

```python
# config.py
IM_ENABLED = True
KNOWLEDGE_MANAGER_ENABLED = True
```

### 2. 更新 Prompt

**旧写法**：
```
knowledge_search("查询 ControlNet")
knowledge_save(task="...", content="...", types=["tool"])
```

**新写法**：
```
ask_knowledge("查询 ControlNet 相关信息")
upload_knowledge({
  "tools": [...],
  "resources": [...],
  "knowledge": [...]
})
```

### 3. 增量上传模式

新架构支持边搜边传：
```python
# 第一批数据
upload_knowledge({"tools": [...]})

# 第二批数据
upload_knowledge({"resources": [...]})

# 最终提交（触发入库）
upload_knowledge({"knowledge": [...]}, finalize=True)
```

## 新架构优势

1. **自动去重**：Knowledge Manager 在缓冲区中自动去重
2. **批量提交**：减少数据库操作，提高性能
3. **并发控制**：通过 IM 消息队列避免并发冲突
4. **状态管理**：Knowledge Manager 维护 IDLE/WORKING 状态
5. **后台处理**：异步深度去重和整合

## 向后兼容

旧工具仍然可用，但会输出 deprecation 警告：
```
WARNING: knowledge_search is deprecated. Use ask_knowledge instead.
```

建议尽快迁移到新架构。

## 内部工具封装

直接数据库访问的工具已移至 `knowhub/internal_tools/`，仅 Knowledge Manager 内部使用：
- `knowledge_search` (内部)
- `knowledge_save` (内部)
- `resource_save` (内部)

普通 Agent 不应直接调用这些工具。
