11c62dd383
- kb_workflow.py: 重构为编排者,使用sessions_spawn调用子技能 - skill_main.py: 新增技能入口,处理用户消息 - SKILL.md: 更新文档,明确架构和流程 - SkillBug.md: 新增问题记录文档 设计原则: - workflow不读文件内容,从文件名提取平台 - 使用sessions_spawn调用子agent - 子技能自己定义输入输出格式
245 lines
7.6 KiB
Markdown
245 lines
7.6 KiB
Markdown
---
|
||
name: kb-workflow
|
||
description: 知识库工作流编排技能,提供收件箱扫描、内容处理、归档、订阅检测、Git版本管理和自动清理功能。
|
||
metadata:
|
||
short-description: 知识库工作流编排
|
||
---
|
||
|
||
# KB Workflow
|
||
|
||
## Description
|
||
|
||
KB Workflow 是一个完整的知识库管理系统,包含:
|
||
|
||
**核心功能**:
|
||
- 📥 **收件箱扫描** - 扫描四个子目录 (pending, metadata, content, analyzed)
|
||
- 🔄 **内容处理** - 调用子agent处理各阶段
|
||
- 📦 **Git版本管理** - 归档后自动提交并推送
|
||
- 🔔 **订阅管理** - 跟踪订阅源更新
|
||
- 🧹 **自动清理** - 定期清理临时文件
|
||
- 📊 **汇报生成** - 生成处理统计
|
||
|
||
## 触发方式
|
||
|
||
### 自然语言触发
|
||
|
||
当用户发送包含以下模式的消息时,技能会自动触发:
|
||
|
||
| 触发词 | 行为 | 示例 |
|
||
|--------|------|------|
|
||
| `添加到知识库` + 链接 | 添加到收件箱并处理 | "添加到知识库 https://www.bilibili.com/video/BVxxx" |
|
||
| `保存到知识库` + 链接 | 添加到收件箱并处理 | "保存到知识库 https://www.bilibili.com/video/BVxxx" |
|
||
|
||
### 支持的平台
|
||
|
||
| 平台 | 子技能 |
|
||
|------|--------|
|
||
| Bilibili | kb-bilibili-metadata, kb-bilibili-content |
|
||
| 知乎 | kb-zhihu-metadata |
|
||
|
||
## 架构设计
|
||
|
||
```
|
||
用户: "添加到知识库 https://www.bilibili.com/video/BV1ci4y1V7tb"
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ kb-workflow (主代理) │
|
||
│ │
|
||
│ 职责: │
|
||
│ 1. 接收用户消息,识别触发词和链接 │
|
||
│ 2. 查重(根据URL/文件名) │
|
||
│ 3. 调用子agent处理各阶段 │
|
||
│ 4. 文件流转(mv) │
|
||
│ 5. Git版本管理 │
|
||
│ 6. 归档和清理 │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│ │ │ │
|
||
▼ ▼ ▼ ▼
|
||
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
||
│ kb-link-parser│ │kb-bilibili- │ │kb-bilibili- │ │ kb-deep- │
|
||
│ (子agent) │ │ metadata │ │ content │ │ analyzer │
|
||
│ │ │ (子agent) │ │ (子agent) │ │ (子agent) │
|
||
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
|
||
```
|
||
|
||
## 处理流程
|
||
|
||
### 完整流程(6个阶段)
|
||
|
||
```
|
||
用户发送"添加到知识库 + 链接"
|
||
│
|
||
▼
|
||
kb-workflow:
|
||
1. 查重(根据URL/文件名)
|
||
2. 确认目录存在
|
||
3. 调用 kb-link-parser (sessions_spawn)
|
||
│
|
||
▼
|
||
kb-link-parser (子agent):
|
||
解析URL
|
||
输出: pending/bilibili_BV1ci4y1V7tb.link.json
|
||
返回: {"success": true/false, "output_file": "pending/..."}
|
||
│
|
||
▼
|
||
kb-workflow:
|
||
从文件名提取平台 "bilibili" → 调用 kb-bilibili-metadata
|
||
│
|
||
▼
|
||
kb-bilibili-metadata (子agent):
|
||
获取元数据
|
||
输出: metadata/bilibili_BV1ci4y1V7tb.meta.json
|
||
返回: {"success": true/false, "output_file": "metadata/..."}
|
||
│
|
||
▼
|
||
kb-workflow:
|
||
调用 kb-bilibili-content
|
||
│
|
||
▼
|
||
kb-bilibili-content (子agent):
|
||
下载视频+字幕
|
||
输出: content/downloads/*.mp4, *.srt
|
||
返回: {"success": true/false, "output_file": "...", "subtitles": "..."}
|
||
│
|
||
▼
|
||
kb-workflow:
|
||
拿到字幕文件 → 调用 kb-ocr-processor
|
||
│
|
||
▼
|
||
kb-ocr-processor (子agent):
|
||
OCR处理
|
||
输出: content/bilibili_BV1ci4y1V7tb.txt
|
||
返回: {"success": true/false, "output_file": "content/..."}
|
||
│
|
||
▼
|
||
kb-workflow:
|
||
拿到txt文件 → 调用 kb-deep-analyzer
|
||
│
|
||
▼
|
||
kb-deep-analyzer (子agent):
|
||
深度分析
|
||
输出: analyzed/bilibili_BV1ci4y1V7tb.md
|
||
返回: {"success": true/false, "output_file": "analyzed/..."}
|
||
│
|
||
▼
|
||
kb-workflow:
|
||
mv → archive/YYYY-MM-DD/
|
||
git add → commit → push
|
||
汇报完成
|
||
```
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
知识库根目录 KB_BASE_PATH/
|
||
├── archive/ # Git归档目录
|
||
│ ├── YYYY-MM-DD/ # 按日期归档
|
||
│ └── subscriptions/ # 订阅数据
|
||
├── pending/ # 链接解析结果 (*.link.json)
|
||
├── metadata/ # 元数据 (*.meta.json)
|
||
├── content/
|
||
│ ├── downloads/ # 视频文件 (*.mp4) - 7天后清理
|
||
│ └── subtitles/ # 字幕文件 (*.srt) - 7天后清理
|
||
├── frames/ # 视频截帧 (*.jpg) - 7天后清理
|
||
└── analyzed/ # 分析报告 (*.md)
|
||
```
|
||
|
||
## 设计原则
|
||
|
||
### workflow 职责
|
||
|
||
| 操作 | 说明 |
|
||
|------|------|
|
||
| 查重 | 根据URL/文件名查重 |
|
||
| 创建目录 | 确保 base_path 下目录存在 |
|
||
| 调用子agent | 使用 sessions_spawn 调用子技能 |
|
||
| 提取文件名 | 从子agent返回的output_file提取 |
|
||
| 提取平台 | 从文件名第一个下划线之前提取(不读内容) |
|
||
| 传递信息 | 给子agent提示词 + 需要的路径 |
|
||
| 文件流转 | 最后归档 |
|
||
| Git | commit + push |
|
||
|
||
### workflow 不管
|
||
|
||
- 不读文件内容
|
||
- 不关心子技能内部格式
|
||
- 子技能自己定义输入输出规范
|
||
|
||
### 子agent 调用方式
|
||
|
||
```python
|
||
# kb-workflow 调用子agent
|
||
result = sessions_spawn(
|
||
agentId="子技能名称",
|
||
task="提示词 + 需要的路径信息",
|
||
timeoutSeconds=120
|
||
)
|
||
```
|
||
|
||
### 子技能返回格式
|
||
|
||
所有子技能应返回JSON:
|
||
|
||
```json
|
||
{
|
||
"success": true,
|
||
"output_file": "完整文件路径",
|
||
"subtitles": "字幕文件路径(可选)"
|
||
}
|
||
```
|
||
|
||
## 环境变量
|
||
|
||
```bash
|
||
export KB_BASE_PATH="/path/to/knowledge-base" # 知识库根目录
|
||
export KB_GIT_ROOT="/path/to/archive" # Git仓库目录
|
||
export KB_GIT_REMOTE="git@github.com:user/repo.git" # 远程仓库
|
||
export KB_GIT_USER="Username" # 用户名
|
||
export KB_GIT_EMAIL="user@example.com" # 邮箱
|
||
```
|
||
|
||
## Usage
|
||
|
||
### 作为 OpenClaw 技能
|
||
|
||
当用户发送消息时自动触发:
|
||
```
|
||
用户: "添加到知识库 https://www.bilibili.com/video/BVxxx"
|
||
```
|
||
|
||
### 作为子代理
|
||
|
||
```python
|
||
# 从其他技能调用
|
||
result = sessions_spawn(
|
||
agentId="kb-workflow",
|
||
task="添加到知识库 https://www.bilibili.com/video/BVxxx"
|
||
)
|
||
```
|
||
|
||
### 命令行
|
||
|
||
```bash
|
||
# 处理单个URL
|
||
python kb_workflow.py --url "https://www.bilibili.com/video/BVxxx"
|
||
```
|
||
|
||
## 子技能集成
|
||
|
||
| 阶段 | 子技能 | 输出文件 |
|
||
|------|--------|----------|
|
||
| 链接解析 | kb-link-parser | pending/{platform}_{id}.link.json |
|
||
| 元数据 | kb-bilibili-metadata | metadata/{platform}_{id}.meta.json |
|
||
| 内容 | kb-bilibili-content | content/downloads/{platform}_{id}.mp4, content/subtitles/{platform}_{id}.srt |
|
||
| OCR | kb-ocr-processor | content/{platform}_{id}.txt |
|
||
| 分析 | kb-deep-analyzer | analyzed/{platform}_{id}.md |
|
||
|
||
## Related Skills
|
||
|
||
- **kb-link-parser** - 链接解析
|
||
- **kb-bilibili-metadata** - B站元数据
|
||
- **kb-bilibili-content** - B站内容获取
|
||
- **kb-deep-analyzer** - 深度分析
|
||
- **kb-ocr-processor** - OCR处理
|