在 OpenRouter 上你的数据被哪一层记了:data collection 与 provider logging 的口径
现象:同一个问题,两个方向都会问到你
一种是排障方向的:线上某次回答明显跑偏,你想回头看看当时的 prompt 到底发了什么,结果在日志里只翻到 token 数和耗时,内容一个字都没有。
另一种是合规方向的:安全或法务问「我们的输入输出被留在哪、留多久、会不会被拿去训练」,你打开路由平台的设置页,看到好几个听起来都像的开关,一时说不清哪个管哪一层。
这两个方向其实是同一件事的两面。OpenRouter 官方文档把它拆在两页:openrouter.ai/docs/guides/privacy/data-collection 讲平台自己收什么,openrouter.ai/docs/guides/privacy/provider-logging 讲下游各 provider 的策略以及你能控制到哪一步。分不清这两页的口径,是这类问题最常见的起点。
先把「层」拆开:三处记录、互不等价
按这两页写明的内容,一次请求会经过下面这几处记录点。默认状态那一列全部按文档原话,不是我们的观察。
| 记录点 | 记的是什么 | 文档写明的默认 | 文档写明的入口 |
|---|---|---|---|
| OpenRouter · 私有输入输出日志 | 你的 prompts 与 completions 内容,用于调试、对比模型回答、优化 prompt | Off by default | 文档写明在 Observability 设置里开启 |
| OpenRouter · 用于改进产品 | 你的 prompt 与 completion 数据,交给 OpenRouter 用于改进产品 | Off by default | 文档写明在 Privacy 设置里开启 |
| OpenRouter · metadata | 请求本身的信息,文档举的例子是 prompt 与 completion 的 token 数、延迟等 | 文档写明每次请求都会存 | 这两页没有写明关闭方式 |
| provider · 是否用于训练 | 由各 provider 自己的政策决定 | 文档没有写明默认值 | 账户设置页的训练开关,付费模型与免费模型分开设置 |
| provider · 保留期 | 由各 provider 自己的条款决定 | 文档没有写明默认值 | 见下文,这一项和路由不是一回事 |
三个要点值得单独拎出来:
第一,data-collection 页开篇的 Note 写明,OpenRouter 上的任何 prompt 留存都是 opt-in 的,并写明它从未把底层 prompt 数据分享、出售或授权给第三方。上表前两行都标了 off by default,就是这句话的落地。
第二,metadata 是一条独立的旁路。文档写明它「不包含 prompt 或 response 的内容,只包含关于请求本身的信息」,并写明这些 metadata 用来支撑平台的报表、模型排名,以及你自己在 openrouter.ai/logs 看到的日志 metadata。所以「日志里查得到这次请求」和「日志里查得到这次请求发了什么」是两件事,开头那个排障场景基本都卡在这。
第三,data-collection 页还有一段斜体说明:平台会抽样少量 prompt 做匿名分类,用于报表和模型排名;如果你没有开启「用于改进产品」那个开关,对你 prompt 的分类结果会完全匿名存储,不与你的账号或 user ID 关联,并且这项分类由一个采用 zero-data-retention 策略的模型完成。这一段既不是上表第一行也不是第二行,读的时候容易漏掉。
怎么确认是哪一层:三个可执行的判定动作
动作一:先确认平台侧两个开关的状态。 按文档写明的入口,逐个打开对应的设置页看当前状态,而不是凭印象。这里有个坑:data-collection 页把「用于改进产品」的开关指向 workspace 路径下的设置页,provider-logging 页里的 Data Policy Filtering 提示则把账户级设置指向 openrouter.ai/settings/privacy——两页给出的是两个不同的链接路径,别默认它们是同一个页面,以官方文档最新内容为准。
动作二:区分「训练」和「保留」这两个词。 这两个词在中文语境里经常被合成「会不会留我的数据」一句话问出来,但文档把它们分成了两套机制:
- 训练:
provider-logging页写明,你可以在账户设置里选择是否允许路由到那些可能用你的数据做训练的 provider,付费模型与免费模型是分开的两项设置;如果你在账户设置里对训练做了 opt out,OpenRouter 就不会把请求路由到会训练的 provider。同一段还写明,这项设置与 OpenRouter 自己的政策、以及它对你 prompt 的处理无关。 - 保留:同一页的 Data Retention & Logging 一节写明,OpenRouter 并没有基于 provider 数据保留策略而变化的路由规则,各 provider 的保留策略按其条款如实呈现在那一页的表格里,用户可以自行忽略不符合自己保留要求的 provider。
这一条是这两页里最反直觉的地方:关掉训练会改变路由行为,保留期不会。 如果你的合规要求写的是「不得留存超过 N 天」,只关训练开关是覆盖不到的。
动作三:确认这次请求走的是不是区域主机名。 provider-logging 页末尾写明,面向企业客户,OpenRouter 支持 EU 与 US 两个区域的 in-region routing;为你的账户启用后,prompts 与 completions 在所选区域内处理,不会离开该区域;EU 请求用 https://eu.openrouter.ai,US 请求用 https://us.openrouter.ai。文档同时写明,这项能力只对企业客户按申请开启(by request),并给了企业联系表单的入口。也就是说,你直接把基址换成区域主机名,不等于区域驻留就生效了。
文档语义给出的处置
按上面三个动作定位到具体那一层之后,处置分别是:
- 想留内容用于排障:开启私有输入输出日志。文档写明这些数据是给你自己看的,OpenRouter 不访问也不使用;对组织而言,只有 admin 能查看被记录的数据。这条对团队很关键——开了之后,组织里能看到 prompt 原文的是 admin,不是每个成员。
- 不想被拿去训练:在账户设置里对训练做 opt out,并且记得付费与免费是两项,只关一项覆盖不到另一项。
- 要按 data policy 卡住路由:
provider-logging页的 Data Policy Filtering 提示写明,可以对单次请求做限制,只使用符合某种 data policy 的 provider,并把具体说明指向了openrouter.ai/docs/guides/routing/provider-selection的 “requiring providers to comply with data policies” 一节;同样的限制也有账户级设置。具体的请求体字段名与取值以那一页为准,这两页没有写出字段名,我们不替它编一个。 - 要求数据不出境/不出区:走 in-region routing,但它是企业侧按申请开启的能力,不是改个 base URL 就有的开关。
- 要核实某个 provider 的条款原文:
provider-logging页写明,每个 provider 的完整服务条款从该 provider 的页面链接出去,并在openrouter.ai/docs/guides/routing/provider-selection的 terms of service 一节做了汇总。
处置后怎么验证
验证一:区分内容与 metadata。 开启私有日志之后,能不能看到内容是判断开关是否生效的直接标志;只看得到 token 数与延迟,说明你看到的还是 metadata 那一条旁路。
验证二:区域主机名下的可用模型。 文档写明,要查看区域路由下有哪些模型可用,通过对应的区域主机名调用 /api/v1/models/user,并把详细说明指向了 API 参考中按用户 provider 偏好、隐私设置与 guardrail 过滤模型列表的那一页。也就是说,把主机名换成 https://eu.openrouter.ai 或 https://us.openrouter.ai 之后,调这个路径拿到的列表就是该区域下的口径。鉴权请求头的具体写法这两页没有写,以 API 参考页为准,密钥在示例里一律写成 <YOUR_API_KEY>。
这里插一句通用做法、不是 OpenRouter 官方文档内容:Windows 侧验证时要注意,PowerShell 里的 curl 默认是 Invoke-WebRequest 的别名,引号与参数写法和 Linux/macOS 上的 curl 不一致,习惯上会显式写 curl.exe 或改用 PowerShell 自己的语法;Linux/macOS 与 Windows 的 WSL、Git Bash 下则是常规 curl。这一条与 OpenRouter 无关,只是避免你把工具差异误判成接口差异。
验证三:provider 保留策略表怎么看。 provider-logging 页里那张「Provider / Data Retention / Train on Prompts」三列的保留策略表,是页面打开时才去取数据再渲染的运行时组件,文档的静态文本里并没有名单。所以这篇不会列「哪些 provider 是零保留」——那份名单不在文档正文里,写出来就是编的,请以你打开那一页时的实际内容,以及各 provider 条款原文为准。
不过表格的取值口径是写在页面里的,值得知道:保留那一列有四种表述——零保留、保留若干天、保留期未知但会保留 prompt、以及策略未知;训练那一列是「可能训练」与「不训练」两种状态。「策略未知」和「零保留」是两回事,做合规盘点时别把前者当成后者。
什么情况说明不是这个原因
前面几层都排完还没对上,多半就不在这两页的范围内了:
- 日志里没有内容,但私有日志开关本来就是关的——这不是日志丢了,是文档写明的默认行为:OpenRouter 在你不 opt-in 的情况下不存储你的 prompts 与 responses。这种情况没有「找回」可言,只能从开启之后的请求开始留。
- 训练已经 opt out,却发现下游仍有保留期——这不是开关没生效。按文档,训练开关影响路由,保留策略不影响路由,两套口径本来就不重合。
- 换了区域主机名但数据仍未按区域处理——in-region routing 是企业客户按申请开启的,账户没开通时,换主机名不构成开通。
- 你担心的记录发生在你自己的网关或中间层——如果请求先过了自建代理、日志中间件或第三方观测平台,那一层的留存与这两页无关,OpenRouter 的文档也管不到它。
- 问题落在具体某个 provider 的条款细节上——这两页只给出汇总入口和呈现方式,条款原文在各 provider 自己那里,以原文为准。
最后提醒一句老生常谈但确实会咬人的事:这类隐私与路由设置的页面在平台侧改动不算少,开关的名称、入口路径和文档链接都可能变,本文写的是我们在文档里核到的机制口径,具体操作请以官方文档最新内容为准。
本文依据 OpenRouter 官方文档(openrouter.ai/docs)于 2026-08-18 的公开内容整理。
该平台闭源,本文只复述官方文档写明的机制,不推断其内部实现;
我们没有对文中涉及的功能做过实测,因此不涉及界面外观与运行表现的任何描述。
该平台的供应商、模型与路由策略随时变动,文中不列具体供应商名单与模型清单;
价格、额度与限流的具体数值请以官方定价页与用量说明为准。
安全与合规相关做法请结合自身环境评估,本文不构成安全方案建议。 合规与许可条款请以官方原文与你所在组织的要求为准,本文不构成法律意见。