← Silent Star

X-Ray · Agent 工具链

Cline 桌面版默认开启遥测,登录后的事件里出现了邮箱

查完 ZCode 和 MiniMax、Qoder,我接着检查了那台 Mac 上的 Cline Desktop 0.0.32。这次没找到整仓 Git 打包的实现,倒是在本地遥测记录里看到了账号和邮箱字段。它们出现在登录之后,值得和官方的匿名遥测说明放在一起看。

先交代检查范围:我读了桌面版的 sidecar、~/.cline 下的设置和日志,也核对了 Cline 的公开文档。没有抓 TLS 包,所以这里能说明客户端配置了哪些出站路径、记录了什么事件,不能据此确认每条事件都已经送到服务端。

Cline 桌面版三条出站路径,遥测、功能开关和对话 API
客户端分别处理遥测、功能开关和模型对话。遥测开关不控制对话 API。

默认值和登录后的字段

应用在 /Applications/Cline.app,短版本 0.0.32,标识是 bot.cline.app。2026 年 9 月 19 日凌晨 1 点 17 分首次启动后,global-settings.json 里的 telemetryOptOut 是 false,也就是没有退出遥测。sidecar 的 Zod schema 使用相同的默认值;设置文件不存在、读取返回 ENOENT 时,退出遥测的判断也返回 false。

telemetryOptOut: z.boolean().default(false).catch(false)

启动当秒的日志写着 OpenTelemetry 已启用。二进制配置里,logs 和 metrics 通过 OTLP http/json 发往 https://otel.cline.bot,鉴权头包含在包内;功能开关使用 PostHog,host 是 https://data.cline.bot。code.log 已经记录了启动事件 user.extension_activated、功能开关事件 $feature_flag_called,以及两次会话的 session.started。其中,功能开关 ext-cline-pass 的值为 true。

变化发生在登录时。1 点 17 分的事件只有设备哈希;1 点 19 分登录后,公共字段里多了账号 ID、邮箱、组织信息和供应商名,对应的函数叫 identifyAccount。我查到的官方遥测文档称数据匿名、不含个人信息,但至少这份桌面客户端记录下来的公共字段包含了邮箱,不能直接用“匿名”概括。

这里还要区分桌面版和扩展。Cline 在 2025 年 2 月 26 日的博客里写,安装扩展时会询问 Allow 或 Deny。这次检查的是桌面版 0.0.32:磁盘设置和代码默认值都表明遥测开启,但仅凭日志,无法还原首次启动时有没有出现同意提示。

凌晨 1 点 17 分启动,1 点 19 分登录后带上邮箱,1 点 23 分两次会话
本地记录后来增长到约 69 MB,主要来自 hub 保存的会话流。这个体积不代表遥测上传量。

模型对话和遥测要分开看

凌晨 1 点 23 分和 1 点 24 分,这台机器建立了两次会话,供应商都是 cline,模型是免费档,工作区根目录记录为 /。本地 sessions.db 有 2 行,消息文件分别约 542 KB 和 204 KB。按供应商字段、官方 API 文档及二进制配置判断,选择 Cline 供应商时,对话请求走 https://api.cline.bot,提交给模型的提示词和工具结果通过这条 API 发送。

本地会话记录不能都算作遥测。hub-events 库保存了 assistant.delta、tool.started 等运行时事件;而 code.log 里这两条 session.started 记录的是 sessionId、source、providerId、modelId、enableTools 和登录后的账号字段,没有提示词正文。它们用途不同,保存在磁盘上的内容也不能直接当作已经上传的内容。

没找到 Git 快照,但仍有没查清的字段

在这份 sidecar 中,我没有搜到 pack-objects、workspace.zip、initCodebase 或 snapshot/upload。检查到的工作区初始化遥测只包含根目录数量、是否为 Git 仓库、是否为远程工作区,没有源码正文和路径字符串。这些结果没有显示出 ZCode 那种整仓 Git 快照路径,但不足以排除所有未检查到的数据发送行为。

官方遥测文档还列出了代码、文件内容、文件路径、命令参数、对话内容和个人信息等不应包含的数据。已检查的工作区初始化事件没有路径和对话正文,登录后的公共字段却包含邮箱。至于提示词会不会进入 task.conversation_turn,本机 code.log 没有这类事件样本;发送函数又会将传入的 properties 原样 emit,具体包含什么还要继续查调用方。

遥测可以关,对话请求不会跟着停

按这份客户端的实现,退出遥测需要把 ~/.cline/data/settings/global-settings.json 中的 telemetryOptOut 设为 true。sidecar 也支持桌面命令 set_telemetry_opt_out。从 false 改成 true 时,它会先记录一条 user.opt_out,再停止遥测。

这个开关不会停掉 api.cline.bot 上的模型对话。对话交给谁处理,要另看供应商配置:使用本地模型或自备密钥的供应商,会改变对话请求的去向;关掉遥测本身不会让云端对话变成本地对话。

和前两篇放在一起看

ZCode 3.10.1 MiniMax 3.0.68 Qoder CN 0.3.3 Cline 0.0.32
代码中的发送内容 工作区文件加整个 .git/ workspace.zip 源文件 ZIP 批次 使用事件,登录后带账号字段
客户端用途 仓库快照 远程 embedding 远程 embedding 产品遥测和功能开关
检查到的开关行为 host 不读设置页开关 关,除非偏好写成 true 国内产品表关掉远程 telemetryOptOut 默认 false
本机记录 公开小仓的本地状态显示已接收 索引表 0 行 本地扫了 10 万文件,未见索引上传记录 已记录启动、登录及两次会话事件
对话怎么读代码 已检查的会话用 Read / Bash 读磁盘 未在这台机器上观察到 ZIP 回读 CN 未建立 codebaseId 选 Cline 供应商则走对话 API

表格中的实现、开关和本机记录是三个不同层面的信息。本文仅涉及这台 Mac 上的 Cline Desktop 0.0.32;服务端是否收到、怎样保存这些事件,本次检查没有验证。

文章目录5
Silent Star约 4 分钟