安全与数据流,写成你能亲手核对的样子
你的文档在一个浏览器标签页里完成解析、分块、向量化、建索引和检索。这一页把每一步对应到具体位置,列出维持这个状态的四道防线,并给出用开发者工具确认全过程的步骤。
最后更新:
这个应用里没有上传路径,所以也没有文档存储、没有队列、没有日志、没有一行数据库记录装着你的文件。整站唯一会发出的请求,是一次按文件名索取模型权重的普通文件下载。
一份文档的完整旅程,逐步对照
| 步骤 | 在哪里执行 | 会离开你的设备吗 |
|---|---|---|
| 你把 PDF、DOCX、Markdown 或纯文本文件拖进页面 | 你的浏览器,通过本地 File API 读入内存 | 不会 |
| 识别文件格式 | 你的浏览器——读文件头部的魔数,不看扩展名 | 不会 |
| 抽取文本(PDF 文字层、Word 标题层级、Markdown 结构) | 你的浏览器——解析器编译进站点,由我们自己的文件提供 | 不会 |
| 清洗、分块、块间重叠 | 你的浏览器,在 Web Worker 里 | 不会 |
| 把每个文本块转成向量 | 你的浏览器——onnxruntime 的 WebAssembly 或 WebGPU 版本,都随站点自带 | 不会 |
| 写入索引(文本块与向量) | 你的浏览器——IndexedDB,在你自己的浏览器配置目录里 | 不会 |
| 模型权重,仅在首次使用时 | 公开模型托管站:HuggingFace 或镜像 | 会——一个只带文件名的 GET 请求 |
| 你的提问 | 你的浏览器——用同一个本地模型转成向量 | 不会 |
| 检索:向量检索与关键词检索,然后融合 | 你的浏览器 | 不会 |
| 拼接回答,或本地生成回答 | 你的浏览器 | 不会 |
| 引用、复制、打印、导出 | 你的浏览器 | 不涉及任何请求 |
| 广告,只出现在有广告位的页面 | Google AdSense,且只在你同意加载广告脚本之后 | 会——仅限页面层面,绝不进入聊天工作区 |
| 删除全部数据 | 你的浏览器——清除站点数据 | 不需要任何请求,删除是本地且立即的 |
四道防线
一、代码层:不存在可以关掉的上传路径
整个站点是一组静态 HTML、CSS 和 JavaScript 文件。没有服务端代码、没有数据库、没有账号系统,也没有接收文档的接口,所以也不存在以后被错误配置的可能。每个页面都带内容安全策略(CSP),限制页面能连接到哪里:模型托管站及其文件分发域名,以及在少数带广告的页面上,Google 的广告域名。这一页也带广告位。
- 没有统计 SDK、没有会话录制、没有热力图脚本、没有在线客服组件。
- 没有第三方字体或脚本 CDN:字体和 onnxruntime 的 WebAssembly 版本都由本站自己提供。
- 模型托管方只是一个普通文件服务器。它收到一个文件名,返回一个文件,我们从来没给它留过接收内容的地方。
- 带广告的页面同样拿不到文档内容,因为广告脚本运行在页面框架里,而你的文本和向量在 Worker 里,两者不在一处。
二、可验证层:流量你自己就能看
应用里有一个「网络盾牌」面板,把页面在工作期间发出的每个请求都列出来——主机、路径、体积、用途——任何不在公开白名单里的请求都会被标出来。它存在的意义,是让这一页上的说法能对照你浏览器实际看到的东西,而不是靠相信我们。下面的开发者工具步骤做的是同一件事,用的是你不需要信任任何人都能用的工具。
三、展示层:模型下载前要你确认
超过 30MB 的文件都要确认,实际上每一个模型文件都在确认之列:面板会把文件名、精确体积、来源主机和许可写在上面,然后才开始传输。页面加载时不会下载,你打字时也不会偷偷下载。全部体积与许可在《模型》一页里完整列出。
四、法律层:可以拿来要求我们的承诺
隐私政策写明我们不收集什么,不只是写明收集什么;使用条款写明你的文档始终属于你。两页都带最后更新日期,行为变了,这两页就会变,而不是只在更新日志里悄悄提一句。
五分钟,自己把上面的话验一遍
同时打开工具页和开发者工具
按 F12,Mac 上按 Command-Option-I,切到 Network 面板。勾上「Preserve log」,这样刷新一次也不会把证据冲掉。
清空请求列表
点清空按钮,从一个空列表开始。之后出现的任何请求,都是你接下来的操作导致的。
添加一份文档
拖入一个 PDF,看着索引进度走。浏览器解析、分块、向量化的过程中,请求列表一直是空的。
连问三个问题
依然是空的。检索、排序、检索档的回答都在本地完成,列表本身就是证据。
制造那唯一一次模型请求
换一个全新的浏览器配置目录,或先清除站点数据,再问一次。你会看到发往模型托管站的一个请求:路径里是模型文件名,没有和你内容相关的查询串,没有 Cookie,没有请求体。
断网之后继续用
把 Network 面板切到 Offline,再问一个问题。它照样带引用回答出来——如果有任何东西被发走,这一步不可能成立。
删掉一切,看看少了什么
切到 Application 面板:IndexedDB 里是你的文本块和向量,Cache Storage 里是模型权重。清除站点数据、刷新,文档库空了。别处没有副本可以恢复。
安全边界:我们控制不了的部分
只讲优点的页面是广告,不是安全页。下面这些风险在应用之外,我们不假装它们不存在。
- 带口令或加密的 PDF 打不开。这里没有解密环节,所以你得到的是一条报错,而不是一半内容。
- 没有文字层的扫描件抽不出可用文本。站内不带 OCR 引擎,我们会直接说明,而不是返回一个空回答。
- 体积限制是硬性的,不是藏着不说的:单文件 25MB、单个库最多 40 份、总量 200MB、最多 20,000 个文本块。超出就在一开始被拒绝。
- 在共用或公共电脑上,文档库就存在那台电脑的浏览器配置里。能用这个配置的人就能打开你的文档。用完请用隐私窗口,并清除站点数据。
- 我们的存储放在 IndexedDB 里,应用本身不做加密。真正保护它的是你系统的磁盘加密和浏览器配置加密,或者两者都没有——这部分是你设备的事,不是我们的。
- 有读取页面权限的浏览器扩展可以读到页面、页面上显示的文字,以及页面能接触到的数据。我们拦不住这类扩展。检查一下你装了哪些扩展,比相信任何网站都重要。
- 恶意软件、键盘记录程序,或者能物理接触你设备的人,能做到任何基于浏览器的工具都拦不住的事。
- 截图、打印出来的页面、下载下来的副本,都会脱离浏览器的保护——因为它们已经是设备上普通的图片和文件了。
- 本地数据丢失是真实风险:清除站点数据、浏览器清理工具、或者被重置的配置,都会带走索引,而我们这边没有任何备份可以还给你。
报告安全问题
写信到 guweiicy@gmail.com,附上浏览器和版本号、能复现问题的步骤,以及你在开发者工具里看到的异常。这是一个小项目,没有漏洞赏金计划,我们宁愿把这话说清楚,也不愿暗示一个并不存在的奖励。确认属实的问题会修掉,并写进更新日志。