Cherry Studio 隐私保护机制全解析:数据采集边界、本地存储架构与第三方服务合规指南
【免费下载链接】cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio
导读
Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端,其隐私策略的核心立场是"数据本地化、采集最小化、边界透明化"。本文以仓库根目录的 PRIVACY.md(更新于 2026 年 8 月 20 日,同日生效)为骨架,结合渲染层设置界面(BasicDataSettings.tsx)、主进程遥测服务(AnalyticsService.ts)以及隐私弹窗实现(PrivacyPolicyUpdateGate.tsx)等源码证据,系统解读 Cherry Studio 采集什么、明确不采集什么、数据存到哪里、第三方服务如何衔接,以及用户如何通过设置界面行使完整的知情与控制权。读完本文,你将能准确回答"Cherry Studio 到底上传了我的什么数据"这一问题,并掌握在客户端内完成隐私策略确认与数据采集开关的全部操作路径。
一、隐私策略的总体框架:匿名化采集与本地优先存储
PRIVACY.md 开篇即申明三项基本原则,构成整个隐私策略的骨架:
- 采集最小化:仅采集两类"完全匿名化、不含个人身份信息"的操作性信息,且全部以聚合(aggregated)形态存在;
- 本地优先:API Keys、历史对话、偏好设置默认只存本机,软件不提供云同步服务;
- 用户可控:所有数据采集行为均可通过客户端内开关随时关闭,且不影响核心功能。
从源码结构看,这一框架在工程上被落实为两个独立的偏好键,其默认值定义于偏好数据层(app.privacy.*命名空间):
| 偏好键 | 语义 | 默认 |
|---|---|---|
app.privacy.data_collection.enabled | 数据采集总开关 | 首次使用时由用户在隐私引导中选择 |
app.privacy.policy_version | 已确认的隐私策略版本号 | 与 constants.ts 中LATEST_PRIVACY_POLICY_VERSION = '20260820'对齐后即为已确认 |
二、采集范围:两类匿名操作信息
PRIVACY.md 将采集信息分为两类,均"不含对话内容、API Keys 或任何个人可识别信息"。
(1) 基础运行信息(Basic Operational Information)
默认采集,用于保障基本功能、安全性与版本兼容:
- 软件版本信息:用于版本兼容性检查与安全更新推送;
- 聚合的功能使用信息:各功能的总体使用概况(不含具体行为细节)。
(2) 产品改进信息(Product Improvement Information)
默认采集,用于持续改进产品体验:
- 功能使用活跃度与频率:各功能的活跃程度与调用次数;
- 错误日志与崩溃报告:运行过程中产生的匿名错误日志与崩溃堆栈,用于故障排查与稳定性改进。
(3) 采集承诺
无论归属哪一类,所有采集信息均承诺:
- 完全匿名化,无法关联到个人身份;
- 不会用于用户画像或定向广告,不会出售或提供给第三方(法律法规强制要求除外);
- 不会包含对话内容、API Keys、知识库内容或任何敏感数据。
源码佐证:采集开关如何真正生效
主进程的 AnalyticsService.ts 是这套承诺在工程层面的落地。其核心逻辑:
this.desiredEnabled = preferenceService.get('app.privacy.data_collection.enabled') && preferenceService.get('app.privacy.policy_version') === LATEST_PRIVACY_POLICY_VERSION即:遥测客户端(AnalyticsClient)只有在数据采集开关开启且用户已确认最新隐私策略版本两个条件同时满足时才被激活。onActivate阶段仅上报应用启动事件(版本号与操作系统平台),trackTokenUsage在未激活或未授权时直接短路返回,onDeactivate则会销毁客户端实例。同时,该服务通过subscribeChange订阅两个偏好键的变化,用户在设置界面拨动开关的瞬间,运行状态即被重新收敛(level-triggered 的最新值生效机制),无需重启应用。
三、明确不采集的边界:API Keys、对话数据与敏感信息
PRIVACY.md 第二章以"绝对承诺"的措辞划出采集红线,明确不收集、不存储、不传输、不处理以下数据:
- API Keys:用户输入到软件中的模型服务 API Key;
- 对话数据:使用过程中产生的任何对话数据,包括聊天内容、指令信息、知识库信息、向量数据及其他自定义内容。唯一的例外是使用"内置模型服务"时为完成推理所必需的一次性瞬时转发(见第四章),且该内容"不记录、不存储、请求结束立即丢弃";
- 个人身份信息与敏感个人信息:任何能直接或间接识别个人身份的信息,以及适用法律定义的敏感个人信息。
源码佐证:凭证的本地存放
从 PreferencesMappings.ts 可见,包括 WebDAV 主机、用户名、密码等在内的备份凭证均映射到本地偏好键(data.backup.webdav.*),与云端无关。这与"凭证仅存本地、软件不采集不存储"的策略声明一致。用户在客户端内输入的所有第三方凭证都停留在本机存储层,而非回传 Cherry Studio 服务器。
四、本地存储与数据交互:无云同步、直连第三方
数据本地化(Data Localization)
API Keys、历史对话记录、个人偏好设置默认存储在本机设备上。Cherry Studio不提供云同步服务,不会将这些数据上传到自己的服务器(内置模型服务必需的瞬时转发除外)。
直连调用(Direct Calls)
当你使用自行配置的第三方模型服务(如 OpenAI、Anthropic)时,软件仅作为本地工具提供接口调用能力:
- 你的终端设备与所配置的第三方模型服务提供商服务器之间建立直接网络连接;
- 该数据不经过 Cherry Studio 服务器中转。
从架构层面理解,Cherry Studio 的角色是一个"本地连接与配置层",模型推理请求由客户端直发出网,而非经官方服务器代理,这与"直连调用"的声明互相印证。
内容合规义务
无论使用内置模型服务还是自配第三方服务,用户均不得利用本软件制作、复制、发布、传播任何违反中国法律法规或所在国家/地区法律的信息(危害国家安全、损害国家荣誉利益、破坏民族团结、散布谣言、扰乱社会秩序、宣扬淫秽色情暴力、侵犯他人合法权益等均被明确列举)。
五、内置模型服务:瞬时转发的边界与风险提示
Cherry Studio 提供无需配置 API Key 的内置模型服务。使用时,完成推理所必需的提示词、对话上下文与模型响应会经由 Cherry Studio 官方服务转发。PRIVACY.md 对此给出严格边界:
- 只处理当前请求:不记录、不存储相关内容,请求完成即丢弃,不用于任何其他目的;
- 上游处理:对应的上游模型服务提供商会在其服务范围内处理请求内容,受其自身隐私策略约束;
- 可变性:内置模型及其服务提供商可能随服务状况调整,用户也可以自行选择其他模型服务;
- 可用性免责:内置服务依赖上游能力,可能因服务调整、网络状况或上游变更而中断、延迟或不可用;模型输出由模型自动生成,官方不对其准确性、完整性或适用性作任何担保,用户应自行判断并承担使用风险。
与第三章的区别:第三章的"不采集对话数据"例外条款与本章互相呼应——内置模型服务场景下存在一次性瞬时转发,但其目的严格限定于"完成推理",且转发内容不落盘、不记录,不构成采集与存储。
六、第三方模型服务:独立责任与合规边界
当你使用自行申请并配置 API Key 的第三方模型服务进行 AI 对话时,你实际上是直接接受该第三方模型服务提供商的服务:
- 风险自担:你应承担使用第三方模型服务提供商所带来的一切隐私与合规风险;
- 独立处理:各模型提供商(如大语言模型公司)会依据自身隐私策略与数据安全措施,处理你主动输入的数据(如对话内容),并可能在其服务范围内独立收集其他相关数据;
- 超出控制:此类处理与收集活动超出软件控制范围,设置中的隐私开关无法禁用此类活动;
- 处理方式:如需了解或禁用此类数据活动,请查阅所选模型服务提供商官网的隐私策略并联系对方处理,软件不为此承担责任。
源码佐证:设置界面的隐私开关边界
渲染层的 BasicDataSettings.tsx 中,隐私开关绑定的正是app.privacy.data_collection.enabled偏好键:
const [enableDataCollection, setEnableDataCollection] = usePreference('app.privacy.data_collection.enabled')该开关只控制 Cherry Studio 自身的匿名遥测采集,管不到第三方模型服务商对你直连请求内容的处理——这正是 PRIVACY.md 反复强调"设置开关无法禁用第三方活动"的工程含义。
七、第三方服务衔接:云备份与外部连接
为方便你管理与处理数据,软件在 [设置] - [数据设置] 中支持以下第三方服务功能(可通过输入 API 地址、用户名、密码等配置使用,实际支持的服务以客户端内显示为准):
- 云备份设置:WebDAV、S3 兼容存储、坚果云(Nutstore);
- 第三方连接:Notion、语雀(Yuque)、Joplin、Obsidian、思源笔记(SiYuan Note)等。
源码佐证:第三方服务的本地实现
主进程侧存在独立的 WebDav.ts 与 S3Storage.ts 服务实现,负责将本地数据备份到用户自行指定的远端存储。结合偏好映射表可见,此类服务的地址、账号、密码均落在本地偏好键(data.backup.webdav.*)中。
使用第三方服务时的规则
- 凭证仅限本地:你输入的 API Keys、密码等凭证仅在本机使用,软件不采集、不存储此类信息或数据,请妥善保管自己的凭证;
- 独立运营:第三方服务由各自服务商独立运营,其数据处理活动(收集、使用、存储、共享)受服务商自身隐私策略与条款约束,建议连接前仔细阅读并理解相关服务商的隐私策略与服务条款;
- 责任自负:你应合规使用第三方服务并承担全部风险与责任;因使用第三方服务导致的数据泄露、丢失或不当处理,软件不承担责任;
- 注意独立收集:上述第三方服务商可能在其服务范围内独立收集你的数据,此类收集超出软件控制,设置中的隐私开关无法禁用,如需禁用请直接联系对应服务商。
八、第三方服务免责声明与计费边界
(1) 第三方服务的独立性
Cherry Studio 是帮助用户连接、配置和使用第三方提供的 AI 模型、API、网络服务及其他相关服务的开源软件。除非软件另有明确声明,第三方服务由各服务商独立提供、运营并承担责任,软件与服务商之间不因提供连接与配置功能而形成代理、共同经营、合作经营、担保、授权收费等法律关系。通过软件配置或使用第三方服务,不意味着软件是该服务的提供方、销售方、收费方或结算方。本节适用于用户配置使用的第三方服务,不适用于第四章所述的内置模型服务。
(2) 第三方服务费用与计费
第三方服务是否收费及其收费标准、免费额度、模型价格、Token 价格、缓存价格、倍率、套餐、充值优惠、币种换算方式、结算规则等计费政策,均以各第三方服务商实际发布并执行的规则为准。软件不参与服务商的实际计费、扣费、充值、退款或结算流程,也无法保证实时获取所有服务商最新、完整、准确的计费信息。用户使用第三方服务产生的费用,由用户与服务商按服务协议、定价政策与实际使用情况自行结算。
(3) 客户端内价格及相关信息
为改善用户体验,软件可能在客户端内展示模型价格、免费状态、Token 单价、上下文长度、模型名称、模型能力等与第三方服务相关的信息。此类信息仅供参考,不构成软件或服务商对用户的报价、收费承诺、免费承诺、价格保证或任何合同承诺,也不应作为确定第三方服务最终收费的唯一依据(软件明确声明该信息由相关服务商实时提供并作为正式计费依据的除外)。由于服务商可能随时调整价格、模型、免费政策、倍率、计费方式等规则,软件内展示的信息可能存在延迟、遗漏、错误、失效或与服务商实际规则不一致的情况。在使用任何可能产生费用的第三方服务前,应通过服务商官方渠道自行核实最新价格与计费规则。
(4) API Keys 与账号责任
用户自行提供、配置或授权使用第三方服务的 API Keys、访问令牌、账号等认证信息时,应事先核实对应账号的余额、权限、免费额度、计费规则与安全状况。因用户配置、使用或管理第三方账号、API Keys 或第三方服务而产生的任何使用费用、超额费用、余额扣减或其他经济损失,由用户与服务商按服务商规则处理。
(5) 第三方服务异常与争议
因第三方服务商引起的任何服务中断、模型变更、价格调整、计费异常、重复扣费、账号冻结、额度不足、退款争议、接口错误、数据丢失、服务不可用等问题,用户应直接向对应第三方服务商主张权利或寻求解决。在合理范围内,软件可能视实际情况向用户提供必要的技术信息或排查协助,但这不意味着软件对第三方服务承担责任,也不构成对第三方服务商行为的担保或背书。第三方服务商独立开展的收费、扣费、退款与服务活动,不因用户通过本软件使用该服务而转化为软件的行为或责任。
九、隐私策略的更新与确认机制:首次引导与版本门槛
策略更新流程
PRIVACY.md 规定,隐私策略可能不时更新。发生重大变更时(包括但不限于采集范围调整、用户权利修改、数据处理实践变更),将通过软件内显著通知、版本发布说明或其他适当方式提前通知,并在新版本中明确标注更新日期与生效日期。更新策略生效后,用户继续使用软件即视为知悉并接受更新条款。
源码佐证:版本门槛与强制确认
策略版本号被编码为LATEST_PRIVACY_POLICY_VERSION = '20260820'(constants.ts),与 PRIVACY.md 的更新/生效日期完全对应。
渲染层的 useIsPrivacyUpdateRequired.ts 定义了是否需要用户确认:
return dataCollectionEnabled && policyVersion !== LATEST_PRIVACY_POLICY_VERSION即:仅当采集开关开启且本地策略版本落后于最新版本时,才会触发确认门槛。若用户此前已关闭数据采集,则无需再次确认——这与"采集开关关闭后不打扰用户"的设计意图一致。
确认交互由 PrivacyPolicyUpdateGate.tsx 实现,提供两条明确路径:
- 接受并继续(acknowledge):将
app.privacy.policy_version更新为LATEST_PRIVACY_POLICY_VERSION,保留数据采集开关的开启状态; - 拒绝并继续(continueWithoutConsent):将
app.privacy.data_collection.enabled置为false并关闭弹窗,即"不采集、不确认"地继续使用核心功能。
首次安装场景则由 OnboardingPage.tsx 承载:接受策略则写入最新版本号;拒绝则写入dataCollectionEnabled: false且策略版本留空,之后正常使用。
隐私策略正文的呈现
PrivacyPolicyDialog.tsx 负责将本地打包的privacy-en.html/privacy-zh.html(按界面语言自动选择)以沙箱 iframe(sandbox="allow-scripts")形式加载展示,并支持明暗主题参数。隐私策略正文以本地资源文件随应用分发,而非依赖在线 URL,进一步契合"本地优先、最小联网"的隐私立场。
十、联系我们与响应承诺
如对隐私策略或 Cherry Studio 的隐私保护措施有任何疑问,或希望就信息处理事宜联系官方,可通过以下渠道:
- 邮箱:privacy@cherry-ai.com
- 响应时效:收到请求后15 个工作日内回复
附:隐私相关源码索引(便于继续深入)
| 关注点 | 仓库路径 |
|---|---|
| 隐私策略正文 | PRIVACY.md |
| 遥测服务实现(采集开关双条件判定) | AnalyticsService.ts |
| 数据设置 / 隐私开关界面 | BasicDataSettings.tsx |
| 隐私策略更新门槛 Hook | useIsPrivacyUpdateRequired.ts |
| 更新确认弹窗(接受 / 拒绝两条路径) | PrivacyPolicyUpdateGate.tsx |
| 策略正文加载弹窗(本地 HTML + 沙箱 iframe) | PrivacyPolicyDialog.tsx |
| 首次安装隐私引导 | OnboardingPage.tsx |
| 策略版本号常量 | constants.ts |
| WebDAV 备份服务实现 | WebDav.ts |
| S3 兼容存储备份实现 | S3Storage.ts |
| 第三方备份凭证偏好映射 | PreferencesMappings.ts |
【免费下载链接】cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考