遥测为什么没亮:/status 与 claude doctor 会点名被忽略的变量
「环境变量写了 CLAUDE_CODE_ENABLE_TELEMETRY,面板却一片安静」——这类问题以前只能猜优先级。CLI 2.1.282 把答案摆到明处:启动时会有提示,/status 和 claude doctor 也会列出项目 settings 里被忽略、或把遥测关掉的变量,解释「为什么遥测其实没在跑」。
和 Auto mode 是否走服务端分类器的关系,可对照 Auto mode 服务端分类器;本文聚焦遥测可见性与 settings 边界。
2.1.282 加了什么
公开 changelog 写明:
- 启动通知;
/status条目;claude doctor条目;
都会列出:项目 settings 文件里被忽略的遥测相关变量,以及关掉遥测的变量。目标不是教你「必须开遥测」,而是让「开了 / 没开 / 被谁盖掉」可核对。
排查顺序建议:
claude doctor—— 机器级健康检查,适合复制给同事。- 会话内
/status—— 看当前会话实际生效态。 - 对照启动横幅里是否已点名某变量。
三处说法不一致时,以当前会话 /status 为准,再回头查哪份 settings 覆盖了环境变量。
项目 / 本地 settings:导出类 OTEL 会被忽略
同版本另一条变更更关键:
项目与本地 settings 忽略会打开导出、设置导出端点、或捕获内容的 OpenTelemetry 变量,例如
CLAUDE_CODE_ENABLE_TELEMETRY、OTEL_LOG_*一类。
含义直白:
| 写法位置 | 期望「靠它打开导出」 | 实际 |
|---|---|---|
| 用户级 / 托管策略等(非项目本地那一类) | 可能生效(以官方层级为准) | 按原优先级 |
| 项目或本地 settings 里塞导出开关 / 端点 / 内容采集 | 想让仓库一 clone 就全员打点 | 会被忽略 |
这是安全与隐私默认:仓库不该悄悄替每位贡献者打开内容级遥测导出。需要组织级采集时,走托管 settings / 管理策略,别塞进每个 repo 的 .claude 本地文件指望生效。
和 Auto mode 服务端默认的交叉
2.1.282 还写:在直连 Anthropic API、且遥测关闭时,Auto mode 默认改用服务端分类器(可用 CLAUDE_CODE_AUTO_MODE_SERVER=0 退出)。也就是说:
- 你关掉遥测,省的是本地/导出侧开销;
- Auto mode 仍可能走服务端分类,避免分类器开销计到你头上(细节见此前 auto mode server 文)。
排「遥测没数据」时,别和「Auto mode 是否 server-side」混成同一个开关——/status 里两者都会各自露一行时,分开读。
实操清单
- 升级到 2.1.282+。
- 跑
claude doctor,搜 telemetry / OTEL / ignored。 - 开会话执行
/status,确认「被忽略的变量」列表是否点到你刚改的那几项。 - 若变量写在项目或本地 settings:挪到允许的层级,或接受「仓库级打点本来就不会生效」。
- 企业环境优先问管理员托管策略,而不是在每个项目里复制一份
OTEL_*。
遥测从「黑盒猜」变成「点名告诉你为何熄灭」。先看 doctor 和 /status,再改配置,少走半小时弯路。