你的历史记录
一把由你的浏览器创建、不可导出的 AES-256-GCM 密钥,以及每条内容各自的随机 12 字节向量。文本在写入前加密,只在显示时解密。一切都通过浏览器的 Web Crypto API 完成,不使用第三方库。
- src/lib/db/crypto.ts
- src/lib/db/schema.ts
本页的每一句话都已对照运行本站的代码核实过。它说明 NeverNo 保留什么、从不保留什么、谁会读到你的消息,以及如何自己核实。
最近一次对照代码核实:2026年11月11日
你的对话、图片、角色和记忆,用一把浏览器不允许任何人导出的密钥加密。如果开启同步,我们的服务器上会有一份无法读取的副本,不含媒体。
你的账户、套餐、积分、用量计数器,以及下文列出的账户记录(设备、付款、试用)。分享链接、你的备份和同步仅以加密形式保存,我们无法读取。
你的消息和回复的文本、你的图片、你的声音:它们在生成回复期间经过我们的服务器,但不会以明文记录。
你创建的一切都保存在名为 neverno 的 IndexedDB 数据库中,仅存在于这个浏览器里。我们的服务器上没有可读的副本:只有在你自己创建时,才会有备份、分享链接或同步副本,三者都是加密的(见下文)。
首次使用时,你的浏览器会创建一把“不可导出”的 AES-256-GCM 密钥:页面可以用它加密和解密,但任何脚本都无法以字节形式读取它,我们的脚本也不行。它保存在同一数据库的 keys 表中,从不离开设备。每条内容单独加密,使用一个随机的 12 字节向量。
为了无需解密全部内容就能排序和查找对话,少数标记保持可读:ID、日期、所用模型。下表列出了哪些。
| 存储的内容 | 加密 | 保持可读 |
|---|---|---|
| 对话 | 标题 | ID、文件夹、项目、类型(例如一次告解室会话)、是否置顶、模型、角色、日期 |
| 消息 | 文本、模型的推理、网页来源、步骤、版本、你的评价 | ID、发送者(你或 NeverNo)、模型、状态、媒体链接、日期、推理用时 |
| 文件夹 | 名称 | 顺序、日期 |
| 图片、视频和声音 | 文件、其描述、模型和大小 | 媒体类型、文件格式、关联的对话、日期 |
| 你创建的角色 | 整张角色卡 | ID、日期 |
| 记忆(账户) | 每条记忆及其向量 | 来源对话、记忆类型、关于谁(你或某个角色)、日期 |
| 自定义指令、待学习的内容 | 文本 | 无 |
| 设置 | 发给匿名模型前要遮盖的姓名、同步数据密钥 | 记忆是否开启、遮盖是否开启、自动备份、上次备份日期、备份密钥(不可导出)、你的分享链接及其密钥(以便你再次复制)、同步状态(账户、密钥纪元、游标、上次交换的日期) |
| 同步跟踪 | 无:不会在此复制任何内容 | 待发送的已更改行(表和 ID),以及每个已交换条目的不透明 ID、计数器、版本和指纹 |
| 私密保险箱 | 每个文档的名称和详情、每个段落的文本及其向量 | ID、段落顺序、索引状态、段落数量、日期 |
| 项目 | 整个项目:名称、指令和设置 | ID、日期 |
| 项目或对话中的文件 | 名称和内容 | ID、所属的对话或项目、文件类型和大小、来源(你或智能体)、日期 |
| 同步文件的跟踪记录(开启媒体同步时) | 每个文件自己的密钥 | 不透明的 ID、大小、分块数量、上传状态、日期 |
少量界面偏好以明文保存在浏览器的 localStorage 中,不含对话内容:所选模型、图片工作室的设置(包括负面提示词)、所选声音、强调色、访客的头像、侧边栏状态、已经显示过的升级建议,以及其他同类设置(在告解室选择的角色、通知、已经看过的欢迎界面,以及刚创建的账户的 ID 和创建时间)。有一个例外:视频、音乐或音效正在生成期间,它的描述和设置会以明文保存在那里,以便刷新页面后还能找回这次生成;生成完成或你把它移除时会被清除,生成失败时则在超过 24 小时后你第一次访问时清除。从临时对话发起的生成绝不会写入那里。
当你把一条消息变成任务时,它的文本会以明文经由标签页的 sessionStorage 传给任务页面:页面只读取一次就把它清除,而且关闭标签页时它无论如何都会消失。
在设置中点击“全部清除”,或在浏览器中清除本站数据,会删除数据库和密钥。没有备份或同步的话,任何内容都无法恢复,你不能,我们也不能。
我们的服务器上没有任何可读的内容。我们只保留一份无法读取的副本,只有你的通行密钥、恢复密钥或已批准的设备才能打开。我们能看到你同步了多少条目以及何时同步,但永远看不到内容。
有账户时,你可以在“设置 › 数据”中开启:你的对话、文件夹、角色、项目(含每个不超过 200 KB 的文件)、记忆、智能体、自定义指令和设置会跟随你到其他设备。每个条目在离开前都会在你的浏览器中用 AES-256-GCM 加密,使用我们的服务器从未拥有的数据密钥,其 ID 也会变得不透明:服务器无法分辨它存的是消息、角色还是设置。保险箱(文档和段落)也会同步,加密方式相同。图片、视频和声音暂时不会同步:它们只留在这个浏览器中,如果你做了备份,也在你的加密备份里。没有账户的访客无法使用同步。
数据密钥在你的第一台设备上生成。它由你的通行密钥(仅用于此、不用于登录的 WebAuthn 密钥)和你的恢复密钥包裹,并为你每台已批准的设备分别封存。新设备可通过这三条路径之一获得它。仅有被盗的会话是不够的:每个同步请求都必须由已批准的设备签名。
| 套餐 | 空间 |
|---|---|
| 免费 | 100 MB |
| Pro | 5 GB |
| Pro+ | 20 GB |
| Max | 100 GB |
空间用满后,你的新更改会在设备上等待:不会丢失任何内容,你的其他设备仍会继续接收已同步的内容。如果你的套餐换成空间少于你已用量的套餐,不会删除任何内容,但在你删除足够内容之前,任何新内容(包括文字)都不会同步。
临时对话(模型选择旁边的虚线气泡,或侧边栏和 ⌘K 面板中的“新建临时对话”)和其他对话一样使用,只有一个区别:它从不写入这个浏览器。它的消息、其中生成的图片和语音以及你附加的文件,只存在于标签页的内存中,别处都没有。
IndexedDB 中不会写入任何内容:没有对话、没有消息、没有媒体,也不会为它创建密钥;/chat?ephemeral=1;仍然会计入的内容:你的消息计入今日上限,对回答的评价会加入一个匿名总数,和任何对话一样。我们这边也没有任何变化:和任何对话一样,文本经过我们的服务器到达模型,不会被写入任何地方。
保险箱(侧边栏中的“保险箱”)把你添加的文档(PDF、Word、Markdown、文本或代码)保存在同一个 neverno 数据库中,用同一把密钥加密。每个文档被切成约 800 个 Token 的段落;文档的名称和详情、每个段落的文本及其向量都被封存。只有 ID、段落顺序、索引状态和计数保持可读。原始文件不会保留。
要找到回答问题的段落,每个段落都需要一个向量:描述其含义的 1024 个数字。这个计算不在你的浏览器中进行。下面准确说明什么会离开浏览器,以及何时离开。
/api/memory/embed);仍会计入的内容:每个被索引的段落和每个被搜索的问题都计入每日上限(vault),计算给我们带来的费用会以金额记录,和记忆一样。使用标为“匿名”的模型时,段落会随消息到达其开发方,按开发方的规则处理。设置中的“全部清除”会连同其他数据一起删除保险箱。
任务(付费套餐;免费账户可试用一次)在你不在时于我们的服务器上运行:这是 NeverNo 中唯一需要服务器读取你的指令才能完成工作的部分。我们坦率说明这一点,并把其余部分压缩到最低限度。
指令、智能体的资料卡、你给出的反馈以及监测的最近一次观察结果,都会在存储时加密,密钥只有任务服务器持有,并与该任务和你的账户绑定。运行期间,读取过的页面和工作笔记会加密保存,并在结果交付后立即删除。
结果会用你设备的公钥加密:私钥在你的浏览器中生成,永远不会离开(它随你的加密备份一同保存)。我们无法再次读取已交付的结果;你的设备一收到,其密文就会从我们的服务器删除,最迟 30 天后删除。这些到期删除(30 天和 90 天)由每小时运行一次的清理执行。
| 数据 | 服务器是否可读 | 保存期限 |
|---|---|---|
| 运行安排(星期、时间、时区)、预算、状态、计数器 | 可读,用于唤醒任务 | 任务存在期间 |
| 指令、智能体资料卡、反馈、所选连接器 | 仅在运行期间可读(存储时加密) | 任务存在期间 |
| 监测的最近一次观察结果(用于比较的少量事实) | 仅在运行期间可读(存储时加密) | 每次运行时替换 |
| 读取的页面、工作笔记、步骤日志 | 运行期间可读(存储时加密) | 交付时删除 |
| 已交付的结果 | 不可读:为你的设备加密 | 直到你的设备收到,最长 30 天 |
| 连接器的令牌或密钥 | 仅在调用时可读(存储时加密) | 你断开连接后立即删除 |
任何对外的操作(发送消息、调用会产生影响的工具)都会等待你一键批准;通知中从不包含任务内容。
我们的数据库(Supabase,Postgres)没有能读取消息、回复或图片的表:同步只在其中存放加密条目,没有可读的类型或标识符。以下按类别列出它保留的内容,取自它的迁移文件(supabase/migrations/)。
| 数据 | 原因 | 保留多久 |
|---|---|---|
| 账户:电子邮件地址、注册日期和最近一次登录。为我们处理登录的 Supabase 会为每个打开的会话保存你浏览器的完整名称(即 user agent)和打开该会话的 IP 地址,并保留登录日志 | 通过邮件发送的验证码让你登录 | 账户存在期间;会话:直到它被关闭(你可以在“设置 › 安全”中查看并关闭你的会话) |
| 个人资料:套餐和续订日期、内容过滤是否开启、你声明“已满 18 岁”的日期、是否被停用、所选头像(最多 64 个字符的种子,绝不是照片)、强调色 | 应用你的套餐权益,在每台设备上显示你的界面 | 账户存在期间 |
| 支付:Stripe 客户 ID、订阅状态、自动充值(阈值、金额、该卡在 Stripe 的 ID)、已使用的礼品码、已处理过的 Stripe 事件 ID | 计费、管理订阅、绝不重复处理同一笔付款 | 账户存在期间;发票按会计法规要求保存在 Stripe |
积分:每一批(数量、来源、到期日)和每一笔消费,含数量、日期和注明所付费功能或模型的事由(例如 chat:claude-opus-5.5、confessional、debate:contract、research:…、image:…、media:…)。因此,这份记录会显示你在哪些日期为告解室会话付过费,但不含其中说过的任何内容 | 保持余额准确,为失败的生成退款 | 账户存在期间 |
| 用量计数器:操作类型(消息、图片、搜索……)和时间,关联到你的账户;对于没有账户的访客,关联到一个随机试用 ID 和用密钥计算出的 IP 地址指纹(对于 IPv6 地址,针对其整个 /64 网络,即同一连接可轮换使用的地址段,而不是单个地址);对于免费账户,图片、朗读和语音输入也会按该指纹记入一个单独的计数器,其中不含账户 ID(同一连接下的免费账户共享一个上限) | 滚动 24 小时内的上限,以及“我的订阅”中的 30 天日历 | 账户:保留 31 天(只有数字,绝不含内容),之后每小时清除。没有账户的访客:每小时删除超过 48 小时的记录。用于限制请求突发的最近一分钟记录,一小时后删除 |
| 套餐内用量的成本:一个美元金额、一种类型(聊天、图片、语音……)和时间,关联到你的账户;没有账户的访客则关联到其试用 ID 或其 IP 地址的指纹 | 每个套餐的每日成本上限 | 账户:每小时删除超过 35 天的记录。没有账户的访客:超过 48 小时的记录 |
| 耗时较长的生成(视频、音乐、音效):模型、状态、日期、预留的积分、该任务在提供方那里的编号,以及(对于视频)它以导入的图片为基础这一事实 | 跟踪生成过程,并且只付一次费 | 账户存在期间,我们这边不含描述和文件;提供方在保留期内可以凭任务编号找到它收到的描述 |
| 分享链接:加密文本(我们无法读取)、其大小、创建和到期日期、创建它的账户 | 让持有链接的人能够读取 | 直到你选择的到期时间(1、7 或 30 天)或你删除它为止,之后一小时内清除 |
| 备份:一个用你的密语加密的文件、其大小和日期 | 在另一台设备上找回你的数据 | 直到你删除或替换它 |
| 加密同步:每个加密条目(我们无法读取)及其不透明 ID、版本、按 256 字节取整的大小、时间和写入它的设备;由你的通行密钥、你的恢复密钥以及每台已批准设备包裹的数据密钥;已用空间 | 让你的数据出现在其他设备上 | 直到你关闭同步或删除账户;已删除的条目会留下一条不含内容的痕迹,保留 180 天 |
| 伙伴的主动消息:每个伙伴一个不透明的随机标识(从不包含是哪个角色)、你选择的频率、下一次时间、你的时区和免打扰时段、最后一次通知的日期以及是否有待查看的通知;只有在你允许通知显示名字时才保存其名字。绝不包含对话中的任何一个字:消息在你打开应用时由你的设备写出 | 发送不含内容的通知(“NeverNo”、“Lena 在想你”或“有一条消息在等你”) | 直到你为该伙伴或整个账户关闭、重新开始这段关系或删除账户 |
| API 密钥:名称、前 12 个字符和 SHA-256 指纹(绝不保存密钥本身)、最近使用日期 | 识别你的 API 调用 | 账户存在期间(已撤销的密钥保留撤销日期) |
| 对回答的评价:按日期、模型、评价和原因统计的计数器 | 调校“自动”模式 | 不限期,但不含账户、ID 和文本:没有任何东西能把它们与你关联 |
| 管理日志:管理员对某个账户执行的每项操作(添加积分、停用……),以及部分自动操作(订阅到期、加密货币订单及其申报国家和连接所在国家、同步重置、清除闲置账户) | 监督与安全 | 保留,即使账户被删除后也是如此,但不含账户 ID;目前尚未设定最长期限 |
| 使用统计:固定列表中的事件名称、页面模板、来源域名、活动标签、国家、设备类型、语言、当日指纹(密钥每晚删除);对于账户,其注册日期、来源、首次付款以及收入和成本合计 | 了解该改进什么,衡量注册和利润率 | 原始事件 90 天,之后仅保留匿名每日汇总;账户部分保留到你关闭或删除账户为止 |
| 闲置通知:账户 ID、通知邮件的发送日期和计划删除日期(针对三年未使用的免费账户) | 兑现隐私政策的承诺:提前 30 天提醒,按与“删除我的账户”相同的步骤删除一次,绝不重复 | 直到你再次登录(通知即取消)或账户被删除为止 |
| 账户已知的浏览器:浏览器和系统的名称(“Chrome, Windows”)、首次和最近一次出现的时间、提醒邮件的日期 | 有新浏览器登录时通过邮件提醒你 | 账户存在期间(最多 30 个浏览器) |
| 敏感操作的验证码确认:针对发起请求的会话,保存 6 位验证码的指纹、尝试次数和发送次数、最近一次发送的时间,以及确认窗口的结束时间 | 在退出你的其他会话或关闭登录提醒之前,确认确实是你本人 | 验证码:10 分钟;不含验证码的那一行:直到 24 小时之后再次请求验证码时,或直到账户被删除 |
| 付费功能的试用:按账户和按 IP 地址指纹的计数器,分功能、分月份(只给一次的试用则只计一次);任务试用则记录其日期 | 每项试用只提供一次,不让批量账户成倍获取 | IP 地址指纹:仅当月,在下个月的第一个夜晚清除。账户:月度计数器最多保留 3 个月;只给一次的试用(Claude Opus 回答、告解室、视频、智能体、任务……):账户存在期间;全部随账户一起清除 |
| 用加密货币支付的订单:套餐、价格、状态、日期、申报的国家、连接所在的国家、增值税,以及订单在 CoinGate 的编号 | 开通已付费的套餐,并留存法律要求的会计和增值税记录 | 已付款的订单:10 年,即法定期限,账户删除时与账户脱钩(期满后的自动清除尚未上线);未付款的订单随账户一起清除 |
| 合同凭证:确认函和收据的发送日期、所显示告知内容的版本,以及购买前勾选的放弃撤回权 | 按消费者法的要求,证明同意了什么、发送了什么 | 账户存在期间;已付款加密货币订单的凭证会保留,但不再关联账户 |
| 赠予的套餐和收回的积分:管理员赠予的套餐及一条自由填写的备注;退款或争议后收回的积分;对预留积分的自动更正(事由、数量) | 应用赠予的套餐、收回已退款的积分、结清未关闭的预留 | 赠予的套餐:直到它结束;收回的积分:账户存在期间;更正记录:365 天 |
| 自动充值:最近一次付款错误(Stripe 消息的开头部分)和每一次尝试(金额、状态、发票编号、日期) | 绝不重复扣款,连续三次失败后停止 | 账户存在期间 |
| 开发者订阅:订阅在 Stripe 的 ID、状态和到期日 | 应用开发者套餐的权益 | 账户存在期间 |
| 任务的设备和通知:每台设备的公钥、名称、状态和日期;批准与撤销的日志;你浏览器的通知订阅地址 | 只为你的设备加密结果,并在不含内容的情况下通知你 | 设备或订阅存在期间;从未获批准的设备:30 天;被撤销的设备会留下不含密钥的痕迹 90 天;日志:90 天 |
| 任务的连接器:每个已连接服务的访问凭据(用任务服务器的密钥加密,服务器可以读取它以执行操作)和最近一次使用的日期 | 在任务需要时读取你的服务或在其中执行操作 | 直到你断开连接或删除账户;届时我们会请求该服务(Google、Notion、Slack、GitHub)撤销授权 |
| 同步的账户和密钥:包裹后的数据密钥、你的通行密钥、已批准的设备;关闭或重置同步之后,保留关闭的日期,以及重置的日期、设备和次数 | 在你的设备上打开你的数据,并防止旧设备重新打开已清除的副本 | 同步开启期间;关闭和重置的标记:账户存在期间 |
| 当前的智能体:对你运行的每个个人智能体,保存其 ID 的带密钥指纹(绝不含名称或资料卡)、它成为账户智能体的日期、最近一次运行的日期,以及被替换时的日期 | 应用你套餐的智能体数量 | 当前的智能体:账户存在期间;被替换的智能体:31 天,之后在下次运行时清除 |
| 告解室语音的等待队列:占用线路或正在等待线路的账户或访客、其状态、优先级和两个时间点 | 不超过同时通话的数量,并按顺序为每个人服务 | 通话或等待期间;被放弃的线路会在下一次通话时移除,无论那是你的还是别人的通话 |
| 与账户关联的统计:注册日期、落地页、来源网站、活动标签、国家、设备类型、语言、注册前是否试用过、首次付费的日期和首个套餐,以及收入、成本和积分的合计;如果你拒绝统计,则只保留拒绝的日期 | 衡量注册量和利润率,并尊重你的拒绝 | 直到你关闭统计(届时这些数据会被清除,只留下拒绝的日期)或删除账户 |
服务健康状况:每次服务器错误对应的路由模板(例如 /api/chat,绝不记录真实地址及其参数)、HTTP 状态、错误类别和提供方,按分钟计数 | 发现出问题的路由并收到警报 | 30 天;不含账户、ID 或消息 |
| 提供方支出:按提供方和操作类型,每分钟的美元金额,不关联任何账户 | 成本骤增时收到警报 | 35 天 |
| 功能开关与警报日志:哪项功能被暂停、由谁暂停(管理员或自动切断)以及每次警报的数据 | 无需部署即可暂停某项功能,并留下记录 | 开关:只要网站存在就保留;警报:90 天 |
在设置中点击“删除我的账户”会清除以上全部内容:订阅被取消,Stripe 客户及其银行卡被删除,然后是备份、同步副本、链接、密钥、计数器(包括试用的计数器)、成本,最后是账户本身。你给予 Google、Notion、Slack 或 GitHub 的授权会在对方那里被撤销;如果其中某一方没有回应,我们保存的访问凭据仍会被清除,你可以在该服务的账户中自行移除授权。保留下来的有:匿名评价计数器;管理日志,但不含账户 ID;法律要求的会计凭证(用加密货币支付的订单及其收据的发送证明,已与你脱钩);与账户脱钩的使用统计,最长 90 天;关联到 IP 地址指纹的计数器,它们会自动清除(48 小时,试用的则在月底)。在我们的数据库之外:我们的邮件在 Resend 的发送日志、Supabase 的技术备份(在其保留期内),以及 Stripe 自己保存的发票。
Supabase 的技术备份会保留数据库的副本,因此也包括任何已删除的行,直到 Supabase 不再保留这些备份。
为了回复你,你的消息会经过我们的服务器到达模型,回复再以流式方式返回你的浏览器。以下内容都不会以明文写入数据库或日志(同步若开启,只存放由你的浏览器加密的副本):
我们的错误日志只记录技术标记:模型或提供方的名称、错误代码、积分操作编号。账户在其中只以一个用密钥计算出的标签出现,单凭这个标签看不出任何信息;只有删除账户时才会记录其 ID,绝不记录电子邮件。此外,有些提供方会在一段时间内保存它们收到的内容:见“谁会读到你的消息”。
为了知道该改进什么,我们用自己服务器上的自有工具(/api/analytics)统计 NeverNo 的使用情况:没有 Cookie,没有第三方追踪器,没有指纹识别脚本。
访客以“当日指纹”计数:由网站、IP 地址和浏览器生成的带密钥哈希,其密钥随机生成,并在每晚午夜后不久删除(UTC:当天第一次访问时,最迟 00:07)。地址和浏览器都不会保存,密钥删除之后,任何人(包括我们)都无法把某一天的访问与第二天的访问联系起来;在备份的保留期内,密钥可能仍存在于我们数据库的技术备份中。
/chat/:id,从不含 ID),把你带来的网站(仅域名),以及活动标签 utm_source、utm_medium、utm_campaign;原始事件在 90 天后删除,只保留匿名的每日汇总。在设置中关闭“分享匿名统计”,或让浏览器发送 Global Privacy Control 或 Do Not Track:你仍会被计数,但没有指纹,也不与账户关联,之前关联的内容会被删除。删除账户也会删除其中的这部分。
当你选择标有“匿名”的模型(Claude、GPT、Gemini、Grok)时,开发它的公司会读取你的请求。消息离开浏览器发往其中之一之前,清单内的几类个人数据会被替换成 [EMAIL_1] 这样的占位符,回复回来时再把真实的值放回去。这一切都不会到达我们的服务器:检测、替换和对应表都在页面里,对应表从不保存(每条消息都会根据对话重新推导)。
这是一份封闭的清单,目的是尽量少地打乱你的提问:不会泛泛地识别姓名。它覆盖什么、不覆盖什么,确切如下:
+33 6 12 34 56 78)或带分隔符的国内形式(06 12 34 56 78、(555) 123-4567、090-1234-5678)书写的电话号码;:: 的 IPv6);开关在“设置 › 数据”中,默认开启;关闭后,你的消息会原样发给匿名模型。发给私密模型的内容从不遮盖:那里不保存任何内容,错误的遮盖得不偿失。输入框下方的“已遮盖 3 项”会列出上一条消息中被替换的内容。在封存的测试用例(从未用于调整检测器)上测得:邮寄地址在 72% 的用例中被检出,电话号码为 94%,IBAN 为 100%;在 160 个外形相似却并非个人数据的陷阱文本中,没有任何误报。这些是我们自己的测试结果,而不是保证:写法不寻常的信息可能漏过,所以请再检查一遍发给匿名模型的内容。上线后计划进行第三轮改进。
Clean Room(/clean-room)为 PDF、Word 文件或文本文件生成打码副本。文件在你的浏览器中被读取、搜索、显示和重写:我们的任何路由都不会收到它、它的文本或你所隐藏内容的清单。页面只从我们的地址加载网站自身的文件(PDF 阅读器,以及用于扫描页的 OCR 引擎及其语言模型)。打开后可离线使用。
自动找到的内容与上面的遮盖所用的封闭列表相同:邮箱地址、电话号码、IBAN、卡号、IP 地址、完整书写的邮寄地址、你名单上的姓名。此外没有别的;其余由你手动添加,并在导出前检查每一个方框。
[EMAIL_1])或 █ 方块,由你选择,并可附上一份只给出按类型计数、绝不含具体值的报告。承诺是“文件从不离开你的设备,导出前由你亲自检查”,而不是担保:检测器找不到它不认识的东西(名单外的名字、日期、地点),扫描页取决于 OCR 读到了什么。检查步骤正是为此而设。
模型必须读取你的消息才能回答。下表显示谁收到它,会不会保留。它由模型目录和到各提供方的路由生成:代码变化时,它会自动随之变化。
任何提供方都不会收到你的邮箱、账户 ID 或 IP 地址:是我们的服务器用自己的密钥调用它们。它们收到的是当前对话的文本,以及(如果你有的话)你的指令、你的记忆和角色卡。如果你写下自己是谁,它们就会读到。在 OpenRouter,我们还在每个请求中声明拒绝将其用于训练。
“私密”:开源模型,由 DeepInfra 提供,或由 OpenRouter 在零保留选项下提供,不保留请求。“匿名”:闭源模型;开发它的公司会读取文本,但不知道你是谁,并按它自己的规则处理。
| 模型 | 标签 | 谁收到文本 | 保留 |
|---|---|---|---|
| AutoNeverNo | 私密,无限制 | DeepInfra和OpenRouter | 不保留,依据其零保留承诺 |
| NeverNo UncensoredNeverNo | 私密,无限制 | 经由 OpenRouter 的第三方零保留托管方 | 不保留,依据其零保留承诺 |
| DeepSeek V4 FlashDeepSeek | 私密 | OpenRouter,DeepInfra 作为备用 | 不保留,依据其零保留承诺 |
| GLM 5.3 FlashZ.ai | 私密 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| Qwen 3.5 35BAlibaba | 私密 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| Mistral Small 3.2Mistral | 私密 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| GLM 5.2Z.ai | 私密 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| DeepSeek V4 ProDeepSeek | 私密 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| Euryale 70BSao10K | 私密,无限制 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| Kimi K3Moonshot | 私密 | DeepInfra,OpenRouter 作为备用 | 不保留,依据其零保留承诺 |
| Claude Fable 5.2Anthropic | 匿名 | OpenRouter,然后是 Anthropic | 没有零保留的路由:Anthropic 可能按其政策保留请求 |
| Claude Opus 5.5Anthropic | 匿名 | OpenRouter,然后是 Anthropic | OpenRouter 不保留;Anthropic 按其自己的政策处理 |
| Claude Sonnet 5.5Anthropic | 匿名 | OpenRouter,然后是 Anthropic | OpenRouter 不保留;Anthropic 按其自己的政策处理 |
| Claude Haiku 5.5Anthropic | 匿名 | OpenRouter,然后是 Anthropic | OpenRouter 不保留;Anthropic 按其自己的政策处理 |
| GPT-6 AstraOpenAI | 匿名 | OpenRouter,然后是 OpenAI | OpenRouter 不保留;OpenAI 按其自己的政策处理 |
| GPT-6.1 SolOpenAI | 匿名 | OpenRouter,然后是 OpenAI | OpenRouter 不保留;OpenAI 按其自己的政策处理 |
| GPT-6.1 TerraOpenAI | 匿名 | OpenRouter,然后是 OpenAI | 没有零保留的路由:OpenAI 可能按其政策保留请求 |
| Gemini 4 ArgonGoogle | 匿名 | OpenRouter,然后是 Google | OpenRouter 不保留;Google 可能将其滥用监测标记的请求保存最多 90 天 |
| Grok 4.7xAI | 匿名 | OpenRouter,然后是 xAI | OpenRouter 不保留;xAI 按其自己的政策处理 |
“自动”模式使用私密模型;部分回合会在遮盖之后交给匿名模型处理。“自动”的私密模型:DeepSeek V4.1 Flash、DeepSeek V4.1 Flash、DeepSeek V4.1 Flash、DeepSeek V4.1 Flash、DeepSeek V4.1 Flash、DeepSeek V4.1 Flash、DeepSeek V4 Flash、DeepSeek V4 Pro、GLM 5.2、NeverNo Uncensored、Qwen 3.5 35B和Mistral Small 3.2。除这些回合和下述政治问题外,匿名模型只有在你选择它,或点击回复下方向它提问的建议时,才会回答。对于中国模型拒绝回答的某些政治问题,自动模式会在遮盖之后,在零保留的托管方上改用匿名模型 Claude(Anthropic)作答,而不是 DeepSeek、GLM、Kimi 或 Qwen。
工作室通过 Runware 处理。描述从我们的服务器发出时不带任何标识。下表同样由代码生成。
| 模型 | 类型 | 托管于 | 说明 |
|---|---|---|---|
| Z-Image TurboTongyi | 图片 | Runware | 直接返回你的浏览器 |
| FLUX 3 KleinBlack Forest Labs | 图片 | Runware | 直接返回你的浏览器由开发方过滤匿名 |
| NeverNo UncensoredZ-Image | 图片 | Runware | 直接返回你的浏览器 |
| Z-ImageTongyi | 图片 | Runware | 直接返回你的浏览器 |
| Qwen Image 2.1 TurboAlibaba | 图片 | Runware | 直接返回你的浏览器由开发方过滤 |
| Qwen Image 3.0 ProAlibaba | 图片 | Runware | 直接返回你的浏览器由开发方过滤 |
| FLUX 3Black Forest Labs | 图片 | Runware | 直接返回你的浏览器由开发方过滤 |
| Nano Banana 2.1Google | 图片 | Runware | 直接返回你的浏览器由开发方过滤匿名 |
| GPT Image 2.6OpenAI | 图片 | Runware | 直接返回你的浏览器由开发方过滤匿名 |
| GPT Image 2.6 FlareOpenAI | 图片 | Runware | 直接返回你的浏览器由开发方过滤匿名 |
| Muse ImageMeta | 图片 | Runware | 直接返回你的浏览器由开发方过滤匿名 |
| LTX 2.3 FastLightricks | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载 |
| P-Video 2 ProPruna AI | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| MiniMax H3 MaxMiniMax | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| HeyGen Video 1HeyGen | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| Veo 3.1 FastGoogle | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| Kling 4.0 FlashKuaishou | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| Wan 3.0Alibaba | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| Seedance 2.5ByteDance | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| LTX 2.3Lightricks | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载 |
| P-Video 2 ProPruna AI | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| Veo 3.1 LiteGoogle | 视频 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤匿名 |
| ACE-Step 1.5 TurboACE Studio | 音乐 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载 |
| ACE-Step 1.5ACE Studio | 音乐 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载 |
| MiniMax Music 2.6MiniMax | 音乐 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤 |
| Seed Audio 1.0ByteDance | 音效 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载由开发方过滤 |
| Mirelo SFX 1.5Mirelo | 音效 | Runware | 存放在 Runware 的 CDN 上,由你的浏览器从那里下载 |
一把由你的浏览器创建、不可导出的 AES-256-GCM 密钥,以及每条内容各自的随机 12 字节向量。文本在写入前加密,只在显示时解密。一切都通过浏览器的 Web Crypto API 完成,不使用第三方库。
你的密语通过 PBKDF2-SHA-256 转换为密钥:600,000 次迭代,使用随机的 16 字节盐值。然后整个文件用 AES-256-GCM 加密。密语从不离开你的浏览器,文件通过签名链接直接上传到存储。
没有密语,任何人都无法打开这个文件,包括我们:错误的密语会直接被拒绝。如果你忘了它,备份就丢失了。
每个链接都有自己的 AES-256-GCM 密钥,在你的浏览器中创建。我们只收到加密文本;密钥写在链接的 # 之后,浏览器从不把这一部分发送给服务器。拥有完整链接的人可以读取;我们不能。
链接在 1、7 或 30 天后失效,或在你删除它时立即失效。
这里是在你的浏览器中执行加密的代码,与本页构建时我们代码仓库中的版本完全一致。没有任何摘要或改写:这就是文件本身,只读。
/** * Local-only encryption for the Zero-Log store. * * One AES-256-GCM key per browser, generated on first use as a non-extractable * CryptoKey and kept in IndexedDB: it never leaves the device and cannot be read * back as raw bytes, even by our own scripts. */import { requestPersistentStorage } from "./storage";export type Sealed = { v: 1; iv: Uint8Array<ArrayBuffer>; ct: Uint8Array<ArrayBuffer> };const encoder = new TextEncoder();const decoder = new TextDecoder();export type KeyStore = { load: () => Promise<CryptoKey | undefined>; /** Stores the key unless one is already there (the first stored wins). */ save: (key: CryptoKey) => Promise<void>;};let keyPromise: Promise<CryptoKey> | null = null;let activeStore: KeyStore | null = null;/** Point the module at the table that holds the key. Called once by the database. */export function configureKeyStore(store: KeyStore) { activeStore = store; keyPromise = null;}
我们的代码仓库目前仍是私有的。之后会推出公开仓库,让你可以把这段代码与你的浏览器实际运行的代码进行比较。
不必只听我们说:用浏览器的开发者工具就够了(在电脑上按 F12,或右键点击后选择“检查”)。
打开“应用”标签页(Chrome、Edge)或“存储”标签页(Firefox),然后进入 IndexedDB › neverno › messages。每条消息的 content 字段都是一个 { v, iv, ct } 对象:无法读懂的字节。在 keys 中,密钥显示为 extractable: false。
打开“网络”标签页,然后发送一条消息:会发出一个 chat 请求,包含当前对话和你此刻的设置。其他对话都不会发出。
开启记忆:随后会有两个小的 memory 请求发送这最后一轮对话,以挑选需要记住的事实。新对话:还会有一个 chat/title 请求发送你的第一个问题和回复的开头,仅此一次,用来为对话起标题。开启建议(设置,内容):回复之后,一个 chat/follow-ups 请求会发送你的最后一个问题以及回复的开头和结尾,用来建议接下来问什么;不会保存任何内容。开启同步:sync/push 和 sync/pull 请求会携带由你的浏览器加密的条目,其 ct 字段无法读取。你的会话 Cookie 会随其中每一个请求一起发送,包括 chat 请求,就像在任何你已登录的网站上一样。
在“网络”标签页打开的情况下打开一个分享链接:shares/… 请求只包含链接的 ID。# 之后的内容不会出现在任何地方。
在 neverno.ai 上,页面的 Content-Security-Policy 标头列出了它获准联系的全部地址:我们的服务器、Supabase、用于你的媒体的 Runware 的 CDN、用于防机器人验证的 Cloudflare,以及为告解室实时语音对话预留的两个地址(api.elevenlabs.io 和我们的服务器 rt.neverno.ai);这两个地址是提前列入的:在该功能开放之前,页面绝不会连接它们。没有第三方统计分析,没有广告。
NeverNo 的隐私保护做不到的,或者暂时还做不到的:
每一项涉及你隐私的变更都附有日期。本页的部分事实(模型、提供方、保留期限、加密参数)由自动化测试检查:如果代码发生变化,测试会一直失败,直到本页得到修正。
# 中;其中的图片使用同一密钥加密。