X-Ray · Agent 工具链
Cline 桌面版默认开着遥测,登录后公共字段带上邮箱
网上传编程 Agent 会静默上传仓库。ZCode 和 MiniMax、Qoder 已经对过。同一台机器后半夜装了 Cline 桌面版。我先把 Cline 公开文档和 2025 年那篇匿名遥测博客对了一遍,再拆这台机器上的 0.0.32 sidecar,并核对 ~/.cline 里已经写下的日志。
Cline 会把使用事件送出机器。它没有把整个 .git 打成快照。
这台机器上已经发出去的
应用在 /Applications/Cline.app,短版本 0.0.32,标识 bot.cline.app。数据目录 ~/.cline。2026 年 9 月 19 日凌晨 1 点 17 分第一次启动。global-settings.json 里 telemetryOptOut 写成 false。sidecar 里 Zod schema 的默认值也是 false。设置文件不存在时,判断退出遥测的函数碰到 ENOENT 返回 false,等于默认开着。
telemetryOptOut: z.boolean().default(false).catch(false)
sidecar 日志在启动当秒写下 OpenTelemetry 已启用。logs 和 metrics 走 OTLP http/json。二进制把终点写成 https://otel.cline.bot,鉴权头也写死在包里。功能开关走 PostHog,host 是 https://data.cline.bot。
已经落在 code.log 里的事件有这些。
启动打了 user.extension_activated。功能开关打了 $feature_flag_called,其中 ext-cline-pass 为 true。登录后两次会话各打一条 session.started。
1 点 17 分那些事件只带设备哈希。1 点 19 分登录以后,公共字段多了账号 ID、邮箱、组织信息和供应商名。函数名叫 identifyAccount。官方文档写遥测匿名、不含个人信息。这份桌面版启动后的公共字段对不上那句话。
2025 年 2 月 26 日 Cline 博客说遥测完全可选,安装扩展时会问 Allow 或 Deny。这台桌面版 0.0.32 第一次启动就写出 telemetryOptOut 为 false。日志里看不到一次拒绝提示。我不能证明界面弹过窗。我能证明磁盘上的默认是开。
对话走另一根管子
凌晨 1 点 23 分和 1 点 24 分,这台机器开了两次会话。供应商都是 cline,模型是免费档。工作区根目录写成 /。本地 sessions.db 有 2 行。消息文件在本机,一份大约 542 KB,另一份大约 204 KB。
选 Cline 当模型供应商时,聊天内容会打到 https://api.cline.bot。这是对话 API。用户把提示词交给这家的模型,服务器必然看见提示词和工具结果。ZCode 那种静默 Git 包是另一条采集路径。我没有抓网包,这条判断来自供应商字段、官方 API 文档,以及二进制里的 api.cline.bot。
本地还有一份很大的 hub-events 库,里面是 assistant.delta、tool.started 这类运行时事件。那是本机 hub 在记会话流。不能把它直接当成已经上传的遥测。
code.log 里的 session.started 带 sessionId、source、providerId、modelId、enableTools,以及登录后的账号字段。这两条里没有提示词正文。
仓库快照这条路没找到
sidecar 里搜不到 pack-objects、workspace.zip、initCodebase、snapshot/upload。工作区初始化遥测只带根目录数量、是不是 git、是不是远程工作区,不带源码正文,也不带路径字符串。
官方遥测文档写,Cline Telemetry 不含代码、文件内容、文件路径、命令参数、对话内容和个人信息。路径和对话内容这两项,在工作区初始化事件上对得上。账号邮箱写进公共字段,和个人信息那条对不上。提示词会不会进 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 上的对话。不想把对话交给 Cline 账号,换本地或自备密钥的供应商。
对照
| 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。VS Code 扩展可能另有同意提示。我没有抓这台机器的 TLS 包,OTLP 有没有送到对端,只能看二进制配置和本地 telemetry sink。服务端怎样存这些事件,客户端证明不了。