用途:这是 microsoft/vscode-cosmosdb 扩展使用的遥测最佳实践规范,用于在新增、修改或审查遥测代码时遵循统一规则。适用于扩展宿主、webview、语言服务和辅助包等整个代码库。
主要能力与规则:遥测数据视为公开,任何属性与度量值都可能被后端及仪表盘访问者看到,每个新属性都需按隐私决策处理。硬性规则是不得上报 PII/EUII,包括文件名、路径、目录名、工作区名、用户 ID、资源名、数据库名、容器名、连接字符串、主机名、端点、端口、查询文本、文档内容、schema/DDL、含上述内容的错误信息、自由输入、提示词与 AI 响应、邮箱、用户名、机器名、IP 地址及其派生字符串。允许的例外是 OII 标识,但必须使用预定义键名:subscriptionId、tenantId、resourceId(需用 vscode.TelemetryTrustedValue 包装)、accountName,且不得拆分资源 ID 分别上报。
使用方式:当代码调用 callWithTelemetryAndErrorHandling 或同步版本、注册命令、赋值 context.telemetry.properties.* / measurements.*、定义会修改 IActionContext 的 helper、新增或重命名事件名时应用本规范。字符串、枚举、布尔值放 properties,布尔值需 String 化;计数、时长、大小、比率放 measurements;比率取整,避免 NaN/Infinity 与 null。事件名采用 cosmosDB.<area>[.<subarea>].<action> 静态形式,键名用 camelCase 并保持稳定。敏感值一经获取就应 push 到 context.valuesToMask;webview 侧用 telemetryContext.addMaskedValue。
限制与注意:valuesToMask 只红act 错误路径字符串,是纵深防御,不能替代隐私规则;mask 只推非空字符串。错误应使用有界枚举的 errorCategory,不上报原始 error.message。审查清单要求检查是否含 PII、数值归类、事件名静态、最佳努力子事件设置 suppressDisplay=true 与 rethrow=false 等。具体各功能的完整实现细节与更多示例,资料未提供。