--- 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", ...)` 完整覆写 ### 回复要求 汇报:复用了哪些已有实体、新建了哪些、做了哪些去重。