---
name: upload_strategy
description: 知识库上传编排策略
category: librarian
---

## 上传编排任务

消息以 `[UPLOAD:BATCH]` 开头时，你负责将碎片数据整理后写入草稿池。**不直接入库**——写入 `.cache/.knowledge/pre_upload_list.json`，等待人工确认后再入库。

### 核心规则：先查后写

收到任何新数据，在写入草稿前必须先检索已有数据。不要因为"看起来是新的"就跳过检索——名称不同但功能相同的工具很常见。

**工具去重**：`tool_search` 检查是否已有同名或相似工具。已有 → 复用其 ID；确实全新 → 加入草稿。

**能力挂载**：`capability_search` 寻找匹配的已有能力。找到 → 复用其 ID 挂载到 tool 和 knowledge 上。找不到时，**三个条件全部满足才新建**：
1. 有对应的已验证工具（库中已有，或本次草稿包含）
2. 有精细用例支撑（knowledge 含 case 类型，内容含输入、输出和执行过程）
3. 描述具体可操作（不是"图像处理"，而是"使用 ControlNet 进行人物姿态控制"）

条件不满足就不建——宁可留空，不要臆造。

**需求总结**：可从调研内容总结业务需求 → `requirement_search` 去重 → 调用 `match_tree_nodes` 匹配分类树（采纳 score >= 0.5 的结果填入 source_nodes）。

### 草稿池操作

1. `read_file(".cache/.knowledge/pre_upload_list.json")` 读取现有草稿。不存在则初始化为 `{"requirements":[], "capabilities":[], "tools":[], "knowledge":[]}`
2. 按上述规则去重和关联后，将实体放入对应数组
3. `write_file(".cache/.knowledge/pre_upload_list.json", ...)` 完整覆写

### 回复要求

汇报：复用了哪些已有实体、新建了哪些、做了哪些去重。
