mirror of
https://github.com/sanbuphy/claude-code-source-code.git
synced 2026-04-03 03:24:57 +08:00
3.2 KiB
3.2 KiB
遥测与隐私分析
基于网络公开资料与社区讨论整理的 Claude Code v2.1.88 分析报告。
概述
Claude Code 实现了双层分析管道,收集大量环境和使用元数据。虽然没有证据表明存在键盘记录或源代码窃取,但收集范围之广和无法完全退出的事实引发了合理的隐私担忧。
数据管道架构
第一方日志 (1P)
- 端点:
https://api.anthropic.com/api/event_logging/batch - 协议: OpenTelemetry + Protocol Buffers
- 批量大小: 每批最多 200 个事件,每 10 秒刷新一次
- 重试机制: 二次方退避,最多 8 次尝试,失败事件持久化到磁盘
- 存储位置:
~/.claude/telemetry/
来源: src/services/analytics/firstPartyEventLoggingExporter.ts
第三方日志 (Datadog)
- 端点:
https://http-intake.logs.us5.datadoghq.com/api/v2/logs - 范围: 仅限 64 种预批准事件类型
- Token:
pubbbf48e6d78dae54bceaa4acf463299bf
来源: src/services/analytics/datadog.ts
收集了什么
环境指纹
每个事件都携带以下元数据 (src/services/analytics/metadata.ts:417-452):
- platform, platformRaw, arch, nodeVersion
- 终端类型
- 已安装的包管理器和运行时
- CI/CD 检测、GitHub Actions 元数据
- WSL 版本、Linux 发行版、内核版本
- 版本控制系统类型
- Claude Code 版本和构建时间
- 部署环境
进程指标 (metadata.ts:457-467)
- 运行时间、rss、heapTotal、heapUsed
- CPU 使用率和百分比
- 内存占用详情
用户追踪 (metadata.ts:472-496)
- 正在使用的模型
- 会话 ID、用户 ID、设备 ID
- 账户 UUID、组织 UUID
- 订阅等级 (max, pro, enterprise, team)
- 仓库远程 URL 哈希 (SHA256 前 16 位)
- 代理类型、团队名、父会话 ID
工具输入日志
默认截断工具输入:
- 字符串: 512 字符处截断,显示 128 + 省略号
- JSON: 限制 4,096 字符
- 数组: 最多 20 项
- 嵌套对象: 最多 2 层
然而,当设置 OTEL_LOG_TOOL_DETAILS=1 时,完整工具输入会被记录。
文件扩展名追踪
涉及 rm, mv, cp, touch, mkdir, chmod, chown, cat, head, tail, sort, stat, diff, wc, grep, rg, sed 的 Bash 命令,其文件参数的扩展名会被提取并记录。
无法退出的问题
第一方日志管道无法被关闭(对于直接使用 Anthropic API 的用户)。
isAnalyticsDisabled() 仅在以下情况返回 true:
- 测试环境
- 第三方云提供商 (Bedrock, Vertex)
- 全局遥测退出(设置界面未暴露此选项)
没有面向用户的设置可以禁用第一方事件日志。
GrowthBook A/B 测试
用户在不知情的情况下被分配到实验组。系统发送的用户属性包括:
- id, sessionId, deviceID
- platform, organizationUUID, subscriptionType
关键结论
- 体量: 每个会话收集数百个事件
- 无法退出: 直接 API 用户无法禁用第一方日志
- 持久化: 失败事件保存到磁盘并积极重试
- 第三方共享: 数据发送到 Datadog
- 工具详情后门:
OTEL_LOG_TOOL_DETAILS=1启用完整输入记录 - 仓库指纹: 仓库 URL 被哈希后发送用于服务端关联