知识库管理系统 - 需求与决策记录
1. 项目背景
用户拥有大量收藏文章(md / txt / 链接 / 视频),希望建立一个本地知识库管理系统:
- 通过分级标签体系组织知识
- 通过 LLM 自动分析文章主题并归类
- 同主题文章聚合为单一知识 MD
- 完整的变更追踪(类似 git diff)
- 通过前端 UI 进行所有操作
2. 原始需求
| 编号 |
需求 |
| R1 |
使用 tag-system 技能建立分级标签管理体系 |
| R2 |
LLM 分析文章主题,在已有体系中匹配标签;找不到时可在当前体系下新增标签类别 |
| R3 |
同主题文章聚合为一篇 MD 知识(如"大模型部署方法.md") |
| R4 |
记录每篇文章对聚合知识的变更(描述 + 变更行),支持类似 git diff 的展示 |
| R5 |
前端:标签管理 + 文章录入 + 知识查看(含时间轴) |
| R6 |
文章格式支持 md/txt/链接,视频暂缓 |
| R7 |
Spring Boot + Vue 架构,fullstack-merge-deploy 技能合并部署,端口 7945 |
3. 关键决策(已确认)
| 决策点 |
选择 |
说明 |
| 数据库 |
MySQL 8+ |
JSON 字段足够使用,部署熟悉度高 |
| LLM 接入 |
OpenAI 兼容 |
通过 base_url + api_key + model 配置 |
| 聚合粒度 |
LLM 主题自由生成 |
LLM 根据文章归纳主题名,匹配现有 knowledge 标题,避免重复 |
| 版本策略 |
全量快照 |
每次变更保存完整 MD 内容,同时存 diff 行便于时间轴展示 |
| 链接处理 |
自动抓取 + 手动回退 |
Jsoup + readability 解析,失败弹窗提示手动贴入 |
| 用户认证 |
单用户登录 |
JWT,首次启动引导设置管理员账号 |
| 标签初始状态 |
全手动构建 |
空白启动,所有分类由用户手动创建 |
| LLM 配置 |
前端配置 + DB 存储 |
api_key 用 AES 加密入库 |
4. 非功能性要求
- 端口:7945(合并部署)
- Java:17(Spring Boot 3.2 最低要求)
- 构建:Maven
- 包名:
com.knowledge.extractor
- 编码:UTF-8 全链路
5. 范围排除
- ❌ 视频文章解析(后续迭代)
- ❌ 多用户 RBAC(仅单用户)
- ❌ 移动端适配(PC 优先)
- ❌ 全文搜索引擎接入(MySQL LIKE 即可,后续可加 ES)