Folo 开源 AI RSS 阅读器全解析:产品特性、多端生态与仓库架构
Folo 是一个以“把所有内容聚合进同一条时间线”为核心设计理念的开源 AI RSS 阅读器,配套桌面端、移动端与浏览器 Web 端,并支持列表(List)共享、收藏集与创作者经济等社区化玩法。本文以仓库根目录 README.md 为骨架,结合源码目录与工程配置,系统梳理 Folo 的产品定位、安装方式、核心功能模块、代码签名策略与许可证边界,供开发者快速评估项目并理解其技术全貌。
Folo 是什么:一款“去噪”的聚合阅读器
仓库根目录 package.json 对项目的描述是 “Follow everything in one place”,README 则用一句话点出了产品哲学:“As they say, your thoughts are what you read——we’ve been consuming noisy feeds for too long!”(你的想法取决于你读了什么,而我们已经忍受嘈杂的订阅源太久了)。
Folo 的核心价值在于把分散在各类网站、RSS 源、视频与音频平台上的内容统一收进一条信息流,并通过以下手段实现“无噪音”(noise-free):
- 将订阅内容组织为单一时间线(one timeline),只更新你真正关心的事物;
- 支持分享列表(Share lists) 与 收藏集(Explore collections),形成公开的信息发现机制;
- 提供无干扰浏览(distraction-free browsing) 体验。
值得注意的是,README 明确提示 Folo 目前处于活跃开发阶段(under active development),遇到任何问题都可以在项目的 Issues 中反馈。这也是评估该项目状态时的重要前提:功能和 API 仍在快速演进。
从仓库结构看,Folo 并非单端应用,而是一个由 pnpm workspaces + Turbo 管理的 monorepo(见 AGENTS.md),apps/ 下并存着多套客户端与服务端应用:
| 应用目录 | 形态 | 依据 |
|---|---|---|
apps/desktop |
Electron 桌面应用(渲染层同时是主 Web 应用) | apps/desktop/AGENTS.md |
apps/mobile |
基于 Expo 的 React Native 移动应用 | apps/mobile/README.md |
apps/ssr |
面向外部分享的最小 SSR 站点 | AGENTS.md |
apps/landing |
产品落地页(Next.js,含 discover-sources.json 等资源) |
目录结构与 next.config.mjs |
apps/cli |
面向终端与 AI Agent 的命令行客户端 | apps/cli/skill.md |
apps/ota |
多端版本与更新相关的服务接口 | apps/ota/src/routes 目录结构 |
其中桌面端的渲染进程是一个 Vite + React 的 SPA(apps/desktop/AGENTS.md),既可以跑在 Electron 壳内,也可以独立作为 Web 应用运行——这正是“一套 UI、多端分发”的基础。
获取与安装:多端分发渠道一览
README 给出了覆盖主流平台的官方获取渠道,整理如下:
| 操作系统/平台 | 获取渠道 |
|---|---|
| 任意平台(Web) | 官方 Web 端(浏览器直接使用,无需安装) |
| iOS | App Store(应用名 Folo - Follow everything) |
| Android | Google Play 等应用商店分发 |
| macOS | Mac App Store + GitHub Releases 安装包 |
| Windows | Microsoft Store + GitHub Releases 安装包 |
| Linux | GitHub Releases 安装包 |
除此之外,社区还维护了多种包管理器安装方式(README 中分别注明了维护者):
- Arch Linux:AUR 软件包
folo-appimage; - Nix:nixpkgs 中的
follow包; - macOS:Homebrew Cask
folo(命令形如brew install --cask folo); - Windows:Scoop 清单
folo。
开发者视角:从源码构建运行
如果你想在本地启动任一客户端进行开发,可参考仓库根目录 AGENTS.md 中记录的标准流程(前提:已启用 Corepack,Node.js/pnpm 环境就绪):
# 1) 安装全部依赖(workspaces 会按依赖关系构建 packages)
pnpm install
# 2a) 桌面端 —— 推荐:浏览器渲染模式(更快,无需 Electron 壳)
cd apps/desktop && pnpm run dev:web
# 2b) 桌面端 —— 完整 Electron 模式
cd apps/desktop && pnpm run dev:electron
# 2c) 移动端 —— Expo 开发服务器 / 指定平台
cd apps/mobile && pnpm run dev # 或 pnpm run ios / pnpm run android
# 2d) SSR 站点
cd apps/ssr && pnpm run dev
构建面向 Web 的分发包则可在根目录执行 pnpm run build:web。仓库的质量门禁也定义在 AGENTS.md 中:提交前需依次通过 pnpm run typecheck → pnpm run lint:fix → pnpm run test。
此外,若你是 AI Agent 或希望用脚本化方式操作 Folo(管理订阅、读时间线、标注已读、导入导出 OPML 等),仓库在 apps/cli/skill.md 中给出了完整的命令行工作流(例如通过 npx folocli@latest timeline --limit 10 拉取时间线、以 entry mark-read 标记已读),可作为二次开发与自动化集成的参考。
核心功能特性详解
README 的 Features 章节归纳了四大能力支柱,本仓库的源码模块划分与之高度对应。
1. 个性化信息中枢(Customized Information Hub)
Subscribe to a vast range of feeds and curated lists. Curate your favorites and keep track of what matters most to you.
Folo 支持订阅海量 Feed 与经过策展的列表(List),并可对收藏内容做精细化管理。在桌面渲染层源码 apps/desktop/layer/renderer/src/modules 中,可以看到与该能力直接对应的模块:
discover/、trending/:内容发现与趋势榜单;rsshub/:对接 RSSHub 生态、扩充订阅源(仓库常量包中亦单独导出rsshub相关常量,见 packages/internal/constants/src/index.ts);feed/、subscription-column/、entry-column/:订阅源管理与时间线列;list/与collection相关的列表/收藏集能力。
移动端同样具备 discover/、rsshub/、spotlight/、subscription/ 等平行模块(见 apps/mobile/src/modules),印证了信息中枢能力是跨端一致的。
2. AI 触手可及(AI At Your Fingertips)
A smarter and more efficient browsing with AI-powered features like translation, summary, and more.
README 将 AI 能力定位为“让浏览更聪明、更高效”,典型能力包括翻译与摘要。源码层给出了直接证据:
- 桌面端存在完整的
ai-chat/、ai-chat-session/、ai-task/、ai-onboarding/模块群(见上文的 modules 目录),并在ai-chat/components/welcome/EntrySummaryCard.tsx等组件中实现“文章摘要卡片”类 UI; - 移动端在 apps/mobile/src/modules/ai/summary.tsx 与
entry-content/EntryAISummary.tsx提供摘要渲染,列表模板中还包含EntryTranslation.tsx(翻译入口)等组件; - 在客户端状态层 packages/internal/store/src/modules/action/constant.ts 中,定义了一组以
summary、translation为代表的 action 常量与对应的翻译选项,说明“AI 摘要/翻译”是一套被状态管理、任务调度与 UI 共同引用的正式动作体系,而非一次性实验功能。
可以推断,这些动作会进一步对接任务队列与 AI 服务,构成“读原文 → AI 摘要/翻译 → 沉淀到会话”的完整链路;具体模型接入细节随版本演进,建议以 apps/desktop/layer/renderer/src/modules/ai-chat 与 apps/mobile/src/modules/ai 下源码为准。
3. 动态内容支持(Dynamic Content Support)
From articles to videos, images to audio — Folo gets it all covered.
Folo 明确“内容不止是文本”,将文章、视频、图片与音频一并纳入支持范围。仓库证据包括:
- 桌面端
modules/中存在player/(播放器)与download/(下载)模块; - 移动端同样存在
player/模块; - 移动端条目列表模板按内容形态拆分渲染,例如
EntryListContentArticle.tsx、EntryListContentPicture.tsx、EntryListContentVideo.tsx、EntryListContentSocial.tsx以及模板目录下的EntryVideoItem.tsx等(见 apps/mobile/src/modules/entry-list)。
这使 Folo 既能处理传统 RSS 文本,也能承载 YouTube 类视频订阅、图片流与播客/音频场景,从而贴近“Follow everything”的产品名与 package.json 中 “Follow everything in one place” 的描述。
4. 不止于应用:社区与开放生态(More Than Just An App)
Folo is a community — introducing a new era of openness and community-driven experience.
这一部分是 Folo 与普通 RSS 阅读器拉开差异的地方。README 强调其“社区驱动”属性,源码中也能找到支撑性模块:
- 桌面端存在
claim/(认领)、power/、wallet/等模块,指向面向创作者/订阅经济的权益体系(移动端 apps/mobile/README.md 中亦提到$POWER创作者经济集成); list/相关的共享列表能力允许用户把精选订阅源整理成列表公开分享,配合收藏集形成“人人为我”的发现网络;integration/、command/、spotlight/等模块提供扩展与快捷操作入口。
从这些目录命名可以推断,Folo 试图把阅读行为、内容策展与创作者激励连接起来,形成闭环生态。不过具体经济模型与激励规则的细节,仍需以实际产品与后续版本文档为准。
贡献指南
README 鼓励开发者加入开源社区共建,并指向根目录 CONTRIBUTING.md(其中包含行为准则与协作流程的进一步说明,仓库另见 CODE_OF_CONDUCT.md)。
若你计划为 Folo 提交代码,请务必先阅读各层级的 AGENTS 指南,它们约定了工程约定:
- 根目录 AGENTS.md:monorepo 全局规则(TypeScript 严格模式、Jotai/Zustand/TanStack Query 分工、Drizzle + SQLite 数据库、i18next 扁平 key 国际化、质量门禁顺序等);
- apps/desktop/AGENTS.md:Apple UIKit 色板与 Tailwind 令牌、MingCute 图标(
i-mgc-前缀)、Framer Motion 的m.*用法、玻璃拟态深度设计系统等; - apps/mobile/AGENTS.md:React Native 侧的颜色令牌与 Expo 开发流程。
组件放置也有明确约定:通用可复用组件放入 packages/internal/components 并从包索引导出,业务相关组件则留在各 App 的 modules/ 下。
代码签名与安全策略
README 明确说明了三端产物的签名与来源验证方式,适用于所有官方发布的二进制:
- Windows:使用 SignPath.io 提供的免费代码签名,证书来自 SignPath Foundation;
- macOS / iOS:经 Apple Developer Program 签名并由 Apple 公证(notarized);
- 全平台发布产物:均通过 GitHub artifact attestations 进行校验,用于保证文件来源与完整性(防篡改/防投毒)。
这一点对安全敏感的企业用户尤为重要:下载安装包后可核对官方的产物签名与 attestation 记录。
许可证与法律边界
Folo 采用 GNU Affero General Public License version 3(AGPL-3.0),这一点同时体现在根目录 LICENSE 与 package.json 的 "license": "AGPL-3.0-only" 字段上,并附带了以下特殊例外条款(README 明确声明):
All content in the
icons/mgcdirectory is copyrighted by https://mgc.mingcute.com/ and cannot be redistributed.
即 icons/mgc 目录内的图标资产版权归 MingCute(mgc.mingcute.com)所有,禁止再分发。这意味着若你在其他项目中复用本仓库代码,AGPL-3.0 的开源义务并不覆盖这批图标素材,须注意将二者区分处理。
小结
从这份 README 出发可以看到,Folo 是一个典型的产品驱动型开源项目:它用“单条时间线 + AI 辅助 + 全内容形态支持 + 社区列表/激励”的组合来重新定义聚合阅读,并在工程上通过 pnpm/Turbo monorepo 把 Electron 桌面端、Expo 移动端、SSR 站点、CLI 与 OTA 服务统一管理。对想评估其技术实现的开发者,建议从 AGENTS.md 入手理解架构约定,再按 apps/desktop/layer/renderer/src/modules 与 packages/internal 的实际代码逐模块深入;对只想试用产品的用户,则可根据上文渠道选择 Web、移动端或桌面端快速开始。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00