37. 遥测 (Telemetry) 与隐私实现深度对比

April 3, 2026 · View on GitHub

遥测 (Telemetry) 数据采集是 AI 编程代理最敏感的话题。从"零遥测 (Telemetry)"到"782 个事件类型 + 硬件指纹 + Machine ID",各工具的隐私立场差异巨大。

隐私等级总览

等级工具默认状态Machine ID硬件采集事件规模
A(零遥测)Kimi CLIN/A0
A(零遥测)OpenCodeN/A0
B(Opt-in)Aider关闭✗(随机 UUID)OS/架构少量
B(Opt-in)Goose关闭✗(随机 UUID)OS/架构少量
C(默认开启)Claude Code开启CPU/hostname782 事件
C(默认开启)Gemini CLI开启CPU/GPU/RAM194 键
C(默认开启)Qwen Code开启✓(继承)继承40+ RUM
D(不透明)Copilot CLI开启未确认平台信息未公开
D(不透明)Codex CLI开启未确认平台信息未公开
D(不透明)Qoder CLI开启✓(getMachineKey)未确认未公开

一、Claude Code:782 事件 + Machine ID(采集最广)

来源:EVIDENCE.md(二进制反编译 v2.1.81)

遥测端点

端点用途
api.anthropic.com/api/claude_code/metrics主遥测
http-intake.logs.us5.datadoghq.com/api/vDatadog 日志(US5)
api.segment.ioSegment 分析
api.anthropic.com/api/claude_code/organizations/metrics_enabled组织遥测开关

Machine ID 采集方式

平台方法
macOSioreg -rd1 -c IOPlatformExpertDeviceIOPlatformUUID
Linux/etc/machine-id(主)→ /var/lib/dbus/machine-id(备)
WindowsHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid
FreeBSD/etc/hostidkenv -q smbios.system.uuid

782 事件类型 + 功能标志

tengu_ 前缀事件覆盖所有代理行为:

事件类别示例说明
tengu_agent_*agent_start, agent_stop代理生命周期
tengu_api_*api_call, api_error, api_opus_fallback_triggeredAPI 调用与 fallback
tengu_auto_mode_*auto_mode_start自动模式
tengu_session_*session_start, session_end会话管理
tengu_tool_*tool_use, tool_result工具使用追踪
tengu_dynamic_skills_changed技能激活/停用
tengu_compact_*compact_start, compact_end压缩操作

功能标志(Feature Flags,从二进制提取)

tengu_defer_all_bn4        — 延迟工具加载(ToolSearch)
tengu_defer_caveat_m9k     — 延迟工具提示消息
tengu_turtle_carbon        — Ultrathink 模式(扩展思维)
tengu_marble_anvil         — Thinking Edits(思考中编辑建议)
tengu_hawthorn_steeple     — 内容去重
tengu_hawthorn_window      — 去重窗口大小配置

发送的数据字段

{
  "accountUuid": "...",           // Anthropic 账号 ID
  "organizationUuid": "...",      // 组织 ID
  "userType": "external",         // 用户类型
  "subscriptionType": "pro",      // 订阅层级
  "rateLimitTier": "tier_1",      // 速率限制层级
  "platform": "darwin-arm64",     // 平台信息(oOH() 函数)
  "firstTokenTime": 1234,         // 首 token 延迟(ms)
  // CI 环境额外字段:
  "githubActionsMetadata": {
    "GITHUB_ACTOR": "...",
    "GITHUB_REPOSITORY": "org/repo",
    "GITHUB_REPOSITORY_OWNER": "org"
  }
}

禁用方式

export DISABLE_TELEMETRY=true
# 或
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=true

二、Gemini CLI:194 键 + 完整硬件画像

来源:EVIDENCE.md(源码分析)

遥测端点

play.googleapis.com/log?format=json&hasfast=true

Google Clearcut 分析:Console=GEMINI_CLI, Source=CONCORD

  • 缓冲区:1000 事件
  • 刷新间隔:60 秒
  • 最大重试:100 次

硬件采集(systeminformation 库)

采集项详情
CPU型号 + 核心数
GPU型号(独有)
RAM总量 GB
OS平台/版本
Node.js版本号
Docker是否在容器中

用户追踪

  • 当前 Google 账号邮箱
  • 历史账号列表
  • 生命周期账号计数

环境变量保护(模式匹配)

始终阻止:*TOKEN*, *SECRET*, *PASSWORD*, *KEY*, *AUTH*, *CREDENTIAL*, *PRIVATE*, *CERT*
显式阻止:CLIENT_ID, DB_URI, CONNECTION_STRING

禁用方式

export GEMINI_TELEMETRY_ENABLED=false

三、Qwen Code:Aliyun RUM 替换 Clearcut

来源:EVIDENCE.md(源码分析)

关键变化:分叉后遥测重建

组件Gemini CLI(上游)Qwen Code(分叉)
主遥测Google ClearcutAliyun RUM
端点play.googleapis.comgb4w8c3ygj-*.rum.aliyuncs.com
App IDgb4w8c3ygj@851d5d500f08f92
OTLP可配置继承

Aliyun RUM 事件类型

RumViewEventRumActionEventRumExceptionEventRumResourceEvent

  • 40+ 事件:session、prompts、tool calls、API、arena、auth、subagent、skills

禁用方式

export QWEN_TELEMETRY_ENABLED=false

四、Aider:Opt-in 10% 采样(最克制)

来源:EVIDENCE.md(源码分析)

PostHog 分析

# 10% 采样:仅 UUID 前 6 位 hex < 10% 的用户被提示
PERCENT = 10
ph.capture(distinct_id=random_uuid, event=event, properties=super_properties)

采集内容

  • Python 版本、OS 平台、架构
  • Aider 版本
  • 模型名称(未知模型自动脱敏为 provider/REDACTED

不采集

  • MAC 地址、hostname、IP
  • 文件内容、Git 数据、环境变量

禁用方式

aider --analytics false
# 或在配置中
permanently_disable: true

五、Goose:Opt-in + 错误脱敏

来源:EVIDENCE.md(源码分析)

PostHog + 隐私保护

// 自动脱敏:用户路径、API 密钥、邮箱、Bearer token、UUID → [REDACTED]
// 属性过滤:自动移除 key/token/secret/password/credential 键

禁用方式

export GOOSE_TELEMETRY_OFF=1

六、零遥测工具

Kimi CLI

递归搜索零结果——无 PostHog、Sentry、Mixpanel 或任何分析 SDK。metadata.py 仅用 MD5(工作目录路径) 做本地会话命名。

OpenCode

递归搜索零结果——无分析 SDK、无报告端点。


禁用方式速查

Agent环境变量
Claude CodeDISABLE_TELEMETRY=true
Gemini CLIGEMINI_TELEMETRY_ENABLED=false
Qwen CodeQWEN_TELEMETRY_ENABLED=false
Aider--analytics falsepermanently_disable: true
GooseGOOSE_TELEMETRY_OFF=1
Copilot CLI未公开
Codex CLI未公开
Kimi CLI无需(零遥测)
OpenCode无需(零遥测)

隐私设计哲学:ZDR 与无状态架构

Codex CLI 的无状态设计(来源:OpenAI Blog,2026-01-24)

Codex CLI 故意不使用 previous_response_id 参数,每次请求完全无状态:

"Every request is stateless, which is essential for ZDR customers who have opted out of data storage."

这是隐私优先的架构决策——牺牲了会话连续性的便利,换取了数据不被存储的保证。

Anthropic 的质量承诺

"We never reduce model quality due to demand, time of day, or server load." — A postmortem of three recent issues(2025-09-17)

隐私 vs 功能的权衡

隐私策略代表 Agent牺牲的功能
零遥测Kimi CLI、OpenCode无使用数据优化产品
Opt-in 采样Aider(10%)、Goose大部分用户不贡献数据
无状态架构Codex CLI(ZDR)无跨请求会话状态
默认开启Claude Code(782 事件)用户可能不知情

证据来源

Agent来源获取方式
Claude CodeEVIDENCE.md(259-309 行)二进制反编译
Gemini CLIEVIDENCE.md(遥测章节)开源
Qwen CodeEVIDENCE.md(RUM 配置)开源
AiderEVIDENCE.md(PostHog API key)开源
GooseEVIDENCE.md(PostHog 脱敏)开源
Kimi CLIEVIDENCE.md(零遥测确认)开源
OpenCodeEVIDENCE.md(零遥测确认)开源
综合对比privacy-telemetry.md跨 Agent 对比文档