214 lines
5.5 KiB
Markdown
214 lines
5.5 KiB
Markdown
---
|
||
name: kb-workflow
|
||
description: 当收到"添加到知识库 + 链接" 或"保存到知识库 + 链接"时使用
|
||
---
|
||
|
||
# KB Workflow
|
||
|
||
## 什么时候使用
|
||
|
||
当用户发送包含以下模式的消息时,此技能自动触发:
|
||
|
||
| 触发词 | 行为 | 示例 |
|
||
|--------|------|------|
|
||
| `添加到知识库` + 链接 | 添加到知识库并处理 | "添加到知识库 https://www.bilibili.com/video/BVxxx" |
|
||
| `保存到知识库` + 链接 | 同上 | "保存到知识库 https://www.bilibili.com/video/BVxxx" |
|
||
|
||
|
||
## 启动子代理方式
|
||
|
||
子代理需要:
|
||
- **特定范围:** 明确的任务
|
||
- **全部上下文:** 不要让他们自己去寻找
|
||
- **清晰的输出:** 应该返回什么内容?
|
||
- **约束:** 什么事情不能干?
|
||
|
||
使用 sessions_spawn 启动代理
|
||
|
||
## 环境变量
|
||
检查以下环境变量
|
||
KB_BASE_PATH
|
||
|
||
环境变量默认值
|
||
```bash
|
||
export KB_BASE_PATH="~/work/knowledge-base"
|
||
```
|
||
|
||
## Workflow 步骤
|
||
|
||
当触发后,按照以下步骤执行:
|
||
|
||
### 步骤 1: 查重
|
||
|
||
运行查重命令:
|
||
```bash
|
||
python3 kb_workflow.py --check --url "[URL]"
|
||
```
|
||
|
||
- 如果存在:汇报用户并询问是更新还是跳过
|
||
- 如果不存在:继续步骤 2
|
||
|
||
### 步骤 2: 链接解析
|
||
|
||
- 启动子代理
|
||
- 将以下内容输入上下文:
|
||
```
|
||
1.使用kb-link-parser技能解析这个链接:[用户的 URL]
|
||
2.文件输出路径:[知识库pending目录]
|
||
3.结束时返回结果json。
|
||
```
|
||
- 等待子代里结束返回
|
||
- 如果返回错误,停止并汇报错误给用户。
|
||
- 如果返回成功,解析文件名,提取平台名称。
|
||
|
||
### 步骤 3: 元数据提取
|
||
|
||
- 启动子代理
|
||
- 将以下内容输入上下文:
|
||
```
|
||
1.使用[kb-平台名称-metadata]技能获取元数据
|
||
2.输入文件:[知识库pending目录/步骤2返回的文件名]
|
||
3.输出目录:[知识库metadata目录]
|
||
4.结束时返回结果json
|
||
```
|
||
- 等待子代理结束返回
|
||
- 如果返回错误,停止并汇报错误给用户。
|
||
|
||
### 步骤 4: 内容下载
|
||
|
||
- 启动子代理
|
||
- 将以下内容输入上下文:
|
||
```
|
||
1.使用[kb-平台名称-content]技能获取内容
|
||
2.输入文件:[知识库metadata目录/步骤3返回的文件名]
|
||
3.输出目录:[知识库内容下载目录]
|
||
4.结束时返回结果json
|
||
```
|
||
- 每5分钟检查一次子代理情况,将进度汇报给用户。
|
||
- 等待子代理结束返回
|
||
- 如果返回错误,停止并汇报错误给用户。
|
||
|
||
### 步骤 5: OCR 处理
|
||
|
||
- 启动子代理
|
||
- 将以下内容输入上下文:
|
||
```
|
||
1.使用kb-ocr-processor技能通过视频帧解析字幕内容
|
||
2.输入文件:[知识库内容下载目录/步骤4返回的文件名]
|
||
3.输出目录:[知识库内容下载目录]
|
||
4.结束时返回结果json
|
||
```
|
||
- 每5分钟检查一次子代理情况,将进度汇报给用户。
|
||
- 等待子代理结束返回
|
||
- 如果返回错误,停止并汇报错误给用户。
|
||
|
||
### 步骤 6: 深度分析
|
||
|
||
- 启动子代理
|
||
- 将以下内容输入上下文:
|
||
```
|
||
1.使用kb-deep-analyzer技能对字幕内容进行深度分析,总结提炼
|
||
2.输入文件1:[元数据目录/步骤3返回的元数据文件名]
|
||
3.输入文件2:[知识库内容下载目录/步骤5返回的字幕文件名]
|
||
3.输出目录:[知识库analyzed目录]
|
||
4.结束时返回结果json
|
||
```
|
||
- 每5分钟检查一次子代理情况,将进度汇报给用户。
|
||
- 等待子代理结束返回
|
||
- 如果返回错误,停止并汇报错误给用户。
|
||
|
||
### 步骤 7: 归档
|
||
|
||
运行归档命令:
|
||
```bash
|
||
python3 kb_workflow.py --archive "[分析报告文件路径]"
|
||
```
|
||
|
||
### 步骤 8: 汇报完成
|
||
|
||
向用户汇报:
|
||
- 视频标题
|
||
- 处理阶段完成情况
|
||
- 最终文件路径
|
||
- Git commit 信息
|
||
|
||
## 子技能清单
|
||
|
||
| 步骤 | 子技能 | 输入 | 输出 |
|
||
|------|--------|------|------|
|
||
| 2 | kb-link-parser | URL | pending/{p}_{id}.link.json |
|
||
| 3 | kb-bilibili-metadata | link.json | metadata/{p}_{id}.meta.json |
|
||
| 3 | kb-zhihu-metadata | link.json | metadata/{p}_{id}.meta.json |
|
||
| 4 | kb-bilibili-content | meta.json | downloads/{p}_{id}.mp4, subtitles/{p}_{id}.srt |
|
||
| 5 | kb-ocr-processor | srt/mp4 | {p}_{id}.txt |
|
||
| 6 | kb-deep-analyzer | meta.json, txt | analyzed/{p}_{id}.md |
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
~/work/knowledge-base/
|
||
├── archive/
|
||
│ └── YYYY-MM-DD/
|
||
├── pending/
|
||
│ └── {platform}_{id}.link.json
|
||
├── metadata/
|
||
│ └── {platform}_{id}.meta.json
|
||
├── content/
|
||
│ ├── downloads/
|
||
│ │ └── {platform}_{id}.mp4
|
||
│ ├── subtitles/
|
||
│ │ └── {platform}_{id}.srt
|
||
│ └── {platform}_{id}.txt
|
||
└── analyzed/
|
||
└── {platform}_{id}.md
|
||
```
|
||
|
||
## 辅助命令
|
||
|
||
```bash
|
||
# ------------------- 查重与归档 -------------------
|
||
|
||
# 查重
|
||
python3 kb_workflow.py --check --url "[URL]"
|
||
|
||
# 归档分析报告
|
||
python3 kb_workflow.py --archive "[分析报告路径]"
|
||
|
||
|
||
# ------------------- 目录路径查询 -------------------
|
||
|
||
# 获取知识库根目录(默认 ~/work/knowledge-base)
|
||
python3 kb_workflow.py --base-path "~/custom/path"
|
||
|
||
# 获取待处理目录(pending)
|
||
python3 kb_workflow.py --pending
|
||
|
||
# 获取元数据目录
|
||
python3 kb_workflow.py --metadata
|
||
|
||
# 获取内容目录
|
||
python3 kb_workflow.py --content
|
||
|
||
# 获取内容下载目录
|
||
python3 kb_workflow.py --content_downloads
|
||
|
||
# 获取字幕目录
|
||
python3 kb_workflow.py --content_subtitles
|
||
|
||
# 获取深度分析目录
|
||
python3 kb_workflow.py --analyzed
|
||
|
||
# 获取归档目录
|
||
python3 kb_workflow.py --archive
|
||
|
||
# 获取订阅信息目录
|
||
python3 kb_workflow.py --archive_subscriptions
|
||
|
||
|
||
# ------------------- 工具函数 -------------------
|
||
|
||
# 从文件名提取平台名称
|
||
python3 kb_workflow.py --extract_platform "bilibili_BVxxx.mp4"
|
||
```
|
||
|