Fluxio 信息流聚合:RSS、快照与本地优先的架构

Fluxio 是一个信息流聚合工具:横向切换多个信息源(新闻、博客、社区),一键收藏到 Obsidian。这篇文章是它的架构决策记录——尤其是三个核心取舍。

一、需求与定位

核 定 心 位 场 把 左 看 收 : 景 多 右 到 藏 本 : 个 横 好 同 地 信 滑 内 步 优 息 切 容 到 先 源 换 的 ( 来 → O 个 网 源 b 人 页 一 s 信 键 i 息 U 收 d 中 R 藏 i 枢 L ( a 存 n 列 内 ( 表 容 内 ) 全 容 放 文 入 进 , 库 一 不 , 个 只 可 " 是 离 信 链 线 息 接 读 流 ) ) "

二、架构总览

┌ │ │ │ │ ├ │ │ │ ├ │ │ │ └ ─ ─ ─ ─ 客 本 本 同 户 ├ ├ └ 地 ├ └ 地 ├ └ 步 ├ └ 端 ─ ─ ─ 服 ─ ─ 存 ─ ─ ( ─ ─ ( 务 储 O F 信 详 收 ( 浏 内 S 文 b 导 导 l 息 情 藏 收 览 容 Q 件 s 出 入 u 流 页 夹 件 器 快 L 系 i : : t 页 ( ( 箱 扩 照 i 统 d 收 O t 面 W 全 展 服 t ( i 藏 b e ( e 文 A / 务 e 快 a s r 横 b P 分 ( ( 照 n → i ) 向 V + I 享 U 收 d 切 i , 入 R 藏 H 双 M i 换 e 样 1 口 L 元 T 向 a a ) w 式 2 数 M ) r n ) 7 → → 据 L k / . d 笔 0 收 正 图 o 记 快 . 藏 文 片 w 照 0 入 快 全 ) n → 渲 . 库 照 文 染 1 ) ) 文 信 ) : 件 息 8 流 7 3 0 )

三、核心决策 1:WebView 还是快照

场景:信息流里点开一篇文章 → 详情页。

方 方 案 案 优 缺 优 缺 A 点 点 B 点 点 : : : : : : 直 原 依 抓 稳 样 接 站 赖 取 定 式 原 原 正 、 有 W 样 站 文 离 损 e 、 可 线 、 b 零 用 → 可 实 V 解 、 读 现 i 析 被 本 、 复 e 反 地 收 杂 w 爬 快 藏 拦 照 的 加 截 渲 是 载 、 染 " 原 内 当 容 时 U 会 的 R 被 完 L 改 整 / 内 删 容 "

决策:默认快照,WebView 兜底:

详 快 收 情 照 藏 页 失 败 = = / 想 快 本 上 照 地 原 全 快 站 文 照 ( ( → 不 抓 是 取 一 链 时 键 接 保 " ) 存 在 的 浏 览 H 器 T 打 M 开 L " )

为什么收藏必须存全文:链接会失效、内容会被改、离线要能读——收藏的语义是"保存这一刻的内容",不是"记住一个地址"。

四、核心决策 2:本地优先

❌ ✅ 本 地 云 本 优 隐 速 稳 可 端 地 先 私 度 定 控 架 优 的 ( ( ( ( 构 先 收 内 本 没 数 : : 益 容 地 网 据 所 数 : 不 也 是 有 据 出 S 能 文 收 先 设 Q 用 件 藏 落 备 L ) , 先 本 , i 可 上 地 除 t 备 云 , 非 e 份 , 同 你 可 再 步 选 毫 迁 同 是 同 秒 移 步 可 步 级 ) 设 选 ) ) 备 的 增 值

实现:SQLite 本地库 + Obsidian 目录同步(Markdown 文件)。

收 藏 流 扩 → 程 展 : / ( 分 可 享 选 ) → 同 步 本 到 地 收 O 件 b 箱 s i A d P i I a n → v 抓 a 取 u 快 l 照 t → 写 S Q L i t e + 写 M a r k d o w n 文 件

五、核心决策 3:收藏进 Obsidian 的格式

Obsidian 收藏的必须是"内容详情",不是链接:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
---
title: "AI 面试产品的幻觉治理"
source: "https://xxx.com/article/123"
collected: "2026-03-03 10:00"
tags: [AI, 面试]
---

# AI 面试产品的幻觉治理

(正文全文,图片本地化)

> 来源:[原文链接](https://xxx.com/article/123)

关键点:

✅ ✅ ✅ ✅ 正 图 元 原 文 片 数 文 全 本 据 链 文 地 接 ( 化 f 保 不 ( r 留 是 不 o ( 摘 然 n 可 要 t 溯 ) O m 源 b a ) s t i t d e i r a ( n 可 检 离 索 线 / 看 可 不 统 到 计 图 ) )

六、收件箱:任何 App 都能"分享进来"

浏览器扩展(MV3):

C h r o m e 扩 展 : 右 键 " 分 享 到 F l u x i o " → P O S T 到 h t t p : / / 1 2 7 . 0 . 0 . 1 : 8 7 3 0 / i n b o x

移动端分享(规划):系统分享菜单 → 调本地服务。

收 件 箱 P G G P O E E O A S T T S P T T I ( / / / / 1 i i i s 2 n t t y 7 b e e n . o m m c 0 x s s . o 0 : b . i s 1 d i : d 8 i 7 a 3 接 列 详 n 0 收 出 情 ) 分 收 : 享 藏 触 ( 发 U R O L b / s 标 i 题 d / i 正 a 文 n / 来 同 源 步 )

本地 API 的安全:绑定 127.0.0.1,token 校验,防局域网滥用。

七、技术栈与取舍

层 选择 原因
客户端 Flutter(Windows 先,移动后) 一套代码多端
本地服务 Dart(同语言) 减少栈
存储 SQLite + 文件 本地优先标配
抓取 无头浏览器 / HTTP 解析 按站点适配
同步 Markdown 文件 Obsidian 原生格式

八、踩坑记录

  1. 快照样式丢失:抓的 HTML 缺 CSS → 渲染"裸奔" → 内联关键样式 + 阅读模式兜底
  2. 图片外链失效:快照只存了正文没存图 → 图片本地化(下载到本地目录)
  3. 收件箱 API 与浏览器安全:网页 JS 不能直接调本地 API → 用扩展(有权限)+ CORS 限制
  4. Obsidian 同步冲突:双端同时写同一文件 → 文件按时间戳命名 + 冲突保留

九、路线图

V V V V 1 2 3 4 ( : : : 已 移 多 A 完 动 设 I 成 端 备 ) ( 同 摘 : T 步 要 W a ( ( i r 可 收 n o 选 藏 d 云 自 o 小 端 动 w 程 ) 打 s 序 标 签 客 + / 户 摘 端 F 要 l ) + u t 信 t 息 e 流 r ) + 快 照 收 藏 + O b s i d i a n 同 步

总结

Fluxio 的核心认知:

  1. 收藏存全文不存链接:内容会失效,快照才是"收藏"
  2. 本地优先:数据在自己手里,同步是增值不是依赖
  3. 收件箱模式:任何 App 分享进来 = 统一入口
  4. Obsidian 同步用 Markdown:原生格式,双向不折腾

信息流工具的本质:把"信息经过"变成"信息资产"。快照 + 本地 + 可同步,让每次阅读都有沉淀。