X-Ray · Agent 工具链
Cline 桌面版默认开启遥测,登录后的事件里出现了邮箱
查完 ZCode 和 MiniMax、Qoder,我接着检查了那台 Mac 上的 Cline Desktop 0.0.32。这次没找到整仓 Git 打包的实现,倒是在本地遥测记录里看到了账号和邮箱字段。它们出现在登录之后,值得和官方的匿名遥测说明放在一起看。
先交代检查范围:我读了桌面版的 sidecar、~/.cline 下的设置和日志,也核对了 Cline 的公开文档。没有抓 TLS 包,所以这里能说明客户端配置了哪些出站路径、记录了什么事件,不能据此确认每条事件都已经送到服务端。
默认值和登录后的字段
应用在 /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 点 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;服务端是否收到、怎样保存这些事件,本次检查没有验证。