多模态数据管道技能 — 摄入文档(PDF/图片/视频/Office)到持久化知识维基,支持知识融合、跨源矛盾检测、多源聚合查询、知识图谱构建。当用户提到摄入文档、构建知识库、查询维基、检查一致性、构建知识图谱、文档分析、多模态理解、数据管道等需求时触发此技能。即使用户没有明确说 pipeline 或 data-pipeline,只要涉及将文档转化为结构化知识、跨文档分析对比、或知识图谱可视化,都应触发此技能。
Scanned 6/11/2026
Install via CLI
openskills install YesIamGodt/knowledge-pipline---
name: data-pipeline
description: "多模态数据管道技能 — 摄入文档(PDF/图片/视频/Office)到持久化知识维基,支持知识融合、跨源矛盾检测、多源聚合查询、知识图谱构建。当用户提到摄入文档、构建知识库、查询维基、检查一致性、构建知识图谱、文档分析、多模态理解、数据管道等需求时触发此技能。即使用户没有明确说 pipeline 或 data-pipeline,只要涉及将文档转化为结构化知识、跨文档分析对比、或知识图谱可视化,都应触发此技能。"
---
# Data Pipeline — 多模态知识管道
将任意格式文档摄入为持久化结构化知识维基,支持知识融合、跨源矛盾检测、多源聚合查询。
## 核心能力
| 能力 | 说明 |
|------|------|
| **多模态摄入** | PDF、图片、视频、Word、Excel、PPT、HTML、Markdown |
| **知识融合** | 新文档摄入时自动与已有实体/概念页合并,而非覆盖 |
| **主动矛盾检测** | 摄入后自动对比新旧 claims,报告跨源冲突 |
| **跨源聚合查询** | 查询时展示多源视角、共识与分歧 |
| **知识图谱** | 自动构建交互式 vis.js 可视化图谱 |
---
## 维基目录
数据统一存放在技能安装目录下(`~/.claude/skills/data-pipeline/`):
```
~/.claude/skills/data-pipeline/
├── SKILL.md # 本文件
├── tools/ # Python 管道脚本
│ ├── pipeline_ingest.py
│ ├── pipeline_query.py
│ ├── pipeline_lint.py
│ ├── pipeline_graph.py
│ ├── pipeline_config.py
│ └── build_graph.py
├── core/ # 核心模块
│ ├── llm_config.py # LLM API 配置管理
│ ├── retrieval.py # BM25 检索引擎
│ ├── wikilink.py # Wikilink 解析器
│ └── export.py # 导出功能
├── backend/ # 文件处理器
│ └── processors/ # PDF/图片/视频/Office 处理器
├── wiki/ # 知识维基(自动创建)
│ ├── index.md
│ ├── log.md
│ ├── overview.md
│ ├── claims.json
│ ├── sources/
│ ├── entities/
│ ├── concepts/
│ └── syntheses/
├── graph/ # 知识图谱输出
│ ├── graph.json
│ └── graph.html
└── raw/ # 可选:源文档存放
```
---
## LLM 配置(首次使用前必须完成)
运行任何管道命令前,先检查 `.llm_config.json` 是否存在。如果未配置,执行配置向导。
### 配置文件路径
按优先级查找:
1. 技能目录下的 `.llm_config.json`
2. 当前工作目录下的 `.llm_config.json`
3. `LLM_CONFIG_JSON` 环境变量指定的路径
### 配置向导
```bash
python tools/pipeline_config.py
```
或手动创建 `.llm_config.json`:
```json
{
"base_url": "https://api.openai.com/v1",
"model": "gpt-4o-mini",
"api_key": "sk-..."
}
```
常见提供商:
| 提供商 | base_url | 模型示例 |
|--------|----------|----------|
| OpenAI | `https://api.openai.com/v1` | gpt-4o-mini |
| DeepSeek | `https://api.deepseek.com/v1` | deepseek-chat |
| 火山引擎 | `https://ark.cn-beijing.volces.com/api/coding/v3` | doubao-seed-2-0-pro-260215 |
| Ollama | `http://localhost:11434/v1` | llama3.2 |
---
## 文件路径解析规则
当用户指定文件路径时:
1. **绝对路径**(如 `D:\docs\report.pdf`)→ 直接使用
2. **以 `raw/` 开头** → 相对于技能目录的 `raw/`
3. **其他相对路径** → 相对于当前工作目录(CWD)
---
## 命令:摄入文档
**触发**:用户说"摄入"、"ingest"、"导入文档"、"分析这个文件"等
### 用法
```
摄入 raw/report.pdf
摄入 D:\docs\meeting-notes.docx
ingest ./my-image.jpg
```
### 执行方式
**始终优先使用 Python 脚本**:
```bash
python <skill-dir>/tools/pipeline_ingest.py <文件路径>
```
**PDF 策略**(通过环境变量控制):
- `PIPELINE_PDF_STRATEGY=balanced`(默认):文本 + 多图智能理解
- `PIPELINE_PDF_STRATEGY=accurate`:偏准确率(扫描件)
- `PIPELINE_PDF_STRATEGY=fast`:纯文本提取
**图片处理**:优先用 Claude 多模态视觉直接理解;失败时降级到 Python OCR
**视频处理**:OpenCV 关键帧提取 → 多模态 LLM 理解 → 音频转写(如有 ffmpeg)
### 知识融合(核心差异化能力)
摄入时,如果目标实体/概念页面已存在:
- **不会覆盖**,而是用 LLM 合并新旧内容
- 保留已有信息,追加新源信息
- 矛盾处两者都保留,标注 `⚠️ 矛盾`
- 自动更新 frontmatter 的 `sources` 列表
### 主动矛盾检测
摄入完成后自动执行:
- 将新 claims 与 `claims.json` 中所有已有 claims 对比
- 输出跨源矛盾报告和跨源佐证
- 自动记录到 `wiki/log.md`
### 完整流程
1. 处理源文件(多模态)
2. 读取 wiki/index.md 和 overview.md 获取上下文
3. 写入 wiki/sources/<slug>.md
4. **知识融合:合并或创建**实体/概念页面
5. 更新 index.md 和 overview.md
6. 保存 key claims 到 claims.json
7. **主动矛盾检测**:对比新旧 claims
8. 追加 log.md
如果 Python 脚本失败,回退到 Claude 内置能力手动执行上述步骤。
---
## 命令:查询维基
**触发**:用户提问关于已摄入内容的问题、"query"、"查询"等
### 用法
```
query: transformer 模型的主要创新是什么?
查询 所有来源中提到的安全风险
```
### 执行方式
```bash
python <skill-dir>/tools/pipeline_query.py "问题内容"
python <skill-dir>/tools/pipeline_query.py "问题" --auto-save
```
### 跨源聚合(核心差异化能力)
查询结果包含:
- **多源视角**:每个源对同一问题的不同观点
- **共识与分歧**:
- ✅ 多源共识:多个源一致同意的观点
- ⚠️ 观点分歧:各源存在不同看法
- ❓ 单源独有:仅在一个源中出现的论点
- **[[wikilink]]** 引用到具体页面
### 步骤
1. BM25 检索 + 关键词匹配找到相关页面
2. 加载 claims.json 构建跨源视角上下文
3. LLM 综合答案(含多源视角和共识分歧分析)
4. 询问用户是否保存到 wiki/syntheses/
---
## 命令:检查维基
**触发**:用户说"lint"、"检查"、"审计维基"等
### 用法
```
lint
检查维基
```
### 执行方式
```bash
python <skill-dir>/tools/pipeline_lint.py
```
### 检查项
- **孤立页面**:无入链 [[wikilinks]]
- **断链**:指向不存在页面的 [[WikiLink]]
- **矛盾**:跨页面声明冲突(含 claims.json 交叉验证)
- **过时摘要**:新源摄入后未更新的页面
- **缺失实体**:3+ 页面提及但无专属页面的实体
- **数据空白**:建议补充的新源
输出报告后询问是否保存到 wiki/lint-report.md。
---
## 命令:构建知识图谱
**触发**:用户说"build graph"、"构建图谱"、"知识图谱"等
### 用法
```
build graph
构建知识图谱
```
### 执行方式
```bash
python <skill-dir>/tools/build_graph.py --open
```
### 输出
- `graph/graph.json`:节点 + 边 + 社区数据
- `graph/graph.html`:自包含 vis.js 交互式可视化
### 备选方案
如果 Python 不可用,手动:
1. Grep 提取所有 [[wikilinks]]
2. 构建节点/边列表
3. 生成 graph.json + graph.html
---
## 命令:配置 LLM
**触发**:用户说"配置"、"config"、"设置 API"等
### 执行方式
```bash
python <skill-dir>/tools/pipeline_config.py
```
或通过交互式问答收集 base_url、model、api_key 后写入 `.llm_config.json`。
---
## 页面格式
每个维基页面使用 YAML frontmatter:
```yaml
---
title: "页面标题"
type: source | entity | concept | synthesis
tags: []
sources: []
last_updated: YYYY-MM-DD
---
```
使用 `[[PageName]]` wikilinks 链接其他页面。
### 命名规范
- Source slug: `kebab-case.md`
- Entity 页面: `TitleCase.md`(如 `OpenAI.md`、`华为云.md`)
- Concept 页面: `TitleCase.md`(如 `RAG.md`、`知识融合.md`)
---
## 设计理念
**持久化知识积累** vs RAG 查询时推导:
| 特性 | 传统 RAG | Data Pipeline |
|------|----------|---------------|
| 知识存储 | 向量数据库(无结构) | 结构化维基页面 |
| 新文档摄入 | 追加嵌入 | **知识融合**(合并已有页面) |
| 矛盾处理 | 无感知 | **主动检测并报告** |
| 查询 | 相似性检索 | **多源聚合 + 共识分歧分析** |
| 可解释性 | 黑盒 | Wikilinks + 引用溯源 |
| 可视化 | 无 | 交互式知识图谱 |
三层架构:
1. **Raw Layer**:原始文档(不可变)
2. **Wiki Layer**:LLM 生成的结构化知识
3. **Schema Layer**:配置、索引、Claims 数据库
---
## Python 依赖
首次使用前安装依赖:
```bash
pip install openai pymupdf python-docx openpyxl python-pptx beautifulsoup4 pillow
# 可选:视频处理
pip install opencv-python
```
No comments yet. Be the first to comment!