293 lines
13 KiB
HTML
293 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>隐私与安全 - PeopleLib</title>
|
||
<meta name="description" content="PeopleLib 的隐私与安全设计:书库笔记批注全部留在本地,AI 助手完全自带密钥且密钥经系统 safeStorage 加密,正文只在用户确认后外发,渲染进程无法读取任意路径,不解除 DRM。">
|
||
<meta name="theme-color" content="#fbfaf7" media="(prefers-color-scheme: light)">
|
||
<meta name="theme-color" content="#12141a" media="(prefers-color-scheme: dark)">
|
||
<link rel="canonical" href="https://reader.mesalogo.com/privacy.html">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="assets/icon-light-32.png" media="(prefers-color-scheme: light)">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="assets/icon-dark-32.png" media="(prefers-color-scheme: dark)">
|
||
<link rel="apple-touch-icon" href="assets/icon-light-256.png">
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:site_name" content="PeopleLib">
|
||
<meta property="og:locale" content="zh_CN">
|
||
<meta property="og:title" content="隐私与安全 - PeopleLib">
|
||
<meta property="og:description" content="数据留在本地,AI 自带密钥,正文不自动外发,渲染层无法读取任意路径。这些是架构约束,不是可选开关。">
|
||
<meta property="og:url" content="https://reader.mesalogo.com/privacy.html">
|
||
<meta property="og:image" content="https://reader.mesalogo.com/assets/og-cover.jpg">
|
||
<meta property="og:image:width" content="1200">
|
||
<meta property="og:image:height" content="630">
|
||
<meta property="og:image:alt" content="PeopleLib 书库界面截图与应用图标">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:image" content="https://reader.mesalogo.com/assets/og-cover.jpg">
|
||
<link rel="stylesheet" href="assets/style.css">
|
||
</head>
|
||
<body>
|
||
<a class="skip-link" href="#main">跳到主要内容</a>
|
||
|
||
<header class="site-header">
|
||
<div class="wrap">
|
||
<a class="brand" href="index.html">
|
||
<img class="brand-light" src="assets/icon-light-256.png" alt="" width="30" height="30">
|
||
<img class="brand-dark" src="assets/icon-dark-256.png" alt="" width="30" height="30">
|
||
<span>PeopleLib</span>
|
||
</a>
|
||
<nav class="site-nav" aria-label="站点主导航">
|
||
<ul>
|
||
<li><a href="index.html">首页</a></li>
|
||
<li><a href="features.html">功能</a></li>
|
||
<li><a href="privacy.html" aria-current="page">隐私</a></li>
|
||
<li><a href="download.html">下载</a></li>
|
||
<li><a href="faq.html">常见问题</a></li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</header>
|
||
|
||
<main id="main">
|
||
|
||
<section>
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">隐私与安全</span>
|
||
<h1>你的书库只属于你</h1>
|
||
<p>
|
||
下面这些不是隐私政策的模板文字,而是应用实际的架构约束。它们决定了某些事情在这个程序里做不到,
|
||
哪怕以后想加也要先推翻现有设计。
|
||
</p>
|
||
</div>
|
||
<div class="prose">
|
||
<div class="callout">
|
||
<h3>一句话总结</h3>
|
||
<p>
|
||
PeopleLib 没有服务端。它唯一会主动联网的场合是你按下搜索或下载,以及你启用检查更新。
|
||
AI 请求发往你自己填的接口地址。除此之外没有任何数据外发。
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="local-first">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">本地优先</span>
|
||
<h2>数据存在哪里</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<p>书库条目、下载的文件、封面缓存、读书笔记、画布笔记、批注与阅读进度,全部写在本机的数据目录里。没有账号,没有同步服务端,没有遥测上报。</p>
|
||
<p>AI 对话记录同样只存在本机,按会话分别存成文件,随书籍删除一并清理。发给视觉模型的图像也留在本地,供你回看历史时显示,后续追问不会重复上传。</p>
|
||
<dl class="kv">
|
||
<dt>Windows</dt>
|
||
<dd>程序目录同级的 <code>data/</code>,便携布局。整个程序目录可以整体搬走或备份。</dd>
|
||
<dt>macOS</dt>
|
||
<dd><code>~/Library/Application Support/PeopleLib</code>。应用包在 DMG 里是只读的,数据不能放里面,升级覆盖也不会碰到这个目录。</dd>
|
||
</dl>
|
||
<p>想彻底删除数据,删掉上面对应的目录即可,不需要在任何地方注销账号。</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="ai-key">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">AI 密钥</span>
|
||
<h2>完全自带密钥,没有中间人</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<p>
|
||
应用没有内置任何厂商服务,也没有代理转发层。你在设置里填自己的接口地址与 API Key,
|
||
请求从你的机器直接发到你填的那个地址。项目方看不到你的用量,也收不到你的费用。
|
||
</p>
|
||
<ul>
|
||
<li><strong>密钥加密落盘</strong>:API Key 经操作系统提供的 safeStorage 加密后保存,不是明文配置文件。</li>
|
||
<li><strong>密钥不进渲染进程</strong>:界面进程拿不到密钥原文,实际请求由主进程发出。</li>
|
||
<li><strong>密钥不写日志</strong>:日志与错误信息里不会出现密钥或 token。</li>
|
||
<li><strong>Responses 协议不留存</strong>:走 OpenAI Responses 协议时请求带 <code>store: false</code>,不让服务端留存对话记录。</li>
|
||
</ul>
|
||
<p class="hint">注意:你选择的模型提供方会按它自己的政策处理收到的内容。PeopleLib 能控制的是不多发、不留副本、不经第三方转发。</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="explicit-send">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">明确确认</span>
|
||
<h2>正文不会自动外发</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<p>
|
||
打开一本书不会触发任何 AI 请求。只有你选定上下文范围并点击发送,内容才会离开本机。
|
||
</p>
|
||
<ul>
|
||
<li>选择「全文」范围时,无论文档多短都会强制弹出确认框,并提示可能超出模型的上下文限制。</li>
|
||
<li>确认框里显示的字数就是真正外发的字数。应用不做本地截断,界面数字与实际请求一致。</li>
|
||
<li>如果内容超出模型限制,应用把接口返回的报错转成中文提示,而不是悄悄少发一部分。</li>
|
||
</ul>
|
||
<p>
|
||
这条规则有过教训。早期版本按固定字数上限挖掉正文中间部分,结果 40 页的文档实际只发出 8 页,
|
||
而界面仍显示全文字数。那属于静默的数据丢失,用户还会把答非所问归因于模型,所以该行为已经移除。
|
||
</p>
|
||
</div>
|
||
<figure class="shot">
|
||
<img src="assets/shot-ai-confirm.jpg" width="1600" height="1076" alt="发送前的确认对话框,显示即将外发的字数与超出上下文限制的提示" loading="lazy">
|
||
<figcaption>发送确认框</figcaption>
|
||
</figure>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="sandbox">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">进程边界</span>
|
||
<h2>界面进程读不到任意文件</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<p>
|
||
Electron 应用最常见的风险是渲染进程能拿着任意路径去读盘。PeopleLib 把这条路堵住了:
|
||
渲染层不能传任意路径,所有文件访问都要经主进程的白名单校验,只放行书库中真实登记的条目。
|
||
</p>
|
||
<ul>
|
||
<li><strong>路径白名单</strong>:不在书库里的路径一律拒绝,无论渲染层怎么构造参数。</li>
|
||
<li><strong>会话与发送方绑定</strong>:超大 PDF 的分段读取会话与请求方绑定,句柄不透明,界面窗口销毁后立即回收。</li>
|
||
<li><strong>Markdown 双重净化</strong>:Markdown 渲染禁用裸 HTML,再过一层 DOMPurify,防止文件内容里的脚本被执行。</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="drm">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">合规</span>
|
||
<h2>不绕过 DRM</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<p>
|
||
带 DRM 的 MOBI、AZW、AZW3、KFX 与 Topaz 文件,以及损坏或不兼容的文件,应用不会尝试解除保护。
|
||
遇到这类文件会直接给出提示,建议改用系统关联的应用打开。
|
||
</p>
|
||
<p>
|
||
同样地,PeopleLib 只是对公开网络接口的客户端封装,不托管也不分发任何内容。
|
||
各数据源所提供作品的版权状态因司法辖区而异,使用者需自行确保用法符合当地法律与各站点的服务条款。
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="network-scope">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">联网范围</span>
|
||
<h2>什么时候会联网</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<div class="table-scroll">
|
||
<table>
|
||
<caption>应用发起网络请求的全部场合</caption>
|
||
<thead>
|
||
<tr>
|
||
<th scope="col">场合</th>
|
||
<th scope="col">目标</th>
|
||
<th scope="col">触发方式</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<th scope="row">检索与下载</th>
|
||
<td>你选择的数据源站点</td>
|
||
<td>你点击搜索或下载</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">封面加载</th>
|
||
<td>条目对应的封面地址</td>
|
||
<td>展示书库或检索结果</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">AI 请求</th>
|
||
<td>你自己填写的接口地址</td>
|
||
<td>你确认发送</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">检查更新</th>
|
||
<td>项目的 GitHub Releases</td>
|
||
<td>手动检查,或你启用了启动时检查</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<p>所有这些请求都走你在设置里配置的全局代理,包括封面请求。</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="site-privacy">
|
||
<div class="wrap">
|
||
<div class="section-head">
|
||
<span class="eyebrow">本站点</span>
|
||
<h2>这个网站本身</h2>
|
||
</div>
|
||
<div class="prose">
|
||
<p>
|
||
本站是托管在 GitHub Pages 上的静态页面,没有分析脚本,没有 Cookie,没有第三方字体或 CDN 资源,
|
||
页面用的是你系统里已有的字体。作为托管方,GitHub 会按其自身政策记录访问日志,这一点本站无法控制。
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="cta">
|
||
<div class="wrap">
|
||
<div>
|
||
<h2>还有疑问</h2>
|
||
<p>常见问题里覆盖了费用、数据位置、格式支持与 macOS 首次打开。</p>
|
||
</div>
|
||
<p class="btn-row">
|
||
<a class="btn btn-primary" href="faq.html">查看常见问题</a>
|
||
<a class="btn btn-secondary" href="download.html">下载与安装</a>
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<footer class="site-footer">
|
||
<div class="wrap">
|
||
<div>
|
||
<h2>站点</h2>
|
||
<ul>
|
||
<li><a href="index.html">首页</a></li>
|
||
<li><a href="features.html">功能</a></li>
|
||
<li><a href="download.html">下载与安装</a></li>
|
||
<li><a href="faq.html">常见问题</a></li>
|
||
</ul>
|
||
</div>
|
||
<div>
|
||
<h2>项目</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/lofyer/peoplelib" rel="noopener">GitHub 仓库</a></li>
|
||
<li><a href="https://github.com/lofyer/peoplelib/releases" rel="noopener">版本发布</a></li>
|
||
<li><a href="https://github.com/lofyer/peoplelib/issues" rel="noopener">问题反馈</a></li>
|
||
</ul>
|
||
</div>
|
||
<div>
|
||
<h2>版本</h2>
|
||
<ul>
|
||
<li>PeopleLib 2.0.0</li>
|
||
<li>MIT 许可</li>
|
||
</ul>
|
||
</div>
|
||
<p class="legal">
|
||
本项目仅是对公开网络接口的客户端封装,不托管、不分发任何内容。部分数据源所提供作品的版权状态因司法辖区而异,
|
||
使用者需自行确保其使用方式符合当地法律与各站点的服务条款。
|
||
</p>
|
||
</div>
|
||
</footer>
|
||
|
||
</body>
|
||
</html>
|