Install
openclaw skills install @somkh/jy-knowlgdge-skill智能知识库文件处理与数据集自动生成系统。上传文件后自动评估知识价值,LLM智能分类归档,通过EasyDataset生成微调数据集。使用场景:(1) 用户上传文档需要判断是否值得生成知识数据集,(2) 批量处理DOCX/PDF/Excel/图片文件转为知识库,(3) 从本地知识库搜索答案结合对话回复,(4) 部署和初始化知识库环境,(5) 管理知识库分类体系和数据集。
openclaw skills install @somkh/jy-knowlgdge-skill基于 LLM 的智能知识库文件处理系统,实现从文件上传 → 价值判断 → 自动分类 → 数据集生成 → 分类归档 → 知识检索的全流程自动化。通过 EasyDataset + MongoDB 双引擎驱动。
# 环境检测(首次使用必须执行)
python tools/check_env.py
# 测试所有连接(LLM/EasyDataset/MongoDB/视觉模型)
python main.py -t
# 处理单个文件(自动价值评估 + 数据集生成)
python main.py -f <文件路径> -y
# 批量处理目录
python main.py -d <目录路径> -y
# 知识库总览
python main.py --overview
# → /焊接材料: 286 datasets, 收录焊接电极、焊丝、焊条...
# → /工程技术: 0 datasets (新建分类)
# 搜索知识库(返回仅 answer 文本,≤45000字)
python main.py -q "焊丝 技术要求"
# → **重型装备集团焊丝采购选型评估简报**...
# → ---
# → **依据国家标准规范**...
# 问题诊断
python tools/diagnose.py
| 组件 | 检测命令 | 缺失时行为 |
|---|---|---|
| Python 3.10+ | python --version | 告知用户安装,等确认 |
| pip 依赖 | python tools/check_env.py | 列出缺失库,询问是否允许 pip install |
| Docker | docker --version | 告知安装方式,等确认 |
| EasyDataset (:1717) | curl localhost:1717/api/projects | 询问是否允许 docker pull + run |
| MongoDB (:27017) | python tools/check_env.py | 同上 |
| config.json | 自动检测 | 不存在时逐项询问用户 LLM/视觉模型/路径信息 |
📖 完整冷启动流程(7 Phase 逐项部署 + 用户话术模板)见
docs/cold_start.md
用户上传文件
→ [Step 1] 预处理(DOCX/PDF/图片 → 纯文本 Markdown,视觉 LLM 替换内嵌图片)
→ [Step 2] 价值评估(LLM 打分,< 0.4 跳过,>= 0.4 继续)
→ [Step 3] 智能分类(LLM 匹配 MongoDB 分类树,自动创建新分类 + GA 判断)
→ [Step 4] 参数确认(分类路径、GA 设置、语言)
→ [Step 5-6] EasyDataset 管线(分割 → GA对 → 问题生成 → 答案生成,最多3次重试)
→ [Step 7] 去重 + COT移除 + 本地 JSON 导出
→ [Step 8] MongoDB 入库(ds_{分类slug} 集合)
用户提问涉及已有分类
→ python main.py --overview # 确认分类存在
→ python main.py -q "关键词" # 搜索 ds_* 集合
→ 仅返回 answer(---分隔)+ 45000字截断
→ 作为知识凭证融入回答
| 服务 | 地址 | 用途 |
|---|---|---|
| EasyDataset | http://localhost:1717 | 文本/图片数据集生成引擎(Docker) |
| MongoDB | mongodb://localhost:27017 | 分类体系 + ds_* 数据集存储(Docker) |
| LLM API | 用户配置 | 价值评估 + 智能分类 + GA判断 |
| 视觉 LLM API | 用户配置 | 文档图片识别 + 表格截图解析 |
python main.py -f D:/docs/焊接标准.docx -y
# Expected output:
[INIT] 系统初始化完成
============================================================
Processing: 焊接标准.docx
Size: 472,334 bytes | MD5: a4db4db0...
============================================================
[Step 1] 文件预处理...
预处理完成 → .../processed/a4db4db0.md
Markdown 长度: 42756 字符
[Step 2] 价值评估 (LLM)...
价值评分: 0.92 | 有价值: True
理由: 内容为国家技术标准,信息密度高...
[Step 3] 智能分类 (LLM + MongoDB)...
匹配分类: /焊接材料 (置信度: 1.00)
[Step 6] EasyDataset 数据集生成...
[1] 项目已创建: JYKG_xxx_1753000000
[4] 文件分割完成
[5] 问题生成完成
[6] 答案生成完成 (184/184)
[7] 已确认 184 条数据集
[8] 导出完成,共 184 条数据集
[OK] 数据集导出路径: .../datasets/焊接材料/焊接标准.docx/焊接标准.docx_alpaca.json
python main.py -f D:/docs/会议纪要.txt -y
[Step 2] 价值评估 (LLM)...
价值评分: 0.25 | 有价值: False
[跳过] 文件价值不足 (阈值: 0.4)
python tools/check_env.py
# Expected output (healthy):
✅ Python 3.13.12
✅ requests (HTTP API 调用)
✅ pymongo (MongoDB 驱动)
...
✅ 配置文件: config.json
✅ Docker 运行时
✅ EasyDataset API
✅ MongoDB 容器
============================================================
所有检测通过 ✅ 可以执行: python main.py -t
首次使用需生成 config.json,由 Model 分批询问用户后写入(不自动生成空配置):
{
"llm": {
"base_url": "http://your-llm-host:port/v1",
"api_key": "your-api-key-here",
"model": "your-model-name",
"vision_model": "your-vision-model",
"vision_concurrency_limit": 10
},
"easy_dataset": { "base_url": "http://localhost:1717" },
"mongo": { "uri": "mongodb://localhost:27017", "database": "knowledge_skill" },
"output": {
"processed_dir": "./processed",
"datasets_dir": "./datasets",
"uploads_dir": "./uploads"
},
"dataset_generation": {
"task_timeout_minutes": 720,
"include_ga_pairs": true
},
"file_filter": { "value_threshold": 0.4 }
}
# 快速环境检测
python tools/check_env.py
# → 列出所有缺失的依赖和服务
# 深度诊断(含日志和容器状态)
python tools/diagnose.py --full
# → MongoDB 连接状态 + EasyDataset API 可达性 + 最近日志
# 查看所有分类及数据集数量
python main.py --overview
# → /焊接材料: 286 datasets, 收录焊接电极、焊丝...
# 搜索知识(纯 answer 文本,不包含 question)
python main.py -q "焊丝 分类 标准"
# → **重型装备集团焊丝采购选型评估简报**...
# → ---
# → **依据国家标准规范,气体保护电弧焊**...
python main.py -t
# Expected:
# ✅ LLM 服务: 连接成功 ✓
# ✅ 视觉模型: 连接成功 ✓
# ✅ EasyDataset: 连接成功 ✓
# ✅ MongoDB: 连接成功 ✓
详细内容按需查阅,避免占用主上下文:
| 文件 | 何时查阅 |
|---|---|
docs/cold_start.md | 全新服务器、环境缺失、首次部署 |
docs/skill_architecture.md | 完整管线流程、文件结构、配置模板 |
docs/easydataset_deploy.md | EasyDataset + MongoDB Docker 部署指南 |
docs/easydataset_api.md | EasyDataset 130+ API 端点完整参考 |
docs/troubleshooting.md | 20种常见错误的诊断与修复命令 |
常见问题快速定位和修复:
# 全局诊断
python tools/diagnose.py --full
# Expected output:
# Python: 3.13.12
# OK 配置文件: 配置正常
# --- MongoDB ---
# 状态: running
# Docker 容器运行中: knowledge-mongo Up 3 hours
# MongoDB 直接连接成功
# 数据库 knowledge_skill 存在
# 数据集集合: 1 个
# --- EasyDataset ---
# 状态: running
# EasyDataset API 正常 (返回 892 bytes)
# 检测缺失的依赖
python tools/check_env.py
# → ❌ fitz PDF 转图片(PyMuPDF)
# → pip install pymupdf>=1.24.0
pip install -r requirements.txt
# 确认容器状态
docker ps | grep easy-dataset
# → (空) — 容器未运行
# 启动容器
docker pull ghcr.io/conardli/easy-dataset:latest
docker run -d --name easy-dataset --restart unless-stopped -p 1717:3000 ghcr.io/conardli/easy-dataset:latest
# 验证
sleep 5 && curl -s http://localhost:1717/api/projects
# → [] (正常返回)
# 确认容器状态
docker ps | grep knowledge-mongo
# → (空) — 容器未运行
docker pull mongo:7
docker run -d --name knowledge-mongo --restart unless-stopped -p 27017:27017 mongo:7
# Model 不应自动生成,而应分批询问用户:
# 1. LLM API 地址 + API Key + 模型名称
# 2. 视觉模型 API 地址 + API Key + 模型名称
# 3. 存储路径(datasets/ processed/ uploads/)
# 拿到信息后写入 config.json,路径由用户指定
# 默认超时 720 分钟,在 config.json 的 task_timeout_minutes 调整
# 查看 EasyDataset 日志确认任务仍在运行
docker logs easy-dataset --tail 20
# → Starting answer generation for project y13KUDTvB5lI
# → Processed: 180/453, succeeded: 180, failed: 0
tools/check_env.py 是一键检测利器,Model 在每次会话开始都应先跑这个脚本确认环境{code: 0, data: {...}} 格式,记得解包 data 字段读取 statushash()),跨进程/重启保持一致JYKG_<文件名>_<timestamp>,不会碰撞domain_tree_action="keep" 跳过 LLM 调用,避免非标准 JSON 输出兼容问题requirements.txt 已包含 Pillow,冷启动时别忘了 pip install -r requirements.txtconfig.json → vision_concurrency_limit 控制...[已截断]ds.pop('cot', None)),最终数据集仅有 question/answer/questionLabel/chunkName