aio-cli-plugin-遥测
Adobe 开发者 cli 使用遥测
图标
aio telemetry yes
允许 cli 收集匿名使用数据
USAGE
$ aio telemetry yes
$ aio telemetry off
$ aio telemetry
ARGUMENTS
[STATE] (on|off|yes|no) set telemetry state
DESCRIPTION
Allow the cli to collect anonymous usage data
参见代码 : src/命令/遥测/index.js
配置
当此插件由不同的 CLI 托管时 :
aioTelemetry(根中的可选对象)package.json会 议 日 程 和 议 程 主机 CLI 一样pjsonoclif通过入内钩:postUrl(可选字符串):接收 POSTed 量子批量的遥测代理的 HTTPS URL. 当您的 CLI 发送到一个不同于插件默认的 App 构建器动作或网关时使用此功能 .fetchHeaders:可选额外信头合并为遥测请求(Content-Type总是设定)productPrivacyPolicyLink: 一次性遥测通知中显示的链接(收集什么以及如何选择退出)
productName: 如何在遥测通知中提及CLI(来自displayName或者说name内package.json(中文(简体) )productBin: 在帮助文本中显示(来自bin内package.json;如果存在多个宾箱,则使用第一个宾箱). 示例:运行${productBin} telemetry on
覆盖遥测 POST URL
解析顺序( 第一局胜出) :
aioTelemetry.postUrl在主机 CLI 中package.jsonAIO_TELEMETRY_POST_URL环境变量( 非空字符串)- 内建默认 在插件中 (
DEFAULT_TELEMETRY_POST_URL内src/telemetry-lib.js(中文(简体) )
东道主 package.json 示例:
{
"name": "my-cli",
"bin": { "mycli": "./bin/run.js" },
"aioTelemetry": {
"postUrl": "https://<namespace>-<project>.adobeio-static.net/api/v1/web/<package>/<action>"
}
}
环境覆盖( 无) package.json 更改; 用于 CI、 中继或本地代理调试 :
export AIO_TELEMETRY_POST_URL='https://<namespace>-<project>.adobeio-static.net/api/v1/web/<package>/<action>'
mycli app deploy
解析的 URL 在每次遥测发送上传递给冲洗工; 它适用于CLI 过程的其余部分 init 运行.
通过环境变量选择出去
遥测在 AIO_TELEMETRY_DISABLED 设置为其中之一 true, (中文(简体) ), 1,或 yes (精确匹配;大小写敏感). 其他价值,例如: 0, (中文(简体) ), false, (中文(简体) ), no,或空字符串 没有 通过此变量禁用遥测 .
这并不能改变持续的退出状态。 对CI管道和脚本环境有用.
AIO_TELEMETRY_DISABLED=true aio app deploy
AIO_TELEMETRY_DISABLED=1 aio app deploy
AIO_TELEMETRY_DISABLED=yes aio app deploy
Fush 架构
遥测是 最佳成绩: 当代理已下架或网络失败时, 事件不会持续 .
冲浪发生在一个 终端事件 —— 说 postrun (命令成功), command-error (投掷命令),或 command-not-found。 oclif 运行 postrun 只有在成功的时候,所以 command-error编号 :command-not-found 必须自行冲出;否则误差遥测(最有价值信号)会被缓冲并悄悄地投出出出站. 在一个终端事件上,来自同一指令中较早的钩子的任何内置度量衡都与终端度量衡合并,合并后批量交给一个 防火和遗忘去除子进程 (单位:千美元)src/flush-worker.js) (中文(简体) ). 母体CLI产下工人,立即 unref()s,所以CLI可以不用等HTTP POST就退出. 如果 POST 失败(网络出错或非-2xx 响应),则批量投放;遥测不能阻断或慢化正常的CLI使用.
非致命事件(例如: telemetry-notice) 在一个 模拟缓冲 直到下一个终端事件冲出它们。 如果进程在任何终端事件(崩溃, SIGKILL),缓冲事件丢失. 当远程测量被禁用或当 init 重运行( 新的命令会话) .
特工检测
该插件通过检查事件发生时的环境变量来检测CLI是被AI代理还是被人类所引用. 检测到的上下文作为 invocation_context (单位:千美元)"agent" 或者说 "human"和 agent_name。 。 。 .
自动检测到支持的代理 :
| 环境变量 | 检测到的代理名称 |
|---|---|
AGENT | 变量值(或 "generic" 若为 1编号 :true(中文(简体) ) |
AI_AGENT | 变量值(或 "generic" 若为 1编号 :true(中文(简体) ) |
AIO_AGENT | aio-opt-in |
AIO_INVOCATION_CONTEXT=agent | aio-opt-in |
CURSOR_AGENT | cursor |
CLAUDECODE 编号 : CLAUDE_CODE | claude |
GEMINI_CLI | gemini |
CODEX_SANDBOX | codex |
AUGMENT_AGENT | augment |
CLINE_ACTIVE | cline |
OPENCODE_CLIENT | opencode |
REPL_ID | replit |
PATH 包含 github.copilot-chat | github-copilot |
在不设置特定工具变量的情况下选择代理跟踪, 设置 AIO_INVOCATION_CONTEXT=agent。 。 。 .
POST 数据
这个 eventData 属性总是字符串。 对象和阵列作为JSON文本(例如. "{}", (中文(简体) ), "{\"message\":\"…\"}") (中文(简体) ). 串接有效载荷(如遥测通知结果) shown)作为纯文本存储,无需多加一层JSON引用. 数字和布尔使用它们通常的字符串形式("0", (中文(简体) ), "false") (中文(简体) ).
计量有效载荷的示例形状:
[{
"metrics": [{
"name": "aio.cli.telemetry",
"type": "gauge",
"value": 1,
"timestamp": 1673404918437,
"attributes": {
"eventName": "postrun",
"eventData": "{}",
"cliVersion": "@adobe/[email protected]",
"clientId": 264421030538,
"command": "app:deploy",
"commandDuration": 5661,
"commandFlags": "",
"commandSuccess": true,
"nodeVersion": "v22.21.1",
"osNameVersion": "macOS Sequoia 15.4",
"invocation_context": "human",
"agent_name": "unknown"
}
}]
}]