RSS 没死,死的是”刷完一堆未读”的耐心。订阅多了之后,传统阅读器就是一条永远滚不到底的河流,Google Reader 关了十几年,替代品换了一茬又一茬,信息过载这事反而更严重。最近翻到一个还在密集更新的自托管阅读器 RSSMonster(v2.2.0,2026-08-11 发版,仓库昨天还在提交),它的思路不是再加按钮,而是给 RSS 叠一层语义排序和可选 AI 助手,把”未读数”变成”值不值得读”。我把它跑起来试了几天,记录一下它到底是什么、怎么部署、以及那些文档没写太明白的坑。

它到底是什么
RSSMonster 是个自托管的 RSS 阅读器,前端 Vue 3、后端 Node + Express,数据库默认 SQLite(高并发可选 MySQL)。界面是经典的 Google Reader 三栏布局:左边订阅源、中间文章列表、右边阅读面板。但它在最上面叠了一层语义和排序逻辑,这是它和 FreshRSS、Miniflux 这类”纯粹聚合器”最大的区别。
传统阅读器按时间流排文章,RSSMonster 会给每篇文章打一组信号分:质量、新鲜度、原创度、来源信任度、关注度,还会把不同源报道的同一件事自动聚成一个可展开的事件,再往上归到主题(Topics)和个人兴趣岛(Interest Islands)。换句话说,它试图回答几个问题:这条现在该读吗?这只是转载洗稿吗?哪几个源在报同一件事?它属于哪条更大的线索?

为什么值得自己搭一个
三个理由。第一是降噪:Smart Folders 用可组合查询(比如 @today unread:true sort:recommended)生成动态视图,可以有”今日头条””值得读的长文””低噪音模式”,而不是一个混在一起的时间线。第二是数据自控:订阅、阅读状态、偏好全在本地库,OPML 随时导入导出,不被任何一个托管服务绑死。第三是能接回你习惯的客户端:它兼容 Fever API 和 Google Reader API,Reeder、ReadKit、FeedMe 这类手机端阅读器可以直接连,等于你同时拥有网页端和一个私有同步源。
怎么跑起来
最省事的方式是 Docker Compose。克隆仓库后在根目录放一个 .env(权限 600),至少填两个密钥:
JWT_SECRET=replace-with-a-long-random-secretFEVER_CREDENTIAL_SECRET=replace-with-a-long-random-secret
用 openssl rand -hex 32 生成即可。然后 docker compose up -d,打开 http://localhost:3000 建账户,数据落在容器的 /app/data 卷里。停服用 docker compose down 就行,千万别加 -v,否则数据库卷一起删了。SQLite 版单机够用,没外部依赖,半小时能跑通。
想上 AI 功能要再走一步。项目提供 docker-compose.mysql.yml,会拉起 Web、抓取 worker、AI worker、MySQL 8.4,以及本地推理用的 Qwen 嵌入模型和 ModernBERT 评分模型。首次启动会把模型下载到 inference-model-cache 卷,这一步比较吃带宽和磁盘。
AI 部分到底做了什么
RSSMonster 的 AI 分两层,得看清楚:
语义管道(本地可跑,默认就生效):用 Qwen3 Embedding 做 1024 维向量、ModernBERT 给文章打分、Qwen3.5 做文本生成和分类。事件聚合、主题归并、质量评分这些核心降噪能力是本地推理,不依赖任何外部 API,隐私上过得去。
AI 助手(可选,目前只接 OpenAI):这是一个通过 MCP 暴露的对话式助手,能自然语言搜文章、做摘要、打标签、发现趋势。但文档里写得很直白——助手对话的推理适配器目前只支持 OpenAI,本地 Qwen/ModernBERT 只负责嵌入、评分和生成,不接管聊天。想用助手就得配 OPENAI_API_KEY 和 ASSISTANT_MODEL(文档示例用 gpt-4o-mini)。

阅读体验本身有三种模式:Reader Mode(摘要+详情双栏)、List Mode(快速扫标题)、Expanded Mode(无干扰全文)。键盘快捷键、拖拽整理、暗色模式、移动端手势都齐,还能装成 PWA 离线用。正则过滤器可以按标题/作者/分类自动删除、加星、标记已读或标广告,自动化规则还算顺手。

几个坑,提前说清楚
1. AI 助手是 OpenAI 锁定的。 如果你冲着”纯本地 AI 阅读器”来,助手的聊天部分会让你失望——它只接 OpenAI。语义排序那层是本地,但对话助手不是。介意的话,把 INFERENCE_ASSISTANT_ENABLED 关掉,只用本地排序也完全够用。
2. 本地推理有资源账。 MySQL + 本地模型的完整栈首次会拉模型,磁盘和内存都要预留。我建议先跑 SQLite 轻量版确认顺手,再决定要不要上 AI 重栈。文档也提醒生产环境别用 latest 标签,要固定到发布的 sha-... 或 digest,避免某天镜像一动全站崩。
3. Node 版本要求不低。 源码部署需要 Node.js 22.x 以上。如果宿主机 Node 旧,直接走 Docker 更省心,别在裸机上跟依赖较劲。
4. 它仍是个年轻项目。 仓库虽老(最早 2013 年),但 AI 语义这层是这两年重写加的,目前约 500 stars、6 个 open issue,迭代很活跃但文档和边界还在变。当日常主力阅读器没问题,别指望它像商业产品那样有完整 SLA。
适合谁
如果你订阅源多、受够了信息洪流,又不想把阅读习惯交给某个随时可能关站的托管服务,RSSMonster 值得一试:轻量版一条命令起,本地排序就能把噪音压下去;愿意配 key 的话,AI 助手能再省一层手动整理。它的定位不是”又一个 FreshRSS”,而是”给自己配了个私人编辑部”——把判断交给算法,你只决定读不读。