deveco-cli 匿名遥测与隐私保护机制全解析:采集边界、加密存储与一键关闭 开发工具CLIOpenHarmonyMCP 服务移动开发【免费下载链接】deveco-cli集成HarmonyOS应用开发工具集提供知识文档和精品Skills支持多种智能体助力开发者使用AI辅助高效开发HarmonyOS应用。项目地址https://gitcode.com/openharmony-sig/deveco-cli点击查看免费下载本指南以仓库根目录的 PRIVACY.md 为纲结合deveco-cliHarmonyOS 应用开发命令行工具src/trace/下的真实实现系统讲解内置匿名遥测打点的数据采集边界、AES-256-GCM 本地加密存储、HTTPS 上报与失败重试链路以及通过环境变量一键完全关闭遥测的完整方案。读完本文你将掌握deveco-cli究竟采集了什么、为什么不采集源码与凭据、数据落在哪里、如何加密、何时上传以及如何在企业内网或隐私敏感环境下彻底停用遥测。1. 遥测的定位与设计原则deveco-cli内置的匿名遥测打点仅用于改进产品体验典型用途包括统计各子命令的使用频率、构建耗时、失败率、内存占用等质量与性能指标。它遵循三条明确的设计原则默认开启但绝不绑定业务遥测开关独立于任何业务功能。从源码看Telemetry.track() 在关闭状态下会直接透传被包裹的业务函数fn()并返回其结果只是不记录任何事件打点落盘失败在 record() 中被try/catch静默吞掉上传失败同样只记日志、绝不阻塞或改变命令行为。匿名优先安装标识uid为纯随机生成的 UUID v4与任何硬件、系统信息无关事件中不携带源码、文件内容、账号凭据等敏感信息。可一键完全关闭通过环境变量DEVECO_CLI_DISABLE_TELEMETRY1关闭后不采集、不落盘、不上传业务功能不受任何影响详见第 6 节。2. 采集了什么事件类别与公共字段2.1 事件类别总览deveco-cli的遥测事件按功能域分为五类对应源码 events.ts 中的EventType枚举Command_executed/serve_mcp/skills/docs/check等。每类事件的触发场景与采集的业务字段落event_detail如下事件触发场景采集的业务字段event_detail命令执行devecocli各子命令build / run / device / emulator / skills / docs / update / create / auth 等命令名、使用的选项仅 flag 名称不含参数值、耗时、成功/失败、错误码、部分命令的内存统计如构建内存MCP 工具调用devecocli serve mcp下的工具调用check / hover / definition / references 等工具名、方向incoming/outgoing、文件扩展名、CLI 与语言服务进程内存、成功/失败、错误码技能操作devecocli skills add / list / find / remove子操作名、使用的选项仅 flag 名称、find 搜索词原文与长度、add/remove 的 --skill 取值、下载数据量、安装/移除成功数、失败原因仅脱敏后的首词不含具体错误文本文档检索devecocli docs search / read / catalog搜索词原文与长度、目录名、文档 ID语法检查devecocli check lint/check compat命令选项仅 flag 名称、耗时、成功/失败、错误码、内存统计2.2 每条事件的公共字段除上述业务字段外每条事件统一携带以下公共字段对应源码TraceEventProperties见 events.tsuid匿名安装标识初始化时在本机随机生成 UUID v4 并存储于数据目录不读取 MAC 地址、硬件或任何系统信息。删除数据目录后重新生成重置前后的遥测事件无法关联到同一安装。源码实现见 install-id.ts使用crypto.randomUUID()生成并通过wx独占写文件保证多进程并发时各进程拿到同一 ID。session_id本次进程会话的随机 IDcrypto.randomUUID()每次运行重新生成见 telemetry.ts仅用于聚合本次会话内的事件不作为身份标识。trace_uuid每条事件的随机 ID。环境信息操作系统名称与架构、CLI 版本、DevEco Studio 版本、CLT 版本、Node.js 版本均来自 buildTraceEvent()其中resolveOsName()还能区分 Windows 10/11、macOS、LinuxresolveOsArch()将x64规范为amd64。耗时、成功/失败、错误码duration_ms、success、error_code。预定义枚举值与 CLI 管理的固定系统选项对应的取值如文档目录名catalog、目标 agent 名、来源分类user_project/sdk/system、输出格式等白名单值——仅收集固定、预定义的选项值。异常信息出错时仅采集脱敏后的错误信息。源码 trace-error.ts 中的toTraceErrorCode()明确规定TraceError取其脱敏的traceMessage其余异常仅上报错误码如ENOENT/EACCES或异常类型名不采集堆栈轨迹不携带原始错误消息。2.3 从源码看仅记 flag 名、不记取值如何落地文档强调命令参数原则上仅记录 flag 名称、不记录取值这在代码中有硬性保证。以技能命令为例skills.ts 的buildSkillsArgs()手工构造打点参数数组只 push--all、--long、--force、--skill、--agent等 flag 名称本身不拼接任何用户传入的路径或取值--path、--project只记 flag 名从源头避免用户路径经process.argv进入打点。失败原因的脱敏同样有据可查sanitizeFailedError() 用正则^([A-Za-z_][A-Za-z0-9_-]*)只截取错误文本的首个单词如Unknown/Failed/Installation且最长 32 字符路径、技能名等细节全部剔除。3. 明确不采集的内容deveco-cli对以下四类信息做出明确不采集的承诺不采集源码、文件内容、工程内数据、命令输出、终端输入。不采集除skills find/docs search的搜索词原文与skills add/remove的--skill取值外不采集用户创建的输入内容与外部标识符如本地文件路径、Maven 坐标、自定义项目名。不采集DevEco 账号、登录凭据、token、Cookie 等敏感信息。不采集操作系统级硬件标识WindowsMachineGuid、macOSIOPlatformUUID、Linuxmachine-id等及 MAC 地址。安装标识uid为纯随机生成与硬件完全无关——从 install-id.ts 的注释可以确认这一点它不读取 MAC 地址、硬件或任何系统信息。4. 本地存储与加密4.1 数据目录结构打点数据统一存放于数据根目录/TraceLogData/。数据根目录默认~/.local/share/deveco-cli/可通过环境变量DEVECO_CLI_DATA_DIR覆盖解析逻辑见 cli-data-dir.tsCLI 入口初始化见 cli.ts。目录内主要文件telemetry-YYYY-MM-DD.txt当天事件文件每行一条加密事件failed/上传失败事件的加密归档目录install-id匿名安装标识UUID v4去横线后作为上报请求头deviceidtrace-file-secret本地落盘加密密钥base64 编码的 32 字节随机值upload-state.json上传状态firstEventAt/lastUploadAt/lastRetryAt见 upload-state.ts。4.2 AES-256-GCM 落盘加密事件按天分文件落盘文件使用AES-256-GCM 加密存储每条事件一行一个密文 blob。实现位于 file-crypto.ts每次加密使用随机 12 字节 IVblob 结构为{ version: 1, algorithm: aes-256-gcm, ciphertext, iv, authTag }均为 Base64。密钥由本机独立的随机密钥trace-file-secret与安装标识uid完全无关经 SHA-256 派生createTraceFileKey密钥文件仅存在于本机数据目录、永不随事件上传仅用于防止本地文件被直接读取上传前在内存中解密。file-crypto.test.ts 的测试用例验证了密钥确定性派生、每次调用使用全新 IV、篡改 authTag/密文或使用错误密钥解密均返回null——这保证了本地密文既无法被直接读取也具备防篡改能力。4.3 容量上限与异常兜底为防止磁盘被无限占用遥测子系统设置了一系列硬性阈值常量定义见 upload-state.ts单个打点文件不超过8 MBTRACE_FILE_MAX_BYTES单条密文行约 1.1 KB约 7.6k 条事件归档上报失败的事件时超出部分只保留最新事件、较旧事件被丢弃takeNewestWithinBudget()从尾部往前截取见 telemetry.ts超过 8 MB 的待上报文件会被直接丢弃而不上传避免上传进程内存溢出flushFile()进程中断遗留的.pending临时文件超过 1 小时PENDING_STALE_MS后会被自动回收并回同名文件重试或删除见reclaimStalePending()flush()与retryFailed()通过runExclusive()串行化避免并发写同一 failed 文件。4.4 删除数据与重置安装标识删除数据非常简单直接删除TraceLogData目录即可清空全部打点数据。由于uidinstall-id文件存储于该目录内删除后下次运行会重新生成新的安装标识重置前后的遥测事件无法关联到同一安装。5. 上报机制5.1 触发时机上报遵循事件在本地先攒、再批量上传的策略两条触发链路共用同一阈值UPLOAD_INTERVAL_MS 5 分钟CLI 模式命令执行结束时cli.ts 调用maybeSpawnTelemetryUpload()。当本地存在待上报事件且距首条事件firstEventAt超过 5 分钟时spawn 一个 detached 后台子进程执行flush() retryFailed()见 telemetry-upload-spawner.ts 与 telemetry-upload-background.ts子进程脱离父进程、不阻塞 CLI 退出。MCP 模式devecocli serve mcp下由调度器定时触发——startScheduler() 每 5 分钟flush()一次、每 1 小时retryFailed()一次。判断是否该上传的完整逻辑见 isUploadDue()或有待上传事件且最早事件已等待超过 5 分钟或 failed 目录有 7 天内的待重试文件且距上次重试超过 1 小时。5.2 上报链路与协议上报使用 HTTPS上传器实现见 trace-uploader.tsPOST到遥测服务端点请求头携带sender: deveco-cli与deviceid即安装标识uid去横线后的值body 为明文 JSON 数组[{ action, detail: 事件对象 JSON 字符串, timestamp }, ...]。批量上传每批最多 200 条、单批 payload 上限约 1.7 MiBMAX_BATCH/MAX_PAYLOAD_BYTES见 telemetry.ts解密采用惰性分批collectDecryptBatch()峰值内存仅约文件大小。上传内容为第 2 节所述事件数据不含任何本地文件内容。上传器本身静默不记录 URL、报文与响应体成败由调用方统一打 debug 日志。5.3 失败重试与过期清理上传失败的事件会加密归档到TraceLogData/failed/原始密文行原样写回无需重新加密按约 1 小时间隔自动重试RETRY_INTERVAL_MSMCP 由调度器定时触发CLI 由命令结束时按isUploadDue触发的后台进程触发文件名日期超过7 天的失败文件会被直接删除、不再重试FAILED_MAX_AGE_MS单文件同样受 8 MB 上限约束归档时预算不足只保留最新事件。6. 如何完全关闭遥测设置环境变量并重启终端会话即可完全关闭遥测# Windows (PowerShell) $env:DEVECO_CLI_DISABLE_TELEMETRY 1 # macOS / Linux export DEVECO_CLI_DISABLE_TELEMETRY1源码层面开关判定在 isTelemetryDisabled()环境变量值为1或true时视为关闭。关闭后不再采集任何事件不创建新的打点文件不上传已有打点数据不会自动删除如需删除见第 4.4 节直接删除TraceLogData目录业务功能不受任何影响track()仅透传业务结果、跳过记录。7. 相关环境变量速查环境变量作用源码依据DEVECO_CLI_DISABLE_TELEMETRY1关闭遥测采集与上报也接受trueupload-state.tsDEVECO_CLI_DATA_DIR覆盖数据根目录含打点数据目录TraceLogData默认~/.local/share/deveco-cli/cli-data-dir.ts8. 进一步阅读源码地图若想深入验证本文结论可直接阅读以下实现与测试遥测核心类采集、落盘、调度、重试telemetry.ts事件类型与公共字段定义events.ts安装标识生成install-id.ts落盘加密AES-256-GCM与测试file-crypto.ts、file-crypto.test.ts上传阈值与开关判定upload-state.ts、upload-state.test.tsHTTPS 上报器trace-uploader.ts异常脱敏trace-error.ts后台上传进程与入口接入telemetry-upload-spawner.ts、telemetry-upload-background.ts、cli.ts端到端测试telemetry.test.ts、telemetry-instance.test.ts使用提示遥测默认开启属于产品出厂行为在需要严格隐私管控的场景如企业内网、涉密开发环境下建议在安装脚本或开发者文档中统一设置DEVECO_CLI_DISABLE_TELEMETRY1并在需要彻底清除本地数据时删除数据根目录/TraceLogData/目录。赞分享开发工具CLIOpenHarmonyMCP 服务移动开发【免费下载链接】deveco-cli集成HarmonyOS应用开发工具集提供知识文档和精品Skills支持多种智能体助力开发者使用AI辅助高效开发HarmonyOS应用。项目地址https://gitcode.com/openharmony-sig/deveco-cli点击查看免费下载相关推荐Flower 遥测Telemetry机制全解析匿名用量采集原理、隐私保护与一键关闭指南Flower 遥测Telemetry机制全解析匿名用量采集原理、隐私保护与一键关闭指南 Flower 开源框架内置了一套匿名的使用遥测Telemetry联邦学习机器学习人工智能分布式训练深度学习Strix 遥测Telemetry机制全解析收集什么、隐私边界与一键关闭Strix 遥测Telemetry机制全解析收集什么、隐私边界与一键关闭 导读 Strix 是一个开源 AI 渗透测试工具其遥测telemetry模网络安全渗透测试应用安全AI Agent人工智能红蓝对抗SoundSwitch 遥测与隐私Sentry 数据采集范围、匿名化机制与关闭方法SoundSwitch 遥测与隐私Sentry 数据采集范围、匿名化机制与关闭方法 SoundSwitch 项目根目录 https://link.gitco桌面应用上一篇GPUI 实战指南Zed 的 GPU 加速 UI 框架如何把状态、按键与像素接到一起下一篇漫画阅读新纪元Copymanga第三方APP深度体验与功能解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考