--- 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" ```