Files
claude-code-source-code/docs/zh/01-遥测与隐私分析.md
2026-04-01 18:55:02 +08:00

110 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 遥测与隐私分析
> 基于网络公开资料与社区讨论整理的 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
```
## 关键结论
1. **体量**: 每个会话收集数百个事件
2. **无法退出**: 直接 API 用户无法禁用第一方日志
3. **持久化**: 失败事件保存到磁盘并积极重试
4. **第三方共享**: 数据发送到 Datadog
5. **工具详情后门**: `OTEL_LOG_TOOL_DETAILS=1` 启用完整输入记录
6. **仓库指纹**: 仓库 URL 被哈希后发送用于服务端关联