定泰 AI 知识库 — 系统架构与流程文档
系统总览
┌─────────────────────────────────────────────────────────────────────────┐
│ 定泰 AI 知识库 系统 │
│ │
│ 投喂 ──→ 监控 ──→ 提取 ──→ AI分析 ──→ 消化 ──→ 同步 ──→ 构建 ──→ 部署 │
│ │
│ 用户只需:1.启动监控 2.丢文件 3.等飞书通知后看网站 │
└─────────────────────────────────────────────────────────────────────────┘
完整流程图
用户投喂素材
│
├── 方式一:本地投喂 ──→ raw/articles/ 或 raw/pdfs/
├── 方式二:共享盘投喂 ──→ \\Desktop-4qvmiga\视频共享\知识库投喂\
└── 方式三:链接投喂 ──→ python link_digest.py <URL>
│
▼
┌─────────────────────┐
│ FileWatcher │ ← watchdog 监控 raw/ + 共享盘
│ file_watcher.py │ 检测到新文件后等待写入完成
└────────┬────────────┘
│ 新文件事件
▼
┌─────────────────────┐
│ ProcessedTracker │ ← 查 processed.json,已处理则跳过
│ processed_tracker │
└────────┬────────────┘
│ 未处理
▼
┌─────────────────────┐
│ FileExtractor │ ← 按文件类型提取文本内容
│ file_extractor.py │ PDF / Word / Excel / PPT / 图片(OCR) / SVG / 网页
└────────┬────────────┘
│ 提取的文本
▼
┌─────────────────────┐
│ AIAnalyzer │ ← 调用 LLM API (glm-5.1)
│ ai_analyzer.py │ 提取:摘要 / 核心观点 / 关键概念 / 相关主题
└────────┬────────────┘
│ AI 分析结果
▼
┌─────────────────────┐
│ DigestWorker │ ← 核心消化逻辑
│ digest_worker.py │
│ │
│ 1. 生成素材摘要页 │ → company-wiki/wiki/sources/日期-文件名.md
│ 2. 提取关键实体 │ → AI概念 + [[双链]]语法
│ 3. 更新实体页 │ → company-wiki/wiki/entities/实体名.md
│ 4. 矛盾检测 │ → ConflictDetector 检查新旧内容矛盾
│ 5. 更新知识库索引 │ → company-wiki/index.md(自动更新统计数据)
│ 6. 更新操作日志 │ → company-wiki/log.md
└────────┬────────────┘
│ 消化完成
▼
┌─────────────────────┐
│ QuartzSyncer │ ← 自动同步 + 构建 + 推送
│ quartz_syncer.py │
│ │
│ 1. 同步页面文件 │ wiki/sources/ → quartz/content/sources/
│ (增量) │ wiki/entities/ → quartz/content/entities/
│ 2. 同步索引文件 │ index.md / log.md / overview.md
│ 3. 构建 Quartz │ npx quartz build → quartz/public/
│ 4. Git 推送 │ git add → git commit → git push origin main
└────────┬────────────┘
│ 推送成功
▼
┌─────────────────────┐
│ Cloudflare Pages │ ← 自动部署(检测到 GitHub push)
│ │ 1-2 分钟后网站更新
└────────┬────────────┘
│
▼
┌─────────────────────┐
│ 飞书通知 │ ← FeishuNotifier 发送消化结果
│ feishu_notifier.py │ 通知内容:文件名 / 生成页面 / 矛盾数量
└─────────────────────┘
▼
用户查看网站
https://company-wiki.pages.dev
目录结构
D:\yangzhen\workproject\软件工程\llm-wiki\
│
├── .env # API 配置(密钥、模型、端点)
│
├── company-wiki/
│ ├── auto/ # 自动化脚本(核心代码)
│ │ ├── file_watcher.py # 入口:文件监控主程序
│ │ ├── digest_worker.py # 核心:消化执行器(编排全流程)
│ │ ├── ai_analyzer.py # AI 分析器(调用 LLM)
│ │ ├── file_extractor.py # 文件内容提取器(12 种格式)
│ │ ├── quartz_syncer.py # Quartz 同步器(同步+构建+推送)
│ │ ├── conflict_detector.py # 矛盾检测器
│ │ ├── processed_tracker.py # 已处理文件追踪器
│ │ ├── feishu_notifier.py # 飞书通知器
│ │ ├── config_loader.py # 配置加载器
│ │ ├── link_digest.py # 链接投喂工具(独立使用)
│ │ ├── config.yaml # 配置文件
│ │ └── processed.json # 已处理文件记录
│ │
│ ├── raw/ # 投喂入口(放文件的地方)
│ │ ├── articles/ # 文本类文件(md/txt/docx/xlsx/pptx/png/svg...)
│ │ └── pdfs/ # PDF 文件
│ │
│ ├── wiki/ # 消化产出(知识库本体)
│ │ ├── sources/ # 素材摘要页(33 个)
│ │ ├── entities/ # 实体页(101 个)
│ │ ├── topics/ # 主题页(1 个)
│ │ ├── comparisons/ # 对比分析页(暂无)
│ │ └── synthesis/ # 综合分析页(暂无)
│ │
│ ├── index.md # 知识库索引(自动更新统计)
│ ├── log.md # 操作日志
│ └── 单人使用指南.txt # 日常操作手册
│
└── quartz/ # Quartz 静态网站(GitHub 推送源)
├── content/ # 网站内容(由 QuartzSyncer 从 wiki/ 同步)
│ ├── sources/ # ← 同步自 wiki/sources/
│ ├── entities/ # ← 同步自 wiki/entities/
│ ├── topics/ # ← 同步自 wiki/topics/
│ ├── index.md # ← 同步自 company-wiki/index.md
│ └── log.md # ← 同步自 company-wiki/log.md
│
├── public/ # 构建产出(npx quartz build 生成)
│ ├── index.html # 首页
│ ├── sources/ # 素材摘要 HTML
│ ├── entities/ # 实体页 HTML
│ └── ... # CSS / JS / RSS / Sitemap
│
├── quartz.config.ts # Quartz 网站配置
└── quartz.layout.ts # Quartz 页面布局
模块职责
| 模块 | 文件 | 职责 |
|---|---|---|
| 文件监控 | file_watcher.py | watchdog 监控 raw/ 和共享盘,检测新文件触发消化 |
| 消化执行 | digest_worker.py | 编排全流程:提取→AI分析→生成页面→矛盾检测→同步推送 |
| AI 分析 | ai_analyzer.py | 调用 LLM API 提取摘要、核心观点、关键概念、相关主题 |
| 文件提取 | file_extractor.py | 支持 PDF/Word/Excel/PPT/图片OCR/SVG/网页 等 12 种格式 |
| Quartz 同步 | quartz_syncer.py | wiki→content 同步 + Quartz 构建 + Git 自动推送 |
| 矛盾检测 | conflict_detector.py | 检测新旧内容矛盾,记录到 conflict_log.md |
| 处理追踪 | processed_tracker.py | 记录已处理文件,防止重复消化 |
| 飞书通知 | feishu_notifier.py | 消化完成/失败时发送飞书群消息 |
| 链接投喂 | link_digest.py | 独立工具,投喂网页链接和飞书文档链接 |
| 配置加载 | config_loader.py | 读取 config.yaml,支持环境变量覆盖 |
支持的文件格式
| 格式 | 扩展名 | 提取方式 |
|---|---|---|
| Markdown | .md | 直接读取 |
| 纯文本 | .txt | 直接读取(支持 UTF-8/GBK/GB2312) |
| HTML | .html/.htm | 直接读取 |
| PyPDF2 提取文本 | ||
| Word | .docx/.doc | python-docx 提取段落和表格 |
| Excel | .xlsx/.xls | openpyxl 提取工作表 |
| PPT | .pptx/.ppt | python-pptx 提取幻灯片文本 |
| 图片 | .png/.jpg/.jpeg/.bmp/.gif/.tiff/.webp | Tesseract OCR 中文+英文 |
| SVG | .svg | XML 解析提取文本节点 |
| 网页链接 | URL | requests + BeautifulSoup 爬取 |
AI 分析配置
# .env 文件
ANTHROPIC_AUTH_TOKEN=sk-xxx # API 密钥
ANTHROPIC_BASE_URL=https://zapi.aicc0.com # AI 中转端点
MODEL=glm-5.1 # 使用的模型
# 可用模型:glm-5.1 / deepseek-v4-pro / kimi-k2.6 / minimax-m2.7AI 分析返回四个维度:
- summary:核心概述(一句话)
- key_points:核心观点(3-5 条列表)
- key_concepts:关键概念(用于生成实体页)
- related_topics:相关主题(用于页面关联)
日常操作
每天早上
cd D:\yangzhen\workproject\软件工程\llm-wiki\company-wiki\auto
..\..\.venv\Scripts\python file_watcher.py
看到”文件监控已启动”后最小化窗口。
投喂素材
把文件丢进以下任一位置:
- 本地:
raw/articles/(文本类)或raw/pdfs/(PDF 类) - 共享盘:
\\Desktop-4qvmiga\视频共享\知识库投喂\对应子目录 - 链接:
python link_digest.py <URL>
查看结果
投喂后等待,飞书通知到达后 1-2 分钟访问 https://company-wiki.pages.dev
下班
在监控窗口按 Ctrl+C 关闭。
全自动化链路
投喂文件 → file_watcher 检测 → file_extractor 提取文本 → ai_analyzer AI 分析
→ digest_worker 生成页面 + 更新索引 → quartz_syncer 同步到 Quartz
→ quartz build 构建 HTML → git push 推送 GitHub → Cloudflare Pages 自动部署
→ 飞书通知
用户全程无需手动操作 git 或构建命令。