修改技能流程
This commit is contained in:
@@ -2,14 +2,11 @@
|
|||||||
|
|
||||||
- **Name:** 蒋先生
|
- **Name:** 蒋先生
|
||||||
- **What to call them:** 蒋先生
|
- **What to call them:** 蒋先生
|
||||||
- **Timezone:** GMT+8
|
- **Timezone:** Asia/Shanghai (GMT+8)
|
||||||
- **Notes:**
|
- **Notes:** 偏好使用中文交流
|
||||||
|
|
||||||
## Context
|
## KB Workflow 配置
|
||||||
|
|
||||||
- 🗣️ 用中文沟通
|
知识库路径: `~/work/knowledge-base`
|
||||||
-
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
更多信息有待了解。
|
更多信息有待了解。
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# 2026-02-11 会话记录
|
||||||
|
|
||||||
|
## 个人设置
|
||||||
|
- 用户明确要求:以后所有交流使用中文
|
||||||
|
- 已更新 USER.md 记录此偏好
|
||||||
|
|
||||||
|
## KB Workflow 技能环境配置
|
||||||
|
|
||||||
|
### 背景
|
||||||
|
用户需要处理"添加到知识库 + 链接"的工作流,特别是 B站视频内容。
|
||||||
|
|
||||||
|
### 完成的工作
|
||||||
|
1. **检查了 kb-workflow 技能结构**
|
||||||
|
- 主流程: kb-workflow/kb_workflow.py
|
||||||
|
- 链接解析: kb-link-parser/link-parser.py
|
||||||
|
- B站元数据: kb-bilibili-metadata/bilibili_metadata.py
|
||||||
|
- B站内容下载: kb-bilibili-content/bilibili_content.py
|
||||||
|
- OCR处理: kb-ocr-processor/ocr_processor.py
|
||||||
|
- 深度分析: kb-deep-analyzer/deep_analyzer.py
|
||||||
|
|
||||||
|
2. **创建了一键环境检查脚本**
|
||||||
|
- 文件: `skills/install-kb-workflow.sh`
|
||||||
|
- 功能: 自动检查系统依赖和 Python 包
|
||||||
|
- 生成缺失依赖的安装命令
|
||||||
|
|
||||||
|
3. **创建了知识库目录结构**
|
||||||
|
- 路径: `~/work/knowledge-base/`
|
||||||
|
- 包含: archive/, pending/, metadata/, content/{downloads,subtitles}/, analyzed/
|
||||||
|
|
||||||
|
### 环境依赖清单
|
||||||
|
**系统依赖:**
|
||||||
|
- python3 (已安装 3.12.3)
|
||||||
|
- python3-pip (缺失)
|
||||||
|
- ffmpeg (缺失)
|
||||||
|
- tesseract-ocr + 中文/英文语言包 (缺失)
|
||||||
|
- git (已安装 2.43.0)
|
||||||
|
|
||||||
|
**Python 包:**
|
||||||
|
- httpx, aiohttp, requests (部分已安装)
|
||||||
|
- playwright, easyocr, pytesseract (缺失)
|
||||||
|
|
||||||
|
### 待执行安装命令
|
||||||
|
```bash
|
||||||
|
# 系统依赖
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y python3-pip ffmpeg tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-eng
|
||||||
|
|
||||||
|
# Python 包
|
||||||
|
pip3 install --user httpx aiohttp playwright easyocr pytesseract
|
||||||
|
python3 -m playwright install chromium
|
||||||
|
|
||||||
|
# 环境变量
|
||||||
|
export KB_BASE_PATH="~/work/knowledge-base"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 待处理事项
|
||||||
|
- [ ] 用户需要运行安装命令完成环境配置
|
||||||
|
- [ ] 完成后可以处理 B站视频链接添加到知识库
|
||||||
|
|
||||||
|
## 文档更新
|
||||||
|
- 更新了 USER.md 添加 KB Workflow 配置章节
|
||||||
|
- 创建了 skills/README.md 详细文档
|
||||||
|
- 创建了 skills/.env.example 环境变量示例
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# KB Workflow 环境变量配置
|
||||||
|
export KB_BASE_PATH="~/work/knowledge-base"
|
||||||
|
|
||||||
|
# 可选: B站 Cookie(用于下载会员视频)
|
||||||
|
# export BILIBILI_COOKIE="SESSDATA=xxx; bili_jct=xxx"
|
||||||
|
|
||||||
|
# 可选: AI 分析配置
|
||||||
|
# export AI_API_KEY="your-api-key"
|
||||||
|
# export AI_PROVIDER="openai" # 或 zhipu, minimax
|
||||||
|
# export AI_MODEL="gpt-4"
|
||||||
|
|
||||||
|
# 可选: Git 配置
|
||||||
|
# export KB_GIT_USER="Your Name"
|
||||||
|
# export KB_GIT_EMAIL="your@email.com"
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
# KB Workflow 环境安装脚本
|
||||||
|
|
||||||
|
一键检查并安装 kb-workflow 知识库工作流所需的全部环境依赖。
|
||||||
|
|
||||||
|
## 功能特性
|
||||||
|
|
||||||
|
- ✅ 自动检测系统类型 (Ubuntu/Debian/Fedora/Arch)
|
||||||
|
- ✅ 检查系统依赖 (Python3, pip3, ffmpeg, tesseract, git)
|
||||||
|
- ✅ 检查 Python 依赖包 (httpx, aiohttp, playwright, easyocr 等)
|
||||||
|
- ✅ 自动创建知识库目录结构
|
||||||
|
- ✅ 生成环境变量配置示例
|
||||||
|
- ✅ 汇总显示所有需要执行的安装命令
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
### 运行检查脚本
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/starmen1265/.openclaw/workspace/skills
|
||||||
|
./install-kb-workflow.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
脚本会检查所有依赖,并显示需要执行的安装命令。
|
||||||
|
|
||||||
|
### 示例输出
|
||||||
|
|
||||||
|
```
|
||||||
|
========================================
|
||||||
|
第一步: 检查系统依赖
|
||||||
|
========================================
|
||||||
|
[SUCCESS] Python3 已安装: Python 3.12.3
|
||||||
|
[WARN] pip3 未安装
|
||||||
|
[WARN] ffmpeg 未安装
|
||||||
|
...
|
||||||
|
|
||||||
|
========================================
|
||||||
|
需要安装的系统依赖
|
||||||
|
========================================
|
||||||
|
|
||||||
|
检测到以下依赖未安装:
|
||||||
|
- python3-pip
|
||||||
|
- ffmpeg
|
||||||
|
- tesseract-ocr
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
请运行以下命令安装:
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y python3-pip ffmpeg tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-eng
|
||||||
|
```
|
||||||
|
|
||||||
|
## 依赖清单
|
||||||
|
|
||||||
|
### 系统依赖
|
||||||
|
|
||||||
|
| 依赖 | 用途 | 安装命令 |
|
||||||
|
|------|------|----------|
|
||||||
|
| **python3** | Python 运行时 | `sudo apt-get install python3` |
|
||||||
|
| **python3-pip** | Python 包管理器 | `sudo apt-get install python3-pip` |
|
||||||
|
| **ffmpeg** | 视频处理(OCR 截帧) | `sudo apt-get install ffmpeg` |
|
||||||
|
| **tesseract-ocr** | OCR 引擎(备用方案) | `sudo apt-get install tesseract-ocr` |
|
||||||
|
| **git** | 版本控制(归档提交) | `sudo apt-get install git` |
|
||||||
|
|
||||||
|
### Tesseract 语言包
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt-get install tesseract-ocr-chi-sim tesseract-ocr-chi-tra tesseract-ocr-eng
|
||||||
|
|
||||||
|
# Fedora/RHEL
|
||||||
|
sudo dnf install tesseract-langpack-chi_sim tesseract-langpack-chi_tra tesseract-langpack-eng
|
||||||
|
```
|
||||||
|
|
||||||
|
### Python 依赖
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 基础 HTTP 库
|
||||||
|
pip3 install --user httpx aiohttp requests
|
||||||
|
|
||||||
|
# 图像和 OCR
|
||||||
|
pip3 install --user Pillow easyocr pytesseract
|
||||||
|
|
||||||
|
# 浏览器自动化
|
||||||
|
pip3 install --user playwright
|
||||||
|
python3 -m playwright install chromium
|
||||||
|
```
|
||||||
|
|
||||||
|
## 目录结构
|
||||||
|
|
||||||
|
安装完成后会创建以下目录结构:
|
||||||
|
|
||||||
|
```
|
||||||
|
~/work/knowledge-base/ # 知识库根目录(可配置)
|
||||||
|
├── archive/ # 归档目录
|
||||||
|
│ ├── pending/ # 待处理
|
||||||
|
│ └── subscriptions/ # 订阅信息
|
||||||
|
├── metadata/ # 元数据文件
|
||||||
|
├── content/ # 内容文件
|
||||||
|
│ ├── downloads/ # 视频下载
|
||||||
|
│ └── subtitles/ # 字幕文件
|
||||||
|
└── analyzed/ # 深度分析报告
|
||||||
|
```
|
||||||
|
|
||||||
|
## 环境变量
|
||||||
|
|
||||||
|
### 必需
|
||||||
|
- `KB_BASE_PATH` - 知识库根目录(默认: `~/work/knowledge-base`)
|
||||||
|
|
||||||
|
### 可选
|
||||||
|
- `BILIBILI_COOKIE` - B站 Cookie,用于下载会员视频
|
||||||
|
- `AI_API_KEY` - AI API 密钥,用于深度内容分析
|
||||||
|
- `AI_PROVIDER` - AI 提供商(openai/zhipu/minimax)
|
||||||
|
- `AI_MODEL` - AI 模型名称(如 gpt-4)
|
||||||
|
- `AI_BASE_URL` - 自定义 API 端点
|
||||||
|
- `KB_GIT_USER` - Git 用户名(用于归档提交)
|
||||||
|
- `KB_GIT_EMAIL` - Git 邮箱(用于归档提交)
|
||||||
|
- `KB_GIT_REMOTE` - Git 远程仓库地址
|
||||||
|
|
||||||
|
### 配置方法
|
||||||
|
|
||||||
|
将以下内容添加到 `~/.bashrc` 或 `~/.zshrc`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# KB Workflow 配置
|
||||||
|
export KB_BASE_PATH="~/work/knowledge-base"
|
||||||
|
|
||||||
|
# 可选:B站 Cookie
|
||||||
|
export BILIBILI_COOKIE="SESSDATA=xxx; bili_jct=xxx"
|
||||||
|
|
||||||
|
# 可选:AI 配置
|
||||||
|
export AI_API_KEY="your-api-key"
|
||||||
|
export AI_PROVIDER="openai"
|
||||||
|
export AI_MODEL="gpt-4"
|
||||||
|
```
|
||||||
|
|
||||||
|
然后重新加载配置:
|
||||||
|
```bash
|
||||||
|
source ~/.bashrc # 或 source ~/.zshrc
|
||||||
|
```
|
||||||
|
|
||||||
|
## 故障排除
|
||||||
|
|
||||||
|
### 1. pip3 命令不存在
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 方法 1: 安装 pip3
|
||||||
|
sudo apt-get install python3-pip
|
||||||
|
|
||||||
|
# 方法 2: 使用 python3 -m pip
|
||||||
|
python3 -m pip install --user <package>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Playwright 浏览器安装失败
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 手动安装 Chromium
|
||||||
|
python3 -m playwright install chromium
|
||||||
|
|
||||||
|
# 如果仍然失败,尝试安装依赖
|
||||||
|
sudo apt-get install libnss3 libatk-bridge2.0-0 libxss1 libgtk-3-0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. EasyOCR 安装失败
|
||||||
|
|
||||||
|
EasyOCR 依赖 PyTorch,可能需要较长时间安装:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 先安装 PyTorch
|
||||||
|
pip3 install --user torch torchvision --index-url https://download.pytorch.org/whl/cpu
|
||||||
|
|
||||||
|
# 再安装 easyocr
|
||||||
|
pip3 install --user easyocr
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 权限问题
|
||||||
|
|
||||||
|
如果使用 `--user` 安装的包无法找到,检查 PATH:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看用户安装路径
|
||||||
|
python3 -m site --user-base
|
||||||
|
|
||||||
|
# 添加到 PATH(添加到 ~/.bashrc)
|
||||||
|
export PATH="$PATH:$(python3 -m site --user-base)/bin"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. OCR 中文识别问题
|
||||||
|
|
||||||
|
确保已安装中文语言包:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 检查已安装的语言包
|
||||||
|
tesseract --list-langs
|
||||||
|
|
||||||
|
# 应该能看到 chi_sim 和 chi_tra
|
||||||
|
```
|
||||||
|
|
||||||
|
## 更新
|
||||||
|
|
||||||
|
如果技能更新了依赖,可以重新运行检查脚本:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./install-kb-workflow.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 子技能清单
|
||||||
|
|
||||||
|
| 技能 | 路径 | 功能 |
|
||||||
|
|------|------|------|
|
||||||
|
| kb-workflow | `kb-workflow/kb_workflow.py` | 主流程协调 |
|
||||||
|
| kb-link-parser | `kb-link-parser/link-parser.py` | 链接解析 |
|
||||||
|
| kb-bilibili-metadata | `kb-bilibili-metadata/bilibili_metadata.py` | B站元数据提取 |
|
||||||
|
| kb-bilibili-content | `kb-bilibili-content/bilibili_content.py` | B站内容下载 |
|
||||||
|
| kb-ocr-processor | `kb-ocr-processor/ocr_processor.py` | 视频 OCR 识别 |
|
||||||
|
| kb-deep-analyzer | `kb-deep-analyzer/deep_analyzer.py` | AI 深度分析 |
|
||||||
|
|
||||||
|
## 使用 kb-workflow
|
||||||
|
|
||||||
|
安装完成后,可以通过以下方式使用:
|
||||||
|
|
||||||
|
### 方式 1:通过主代理
|
||||||
|
|
||||||
|
直接向主代理发送消息:
|
||||||
|
```
|
||||||
|
添加到知识库 https://www.bilibili.com/video/BVxxxxx
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方式 2:手动运行子技能
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 链接解析
|
||||||
|
python3 kb-link-parser/link-parser.py --url "https://www.bilibili.com/video/BVxxxxx"
|
||||||
|
|
||||||
|
# 2. 元数据提取
|
||||||
|
python3 kb-bilibili-metadata/bilibili_metadata.py --id "BVxxxxx" --type video
|
||||||
|
|
||||||
|
# 3. 内容下载
|
||||||
|
python3 kb-bilibili-content/bilibili_content.py --id "BVxxxxx" --type subtitle
|
||||||
|
|
||||||
|
# 4. 深度分析
|
||||||
|
python3 kb-deep-analyzer/deep_analyzer.py --metadata meta.json --content content.json --output analysis.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 许可证
|
||||||
|
|
||||||
|
MIT License
|
||||||
+28
-25
@@ -14,42 +14,45 @@ description: 当收到"添加到知识库 + 链接" 或"保存到知识库 + 链
|
|||||||
| `添加到知识库` + 链接 | 添加到知识库并处理 | "添加到知识库 https://www.bilibili.com/video/BVxxx" |
|
| `添加到知识库` + 链接 | 添加到知识库并处理 | "添加到知识库 https://www.bilibili.com/video/BVxxx" |
|
||||||
| `保存到知识库` + 链接 | 同上 | "保存到知识库 https://www.bilibili.com/video/BVxxx" |
|
| `保存到知识库` + 链接 | 同上 | "保存到知识库 https://www.bilibili.com/video/BVxxx" |
|
||||||
|
|
||||||
|
|
||||||
## 环境变量
|
## 环境变量
|
||||||
检查以下环境变量
|
|
||||||
KB_BASE_PATH
|
|
||||||
|
|
||||||
环境变量默认值
|
在执行 workflow 之前,必须检查环境变量是否已经设置。
|
||||||
```bash
|
以下是必须的环境变量,如果缺失必须询问用户获得。没有全部设置完成之前禁止进行后续操作。
|
||||||
export KB_BASE_PATH="~/work/knowledge-base"
|
| 变量名 | 用途 | 示例 |
|
||||||
```
|
|--------|------|------|
|
||||||
|
| `KB_BASE_PATH` | 知识库根目录 | `~/work/kb`
|
||||||
|
| `AI_API_KEY` | AI深度分析 | `sk-xxx` |
|
||||||
|
| `AI_PROVIDER` | AI提供商 | `openai`, `zhipu`, `minimax` |
|
||||||
|
| `AI_MODEL` | AI模型 | `gpt-4` |
|
||||||
|
|
||||||
|
以下是可选的环境变量,询问用户是否要设置,允许暂时跳过
|
||||||
|
| 变量名 | 用途 | 示例 |
|
||||||
|
|--------|------|------|
|
||||||
|
| `BILIBILI_COOKIE` | 下载会员视频 | `SESSDATA=xxx; bili_jct=xxx` |
|
||||||
|
| `KB_GIT_USER` | Git提交用户名 | `Your Name` |
|
||||||
|
| `KB_GIT_EMAIL` | Git提交邮箱 | `your@email.com` |
|
||||||
|
|
||||||
|
|
||||||
## Workflow 执行方式
|
## Workflow 执行方式
|
||||||
|
|
||||||
主代理直接执行以下步骤,无需启动 kb-workflow 子代理:
|
主代理直接执行以下步骤,无需启动 kb-workflow 子代理:
|
||||||
|
|
||||||
1. 主代理执行 `kb_workflow.py --check` 查重
|
1. 主代理启动子代理调用 kb-link-parser
|
||||||
2. 主代理启动子代理调用 kb-link-parser
|
2. 主代理启动子代理调用 kb-平台-metadata
|
||||||
3. 主代理启动子代理调用 kb-平台-metadata
|
3. 主代理启动子代理调用 kb-平台-content
|
||||||
4. 主代理启动子代理调用 kb-平台-content
|
4. 主代理启动子代理调用 kb-ocr-processor(如需要)
|
||||||
5. 主代理启动子代理调用 kb-ocr-processor(如需要)
|
5. 主代理启动子代理调用 kb-deep-analyzer
|
||||||
6. 主代理启动子代理调用 kb-deep-analyzer
|
6. 主代理执行 `kb_workflow.py --archive-file` 归档
|
||||||
7. 主代理执行 `kb_workflow.py --archive-file` 归档
|
|
||||||
|
|
||||||
|
|
||||||
## Workflow 步骤
|
## Workflow 执行步骤
|
||||||
|
|
||||||
当触发后,按照以下步骤执行:
|
当触发后,按照以下步骤执行:
|
||||||
|
|
||||||
### 步骤 1: 查重
|
### 步骤 1: 环境变量检查
|
||||||
|
立刻告知用户,启用技能kb-workflow.
|
||||||
运行查重命令:
|
参考环境变量标题下内容执行。
|
||||||
```bash
|
如果必须的环境变量都没问题,继续执行下面的步骤。
|
||||||
python3 kb_workflow.py --check --url "[URL]"
|
|
||||||
```
|
|
||||||
|
|
||||||
- 如果存在:汇报用户并询问是更新还是跳过
|
|
||||||
- 如果不存在:继续步骤 2
|
|
||||||
|
|
||||||
### 步骤 2: 链接解析
|
### 步骤 2: 链接解析
|
||||||
|
|
||||||
@@ -105,7 +108,7 @@ python3 /path/to/bilibili_content.py --id "[ID]" --type subtitle --output [subti
|
|||||||
|
|
||||||
3. 解析输出 JSON,提取 video_filename 和 subtitle_filename(如有)
|
3. 解析输出 JSON,提取 video_filename 和 subtitle_filename(如有)
|
||||||
|
|
||||||
### 步骤 5: OCR 处理(可选,耗时步骤)
|
### 步骤 5: OCR 处理(禁止跳过)
|
||||||
|
|
||||||
> ⚠️ **重要**:此步骤为耗时步骤,视频按帧截取和 OCR 识别需要较长时间。
|
> ⚠️ **重要**:此步骤为耗时步骤,视频按帧截取和 OCR 识别需要较长时间。
|
||||||
> - **严禁跳过**:即使等待时间较长,也必须等待 OCR 完成
|
> - **严禁跳过**:即使等待时间较长,也必须等待 OCR 完成
|
||||||
|
|||||||
Executable
+321
@@ -0,0 +1,321 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# =============================================================================
|
||||||
|
# KB Workflow 环境一键安装脚本
|
||||||
|
# =============================================================================
|
||||||
|
# 功能: 检查并安装 kb-workflow 技能所需的全部环境依赖
|
||||||
|
# 支持: Ubuntu/Debian 系统
|
||||||
|
#
|
||||||
|
# 使用方法:
|
||||||
|
# ./install-env.sh # 检查环境并提示安装命令(检查模式)
|
||||||
|
# ./install-env.sh --auto # 自动安装所有缺失依赖(自动模式)
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# 日志函数
|
||||||
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||||||
|
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||||
|
log_section() {
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
echo -e "${BLUE}$1${NC}"
|
||||||
|
echo -e "${BLUE}========================================${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取脚本目录
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
DEFAULT_KB_PATH="${HOME}/work/knowledge-base"
|
||||||
|
|
||||||
|
# 解析参数
|
||||||
|
AUTO_MODE=false
|
||||||
|
if [ "$1" = "--auto" ]; then
|
||||||
|
AUTO_MODE=true
|
||||||
|
log_info "自动安装模式"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检测 Linux 发行版
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
echo "$ID"
|
||||||
|
elif [ -f /etc/debian_version ]; then
|
||||||
|
echo "debian"
|
||||||
|
elif [ -f /etc/redhat-release ]; then
|
||||||
|
echo "rhel"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
DISTRO=$(detect_distro)
|
||||||
|
|
||||||
|
# 检查命令是否存在
|
||||||
|
command_exists() {
|
||||||
|
command -v "$1" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查 Python 包
|
||||||
|
check_python_package() {
|
||||||
|
python3 -c "import $1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 1. 检查系统依赖
|
||||||
|
# =============================================================================
|
||||||
|
log_section "第一步: 检查系统依赖"
|
||||||
|
|
||||||
|
MISSING_DEPS=()
|
||||||
|
|
||||||
|
# 检查 Python3
|
||||||
|
if command_exists python3; then
|
||||||
|
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
|
||||||
|
log_success "Python3 已安装: $PYTHON_VERSION"
|
||||||
|
else
|
||||||
|
log_warn "Python3 未安装"
|
||||||
|
MISSING_DEPS+=("python3")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 pip3
|
||||||
|
if python3 -m pip --version > /dev/null 2>&1 || command_exists pip3; then
|
||||||
|
log_success "pip3 已安装"
|
||||||
|
else
|
||||||
|
log_warn "pip3 未安装"
|
||||||
|
MISSING_DEPS+=("python3-pip")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 ffmpeg
|
||||||
|
if command_exists ffmpeg; then
|
||||||
|
log_success "ffmpeg 已安装"
|
||||||
|
else
|
||||||
|
log_warn "ffmpeg 未安装"
|
||||||
|
MISSING_DEPS+=("ffmpeg")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 tesseract
|
||||||
|
if command_exists tesseract; then
|
||||||
|
log_success "Tesseract OCR 已安装"
|
||||||
|
else
|
||||||
|
log_warn "Tesseract OCR 未安装"
|
||||||
|
MISSING_DEPS+=("tesseract-ocr")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 git
|
||||||
|
if command_exists git; then
|
||||||
|
log_success "Git 已安装"
|
||||||
|
else
|
||||||
|
log_warn "Git 未安装"
|
||||||
|
MISSING_DEPS+=("git")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 2. 自动安装系统依赖(自动模式)
|
||||||
|
# =============================================================================
|
||||||
|
if [ ${#MISSING_DEPS[@]} -gt 0 ]; then
|
||||||
|
if [ "$AUTO_MODE" = true ]; then
|
||||||
|
log_section "自动安装系统依赖"
|
||||||
|
log_info "检测到系统: $DISTRO"
|
||||||
|
|
||||||
|
case "$DISTRO" in
|
||||||
|
ubuntu|debian)
|
||||||
|
log_info "更新包列表..."
|
||||||
|
sudo apt-get update -qq
|
||||||
|
|
||||||
|
log_info "安装依赖: ${MISSING_DEPS[*]}"
|
||||||
|
sudo apt-get install -y -qq "${MISSING_DEPS[@]}" tesseract-ocr-chi-sim tesseract-ocr-eng
|
||||||
|
;;
|
||||||
|
fedora|rhel|centos)
|
||||||
|
log_info "更新包列表..."
|
||||||
|
sudo dnf check-update -y || true
|
||||||
|
|
||||||
|
log_info "安装依赖: ${MISSING_DEPS[*]}"
|
||||||
|
sudo dnf install -y "${MISSING_DEPS[@]}" tesseract-langpack-chi_sim tesseract-langpack-eng
|
||||||
|
;;
|
||||||
|
arch)
|
||||||
|
log_info "安装依赖: ${MISSING_DEPS[*]}"
|
||||||
|
sudo pacman -S --noconfirm "${MISSING_DEPS[@]}" tesseract-data-chi_sim tesseract-data-eng
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log_error "不支持的系统: $DISTRO"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
log_success "系统依赖安装完成"
|
||||||
|
MISSING_DEPS=()
|
||||||
|
else
|
||||||
|
log_section "需要安装的系统依赖"
|
||||||
|
echo ""
|
||||||
|
echo "检测到以下依赖未安装:"
|
||||||
|
for dep in "${MISSING_DEPS[@]}"; do
|
||||||
|
echo " - $dep"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo "请运行以下命令安装:"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}sudo apt-get update${NC}"
|
||||||
|
echo -e "${YELLOW}sudo apt-get install -y ${MISSING_DEPS[*]} tesseract-ocr-chi-sim tesseract-ocr-eng${NC}"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 3. 检查 Python 依赖
|
||||||
|
# =============================================================================
|
||||||
|
log_section "第二步: 检查 Python 依赖"
|
||||||
|
|
||||||
|
PYTHON_PACKAGES=(
|
||||||
|
"httpx:httpx"
|
||||||
|
"aiohttp:aiohttp"
|
||||||
|
"requests:requests"
|
||||||
|
"Pillow:PIL"
|
||||||
|
)
|
||||||
|
|
||||||
|
MISSING_PY_PKGS=()
|
||||||
|
|
||||||
|
for pkg_info in "${PYTHON_PACKAGES[@]}"; do
|
||||||
|
pkg_name=$(echo "$pkg_info" | cut -d':' -f1)
|
||||||
|
import_name=$(echo "$pkg_info" | cut -d':' -f2)
|
||||||
|
if check_python_package "$import_name" 2>/dev/null; then
|
||||||
|
log_success "$pkg_name 已安装"
|
||||||
|
else
|
||||||
|
log_warn "$pkg_name 未安装"
|
||||||
|
MISSING_PY_PKGS+=("$pkg_name")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 检查特殊包
|
||||||
|
check_python_package "playwright" 2>/dev/null && log_success "playwright 已安装" || MISSING_PY_PKGS+=("playwright")
|
||||||
|
check_python_package "easyocr" 2>/dev/null && log_success "easyocr 已安装" || MISSING_PY_PKGS+=("easyocr")
|
||||||
|
check_python_package "pytesseract" 2>/dev/null && log_success "pytesseract 已安装" || MISSING_PY_PKGS+=("pytesseract")
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 4. 自动安装 Python 依赖(自动模式)
|
||||||
|
# =============================================================================
|
||||||
|
if [ ${#MISSING_PY_PKGS[@]} -gt 0 ]; then
|
||||||
|
if [ "$AUTO_MODE" = true ]; then
|
||||||
|
log_section "自动安装 Python 包"
|
||||||
|
|
||||||
|
log_info "安装: ${MISSING_PY_PKGS[*]}"
|
||||||
|
pip3 install --user "${MISSING_PY_PKGS[@]}" -q
|
||||||
|
|
||||||
|
log_success "Python 包安装完成"
|
||||||
|
|
||||||
|
# 安装 Playwright 浏览器
|
||||||
|
if [[ " ${MISSING_PY_PKGS[*]} " =~ " playwright " ]]; then
|
||||||
|
log_info "安装 Playwright Chromium 浏览器..."
|
||||||
|
python3 -m playwright install chromium
|
||||||
|
log_success "Chromium 浏览器安装完成"
|
||||||
|
fi
|
||||||
|
|
||||||
|
MISSING_PY_PKGS=()
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo "需要安装以下 Python 包:"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
for pkg in "${MISSING_PY_PKGS[@]}"; do
|
||||||
|
echo " - $pkg"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "请运行以下命令安装:"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}pip3 install --user ${MISSING_PY_PKGS[*]}${NC}"
|
||||||
|
|
||||||
|
if [[ " ${MISSING_PY_PKGS[*]} " =~ " playwright " ]]; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}安装完 playwright 后,还需要运行:${NC}"
|
||||||
|
echo -e "${YELLOW} python3 -m playwright install chromium${NC}"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 5. 创建知识库目录结构
|
||||||
|
# =============================================================================
|
||||||
|
log_section "第三步: 创建知识库目录结构"
|
||||||
|
|
||||||
|
KB_BASE_PATH="${KB_BASE_PATH:-$DEFAULT_KB_PATH}"
|
||||||
|
log_info "知识库路径: $KB_BASE_PATH"
|
||||||
|
|
||||||
|
mkdir -p "$KB_BASE_PATH"/{archive/{subscriptions,pending},metadata,content/{downloads,subtitles},analyzed}
|
||||||
|
log_success "目录结构创建完成"
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 6. 环境变量配置提示
|
||||||
|
# =============================================================================
|
||||||
|
log_section "第四步: 环境变量配置"
|
||||||
|
|
||||||
|
if [ -z "$KB_BASE_PATH_SET" ]; then
|
||||||
|
log_warn "KB_BASE_PATH 环境变量未设置"
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo "建议添加到 ~/.bashrc 或 ~/.zshrc:"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}export KB_BASE_PATH=\"$KB_BASE_PATH\"${NC}"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
log_success "KB_BASE_PATH 已设置: $KB_BASE_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建环境变量示例文件
|
||||||
|
ENV_FILE="${SCRIPT_DIR}/.env.example"
|
||||||
|
cat > "$ENV_FILE" << 'EOF'
|
||||||
|
# KB Workflow 环境变量配置
|
||||||
|
export KB_BASE_PATH="~/work/knowledge-base"
|
||||||
|
|
||||||
|
# 可选: B站 Cookie(用于下载会员视频)
|
||||||
|
# export BILIBILI_COOKIE="SESSDATA=xxx; bili_jct=xxx"
|
||||||
|
|
||||||
|
# 可选: AI 分析配置
|
||||||
|
# export AI_API_KEY="your-api-key"
|
||||||
|
# export AI_PROVIDER="openai" # 或 zhipu, minimax
|
||||||
|
# export AI_MODEL="gpt-4"
|
||||||
|
|
||||||
|
# 可选: Git 配置
|
||||||
|
# export KB_GIT_USER="Your Name"
|
||||||
|
# export KB_GIT_EMAIL="your@email.com"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
log_info "环境变量示例已保存到: $ENV_FILE"
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# 7. 完成总结
|
||||||
|
# =============================================================================
|
||||||
|
log_section "安装完成"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
if [ ${#MISSING_DEPS[@]} -eq 0 ] && [ ${#MISSING_PY_PKGS[@]} -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✅ 所有依赖已安装完成!${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠️ 部分依赖需要手动安装${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ ${#MISSING_DEPS[@]} -gt 0 ]; then
|
||||||
|
echo "系统依赖:"
|
||||||
|
echo -e "${YELLOW}sudo apt-get install -y ${MISSING_DEPS[*]} tesseract-ocr-chi-sim tesseract-ocr-eng${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${#MISSING_PY_PKGS[@]} -gt 0 ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Python 包:"
|
||||||
|
echo -e "${YELLOW}pip3 install --user ${MISSING_PY_PKGS[*]}${NC}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo "使用方法:"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo " export KB_BASE_PATH=\"~/work/knowledge-base\"
|
||||||
|
echo " python3 kb_workflow.py --check --url \"[URL]\""
|
||||||
|
echo ""
|
||||||
Reference in New Issue
Block a user