☰
为什么xikipedia的隐私设计如此彻底?本地推荐、零数据外泄完整说明
2026/10/15 18:46:42 网站建设 项目流程

【免费下载链接】xikipedia

Wikipedia as a social media feed

项目地址:https://gitcode.com/gh_mirrors/xi/xikipedia
点击查看免费下载

xikipedia 是一款把 Wikipedia 变成社交信息流的网页应用,它的推荐算法完全运行在浏览器本地——没有服务器账号、没有行为采集,任何浏览数据都不会离开你的设备。这篇文章带你完整拆解 xikipedia 的本地推荐机制,以及它如何实现零数据外泄的隐私设计。

xikipedia 是什么:一个纯本地运行的维基信息流 📖

xikipedia 的核心概念可以概括为一句话:Wikipedia as a social media feed(把维基百科做成社交信息流)。

  • 内容全部来自 Simple Wikipedia(简单英语维基百科),以"帖子"形式无限滚动推送给你
  • 推荐算法在你自己的浏览器里运行,不使用任何机器学习,也不借用其他用户的数据
  • 首次加载完成后,整个应用可以完全离线使用,还能一键安装成 PWA 应用

它的定位本身就说明了一切:这是一个刻意用来证明"哪怕是最简单的本地算法,也能快速学会你的偏好"的演示项目。正因为不需要服务器参与推荐,它天然就做到了零数据外泄。

项目说明:README.md

零数据外泄:xikipedia 到底不上传什么?🔒

很多人担心"信息流"就意味着"被监控"。xikipedia 的做法是从架构上根除这个可能:

数据存储位置是否离开设备
推荐算法的评分数据(profile)浏览器localStorage❌ 从不上传
你看过/点赞过的帖子记录浏览器localStorage❌ 从不上传
观看时长统计浏览器localStorage❌ 从不上传
偏好分类、主题等设置浏览器localStorage❌ 从不上传
维基百科文章内容与图片Service Worker 缓存 + 按需请求仅你主动查看的内容

几个关键设计点:

  • 没有后端 API:整个应用的全部逻辑都写在 index.html 里,页面与服务器之间不存在"上报"通道
  • 可选的本地存储开关:设置里有一项 "Store data",可以彻底关闭本地数据保存——关闭后每次打开都从零开始,连localStorage里都不留痕迹(见 index.html)
  • 一键重置:设置页提供 "Reset the algorithm" 与 "Delete all data" 两个按钮,随时清空算法记忆(见 index.html)
  • 唯一的外部请求是展示维基百科图片和你点开文章本身,属于你主动发起的内容请求,不携带任何行为数据

换句话说:它不是"承诺不上传",而是"根本没有地方可以上传"。

本地推荐算法:不联网也能"懂你" 📊

xikipedia 的推荐机制非常透明,核心就两部分:分类评分 + 加权抽取。

1. 每条帖子都带一组"标签"

每条帖子会收集它的 Wikipedia 分类树(含递归子分类)以及正文里的页面链接,作为可评分的标签集合。

2. 你的每个动作都会给标签加减分

评分逻辑集中在engagePost函数中(index.html):

你的行为对标签的评分变化
滚动划走一条帖子-5
点赞一条帖子+50,且每多划走一条再点赞额外 +4
点击打开文章+75
点击查看大图+100

3. 从 1 万条候选中"抽签"选出下一条

getNextPost函数(index.html)每次从数据集中随机抽 10000 条帖子计算总分,然后按概率三选一:

  • 40%:按分数加权随机——分数越高的帖子越容易被抽中
  • 42%:直接展示当前分数最高的帖子
  • 18%:完全随机,保证信息流不会变成"信息茧房"

另外两条细节让推荐体验更好:看过的帖子会被按观看次数指数级重罚,避免重复刷到同一条;而given names、surnames这类过于泛滥的分类默认 -1000 分,防止信息流被人名淹没。

💡 整个过程只需要读取你设备上的帖子数据和评分表,无需网络参与。

第二次起完全离线:Service Worker 本地缓存在工作 📲

xikipedia 首次加载会下载约 34MB 的数据文件 smoldata.json.br(包含 Simple Wikipedia 的帖子数据),之后一切由 Service Worker 接管:

  • sw.js 把页面文件和smoldata.json分别存入本地缓存,优先读缓存、离线时直接返回缓存内容
  • 下载进度通过 Service Worker 的progressMonitor实时推送给页面,让你知道加载到百分之几
  • 版本升级通过 version.json 检测,自动清缓存并更新
  • 配合 app.webmanifest 声明的 PWA 能力,点击安装按钮即可把它装成独立应用

也就是说:断网、飞行模式、地铁里,信息流照刷不误,而且照常被"本地算法"个性化。

快速上手:本地部署体验 xikipedia 🚀

xikipedia 是纯静态项目,没有构建步骤:

git clone https://gitcode.com/gh_mirrors/xi/xikipedia

克隆后直接用任意静态服务器打开目录根部的 index.html 即可体验。

想生成自己的数据文件?仓库里的 process_data.py 会解析 WikiMedia 官方数据 dump(文章 XML + 页面链接 SQL),输出结构化的smoldata.json——替换这个文件,信息流内容就随你定制。

常见问题:本地推荐真的靠谱吗?✅

Q:不用机器学习,效果能好么?

能。xikipedia 就是用来证明:一个简单的基于分类计分的算法,在你浏览几十条帖子后就能明显感觉到"它懂我了"。而且因为没有模型黑箱,每一分是怎么加上去的,你都能在源码里查到。

Q:它会不会偷偷记录我的浏览?

不会。所有数据只存在于你浏览器的localStorage中,你可以随时通过设置里的 "Delete all data" 一键清除;关闭 "Store data" 后更是完全不留痕。

Q:离线模式下推荐还个性化吗?

会。推荐算法读取的是本地评分表和缓存的帖子数据,与网络状态无关。

Q:代码开源吗?

开源,AGPLv3 协议(见 LICENSE)。正因为完全开源,"零数据外泄"这句话是可以逐行验证的。

总结

xikipedia 的隐私设计之所以彻底,靠的不是隐私政策的措辞,而是架构上的三个选择:没有后端(数据无处可传)、算法全在浏览器本地(推荐不依赖任何服务器计算)、本地缓存 + 可选持久化(数据存与不存由你决定)。如果你想研究"如何在不收集用户数据的前提下做个性化推荐",这个小型项目是一个值得逐行阅读的完整样例。

【免费下载链接】xikipedia

Wikipedia as a social media feed

项目地址:https://gitcode.com/gh_mirrors/xi/xikipedia
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询