个人知识管理 / 技术内容方向。立项原因:我写过的文章散在多个第三方平台,旧笔记翻不出来;面试题复习只在收藏夹和备忘录里,没有进度也没有错题沉淀;第三方平台还限制样式和导出,问答只能用它们自己的语料。所以我把三件自己每天在用的事做进一套系统:内容自己拥有(文章、图片、题库都落在自己的数据库,可导出可迁移)、检索自己做(向量 + 关键词混合召回,答案带可核对的引用)、复习成闭环(每天一组题、AI 批改、错题本沉淀)。同样的结构也适用于企业知识库、内部文档问答、技术培训题库和自媒体内容站。
1. 读者端(www.minggui98.vip):文章列表与详情、分类、标签、站内搜索,深色主题,正文带侧边目录和阅读进度,适合长技术文。
2. 知识库问答(同站 /ask):提问先做向量 + 关键词混合检索,再把命中片段交给大模型作答,每条答案附可展开的引用来源;没有资料支撑时明确说无法回答,不编造。
3. 题刻(dailyq.minggui98.vip):每天一组高频面试题,先写自己的答案再对照参考答,AI 批改给分和点评;另有 165 题库检索、错题本、我的题库,浏览器可装成应用,每天中午定时推送提醒。
4. 作者端(admin.minggui98.vip):Markdown 写作、图片库、知识库数据集导入与切块、题库与评分模型配置、站点设置和账号角色管理。
5. 一套账号打通三个站:角色 + 动作级权限,网关统一鉴权、CSRF 与限流。
我从架构到运维独立完成全部环节,没有第二个人参与。
架构:v1 的单体按业务边界拆成 6 个服务——网关(鉴权、CSRF、限流、路由)、账号权限、内容、媒体、每日一题、知识库,另有 3 个独立构建的 React 前端;外部只有网关一个入口,服务间调用必须带内部令牌。
后端:Spring Boot 3.5 / Java 21,MyBatis-Plus + Flyway 管库版本,Result 信封与 traceId 贯穿全链路,全局异常与权限过滤下沉到公共 starter 复用。登录用 JWT + 会话表 + 网关内省,解决“票没过期但已作废”的撤销、空闲超时、首登改密和 CSRF。
数据与 AI:MySQL 8 存业务数据,PostgreSQL + pgvector 存切块向量做混合检索;题库侧有每日题组缓存和冷却历史,保证短期不重复。大模型(DeepSeek / GLM / 通义)统一走自建网关,密钥 AEAD 加密落库,业务服务拿不到明文。
部署:一台 2C8G 云主机跑 10 个容器(Docker Compose),Nginx 三个子域;发版脚本带镜像记录、健康检查(冷启动约 90 秒,窗口 150 秒)和失败自动回滚;日志进 SLS,指标进 Grafana。
踩过的坑:题库为空时把 0 题写进缓存、之后一直命中坏缓存,加了缓存自愈并按用户 key 一并失效;Web Push 密钥轮换后老订阅返回 403,前端改成公钥不一致就自动重订阅;容器内与宿主机数据目录配错会让加密密钥文件不可见,导致所有模型 Key 解密失败,最后拆成两个变量。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论