昨晚临睡前整执行任务呢,CC 提示凉了,tmd.
享年 2 周不到,搞得我一宿没睡好.
这次本来感觉挺稳的,就是正常 CC 开发项目,从没用 APP 和网页,结果凉的这么突然?感觉网络层不应该有问题啊。
想到 REA 不是挺火的吗,逆了一把最新的 CC ,主要看有哪些探针遥测,初步报告,感觉可以深挖啊。
- 探针( Probes )
2.1 IDE 探针 [源码 m0366 ] 枚举 lockfile 解析出 port / pid / ideName / authToken / workspaceFolders → pid 存活检查 + TCP 连接探测( 500ms )→ 陈旧 lockfile 自动删除 → WS/SSE callIdeRpc("getDiagnostics"); autoInstallIdeExtension 默认开(可自动安装 IDE 扩展,CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL 可关)。IDE 侧事件经 MCP log_event 回传为 tengu_ide_*。
2.2 终端能力探针 tengu_terminal_probe [源码 m1492 ] 一次性探测即上报:xtversion 、term_program_version 、is_ssh 、multiplexer(tmux/zellij/screen/none)、term_rows/cols 、dec2026_allowlist 、renderer_entry_path 、mouse_mode 、linux_clipboard_tool 、vte_terminal 。
2.3 Git 探针 [ m0258/m0366/m0112 ] git rev-parse/.git/ 读取; shell 命令正则分类为 tengu_git_operation{commit|commit_amend|push|pr_create|pr_review…}——连 curl -X POST .../pulls 绕过 gh 的 PR 创建也识别。
2.4 更新/安装探针 [ m1492/m0632 ] downloads.claude.ai/claude-code-releases 版本检查( DISABLE_INSTALLATION_CHECKS 可关);更新失败状态落盘并本地提示。
2.5 网络探测 [ m0141/m0870 ] 代理全家族、企业网关 host-check/vouching ( claude.fedstart.com 等)、/api/web/domain_info?domain=、Azure WIF 走 IMDS 169.254.169.254 。
2.6 跨工具配置导入(用户主动) [ m1024/m1026 ] claude import 读取 ~/.codex/config.toml 、.gemini/、.cursor/ 用户级配置,且明确拒绝导入项目级配置(防仓库投毒)。
2.7 自我标记 [ m0005 ] sRn() 把 AI_AGENT=claude-code_<version>_<x> 写进子进程环境。
- 环境感知
- 平台/CI ( m0030 ):github-actions / gitlab-ci / circleci / buildkite / azure-functions / digitalocean / huggingface-spaces / kubernetes / docker (/.dockerenv )。
- 终端/宿主:TERM_PROGRAM 、TERM(ghostty/kitty)、TMUX/STY/ZELLIJ/WT_SESSION/KONSOLE/GNOME ;经 VSCODE_GIT_ASKPASS_MAIN 路径指纹区分 cursor / windsurf / devin / antigravity / codium ; CURSOR_TRACE_ID 。
- 系统/场景:os.type/os.version 、host.arch (进遥测资源属性); CLAUDE_CODE_ENVIRONMENT_KIND/_RUNNER_VERSION/_CONTAINER_ID/_SESSION_KIND(bg); is_ssh 、WSL 。
- 客户端分类( m1643 ):clientType:sdk-ts→sdk-typescript 、sdk-py→sdk-python 、sdk-cli 、claude-vscode 、local-agent 、claude-desktop 。
- 账号/组织( m0141 ):organizationUuid/accountUuid 、organizationRole 、subscriptionCreatedAt/类型、claudeCodeFirstTokenDate 。
- 远程配置:remote-settings.json/policy-limits.json 本地缓存 + GrowthBook ( growthbook_experiment 事件、payload 热更新、C("tengu_cozy_dusk") 类开关读取)。
- 信息收集
- 标识 [ m0141 ] :deviceId = userID ,/^[0-9a-f]{64}$/,randomBytes(32) 生成并持久化——随机安装 ID ,无硬件指纹;另有 machineId 配置字段; OAuth 场景 email 被显式剔除( email: v?void 0:this.email())。
- 事件公共字段:deviceId 、sessionId 、parentSessionId 、platform 、apiBaseUrlHost (当前网关主机名)、organizationUUID 、accountUUID 、userType 、subscriptionType 、entrypoint 、clientType 、agentType 、isInteractive (含 snake/camel 双命名映射)。
- 反馈调查载荷:appearance_id 、survey_type 、response 、prompt_index 、last_assistant_message_id(哈希)、trigger——无内容文本。
- 本地数据目录(非上传):telemetry/、statsig/、usage-data/、startup-perf/(耗时+内存快照)、dump-prompts/、api-dumps/( API 请求 JSONL )、sessions/、history.jsonl 、shell-snapshots/。
- 内容类数据唯一出口(均用户主动):CCR 云会话工作树打包上传( tengu_ccr_bundle_upload ,HIPAA 组织拒绝)、反馈包、分享/上传、/api/claude_code_shared_session_transcripts 。
- 官方自述边界( m1333 文案):essential telemetry = crash stacks / startup failure reasons / version·OS metadata ;"No prompts, completions, file contents, or identifiers beyond a random install ID"——与代码观察一致。
- 上报
通道① 1P 事件(默认开) [ m0057/m0141/m0599/m1643/m1333 ]
- 调度器 m0057 (导出 {qSt,f7r,i,js}):所有 i("tengu_…") 先入队(上限 1000 ),sink 挂载后 logEvent/logEventAsync 分发;
- POST {ANTHROPIC_BASE_URL|api.anthropic.com}/api/event_logging/v2/batch ( staging 变体存在);
- 参数:批量≤200 、队列≤8192 、10s 定时(或 OTEL_LOGS_EXPORT_INTERVAL )、超时 10s 、重试 8 次、退避 500ms→30s 、退出前 final flush ;
- 由 initialize1PEventLogging 初始化,GrowthBook 刷新时热更新; SDK/IDE 宿主事件校验后汇入( sdk_host 标注);
- 事件面:2,701 个 tengu 事件/开关名( git 、会话、MCP 、更新、终端、IDE 、反馈……);
- 网络目录用途原文:"Claude Code usage telemetry, sent from inside the agent sandbox",toggle=disableNonessentialTelemetry 。
通道② 1P 指标(默认开) [ m1619 ]
- POST {BASE_API_URL}/api/claude_code/metrics ( BigQuery 行 JSON 、5s 超时、不跟随重定向);
- 上报前查组织开关 GET /api/claude_code/organizations/metrics_enabled ;
- 间隔 = GrowthBook 开关 tengu_cozy_dusk ,钳制 [5min, 60min],默认 5min ;
- 可靠性:OAuth 401 刷新重试、storageV5 磁盘暂存、关停时上报在途、失败去重。
通道③ 3P OTel ( opt-in ):CLAUDE_CODE_ENABLE_TELEMETRY=1 + OTEL_* 全家族;另有内测 BETA_TRACING_ENDPOINT 与远程会话 {SESSION_INGRESS}/v1/code/sessions/{id}/worker/otlp/{signal}(强校验 endpoint origin 防凭据误投)。
通道④ 错误路径:归一化后进本地队列( recentErrors 100 / queue 1000 ),sink 只接本地日志( logError/logMCPError/logMCPDebug );捕获被 DISABLE_ERROR_REPORTING 、essential-traffic 、Bedrock/Vertex/Foundry/Anthropic-AWS/GCP/Mantle 分支关闭。全二进制无 Sentry SDK/DSN——o1158394.ingest.us.sentry.io 仅存在于共享网络策略目录的桌面端条目。
门控矩阵(权威实现 m1643 ne(),档位定义 m0026 nwt()): NODE_ENV=test | DISABLE_TELEMETRY | CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | DO_NOT_TRACK → 关 provider-managed (Bedrock/Vertex/Foundry/Anthropic-AWS/GCP/Mantle) → 关 useGateway / gateway 登录 / 自定义 OAuth URL → 关 组织级: disableEssentialTelemetry / disableNonessentialTelemetry / metrics_enabled → 组织可关 DISABLE_ERROR_REPORTING / DISABLE_INSTALLATION_CHECKS → 分项关 CLAUDE_CODE_ENABLE_TELEMETRY → 3P OTel 显式开
内置出网清单 [目录 m1333 ] :host + toggleKey + 用途 + origin ( anthropic-telemetry 、sentry="Essential telemetry"、datadog-rum 、segment 、downloads.claude.ai 、telemetry.googleapis.com 、IMDS…),等价官方明文 egress 目录。
-
对早前口述结论的两处修正
-
开关/实验引擎是 GrowthBook ( growthbook_experiment 事件、onGrowthBookRefresh 链路);~/.claude/statsig 只是目录名,二进制内无 statsig 域名。
-
Sentry 归属:先前据 SENTRY_INGEST_HOST + DISABLE_ERROR_REPORTING 判断"Sentry 崩溃上报默认开"不成立——该常量与目录条目属桌面端共享代码; CLI 侧错误只进本地日志/反馈包。
-
证据边界(未决项)
-
字节码-only 模块(部分 ID 逻辑、底层 HTTP 客户端)未做字节码反编译,结论止于字符串/调用点级;
-
610/150,394 条导入边是 REA 采样上界,非全量模块图;
-
反馈事件的 last_assistant_message_id 哈希算法未逐字节核验;
-
事件 sink 的具体实现( m0057 挂载点下游)在字节码模块中。