mirror of
https://github.com/sanbuphy/claude-code-source-code.git
synced 2026-04-03 11:34:54 +08:00
init repo
This commit is contained in:
109
docs/zh/01-遥测与隐私分析.md
Normal file
109
docs/zh/01-遥测与隐私分析.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# 遥测与隐私分析
|
||||
|
||||
> 基于网络公开资料与社区讨论整理的 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 被哈希后发送用于服务端关联
|
||||
Reference in New Issue
Block a user