@devtheops/opencode-plugin-otel

中文文档
2.1.0发布于 2026/11/11MPL-2.0TypeScriptES Module构建来源已验证近 30 天下载 7.6万

开口码 CLI 的开口遥测插件

中文使用文档
文档目录22 节
  1. OpenCode 版本支持
  2. 它的乐器
  3. 计量
  4. 日志事件
  5. 安装
  6. 配置
  7. 插件选项( opencode.json)
  8. 快开始
  9. 标题和资源属性
  10. 动态信头
  11. 模式可见上下文抓取
  12. LLM 微量传播
  13. 使具体衡量标准失效
  14. 禁用 OTLP 日志
  15. 损坏痕迹
  16. SigNoz 实例
  17. 数据犬示例
  18. Honeycomb 实例
  19. 格拉法纳云实例
  20. Claude 代码仪表板兼容性
  21. 地方发展
  22. GitHub 磁盘通知

打开编码插件- otel

npm version npm downloads GitHub stars Build status Discord notifications License

一个 打开代码 通过 OpenTeleometry 导出遥测( OTLP over gRPC 或 HTTP/ protobuf) 的插件, 反射和 克劳德代码的监控。 。 。 .

仅限 OpenCode V2 . 版本 2.x 此插件目标 打开代码 >=2 并输出 V2 Plugin.define-样式默认导出( e)id: "devtheops.otel") (中文(简体) ). OpenCode V1 插件得到维护 编辑 v1 分支 编辑 1.x 释放 线条。 见 OpenCode 版本支持。 。 。 .

OpenCode 版本支持

插件行打开代码配置密钥入境点
2.x (单位:千美元)main(中文(简体) )V2(>=2(中文(简体) )plugins默认导出 { id, setup }
1.x (单位:千美元)v1 分支)五一号plugin名称 OtelPlugin 导出

OpenCode V2 替换了粗糙的 V1 消息事件 (message.updated, (中文(简体) ), message.part.updated(中文(简体) ) 并删除 command.executed 财务报告和审定财务报表 session.diff 从插件事件流。 它规定 permission.asked 编号 : permission.replied 替换 V1 的 permission.updated 编号 : permission.replied, (中文(简体) ), 外加颗粒会话分类 (单位:千美元)session.execution.*, (中文(简体) ), session.step.*, (中文(简体) ), session.tool.*, (中文(简体) ), session.usage.updated, (中文(简体) ), session.retry.scheduled) (中文(简体) ). 此插件直接消耗 V2 流, 产生更多 准确的LLM和工具比V1执行的时间跨度.

V1 信号等同 : lines_of_code.count 编号 : lines_of_code.total 依赖V1 session.diff 事件,而不会释放。 V2客户端有一个会话diff端点, 但是, V2 插件上下文不会曝光; VCS diff API 是寄存器范围 并且不等于每会的总数. command.executed 仪器是 替换为成功完成 shell-tool 。 信件/部分跨度被替换为 每步 LLM 跨度; 已完成的文本段仍然充斥 output.value 财务报告和审定财务报表 llm.output_messages。 。 。 .

当V2通过子代理工具进步或结果元数据提供清晰的子会话ID时, 子剂运行在调度工具下覆盖巢穴。 模糊或错失的关联又回到 父母运行跨度;背景孩子可能活过其已经到期的发送工具跨度.

它的乐器

计量

度量衡类型说明
opencode.session.count计数器递增 session.created,或者在首次观测到原有会话时懒散
opencode.token.usage计数器每个符号类型 : input, (中文(简体) ), output, (中文(简体) ), reasoning, (中文(简体) ), cacheRead, (中文(简体) ), cacheCreation (单位:千美元) session.step.ended) (中文(简体) ). 与 OPENCODE_COMBINE_REASONING_TOKENS, (中文(简体) ), reasoning 折叠为 output 而不单独排放
opencode.cost.usage计数器每个完成的LLM步骤的美元费用
opencode.commit.count计数器git commit 在成功执行的 shell-tool调用中观察到的命令; Git 生成的仓库状态未验证
opencode.tool.duration直方图工具执行时间( 毫秒)
opencode.cache.count计数器每一步缓存活性 : type=cacheRead 或者说 type=cacheCreation
opencode.session.duration直方图从会话创建(或第一次观察)到执行结束/ 闲置的时长以毫秒计
opencode.message.count计数器完成或失败的 LLM 步骤的助理信息
opencode.session.token.total直方图执行结束时记录的每会话消费的代号总数
opencode.session.cost.total直方图以美元计的每届会议费用总额,执行结束时入账
opencode.model.usage计数器每个模型和提供者的信息
opencode.retry.count计数器通过耐用观测到的 API 重试 session.retry.scheduled 事件
opencode.subtask.count计数器通过 session.created 带有 parentID

日志事件

活动说明
session.created会话开始
session.idle会话闲置( 包括总的令牌、 成本、 信件)
session.error执行失败
user_prompt用户通过 session.inbox.enqueued (包括: prompt_length, (中文(简体) ), delivery; 还 prompt 何时 OPENCODE_CAPTURE_PROMPT_IN_LOGS 设置)
api_request已完成 LLM 步骤(电话机、费用)
api_errorLLM 步骤失败( 错误摘要)
tool_result工具完成或出错(期限、成功、输出大小)
tool_decision权限即时响应( 接受/ 拒绝)
commit已检测出 Git 行为
subtask_invoked创建子代理会话(代理和主会话ID)

安装

在您的打开代码配置中添加插件 ~/.config/opencode/opencode.json数字 :

{
  "$schema": "https://opencode.ai/config.json",
  "plugins": ["@devtheops/opencode-plugin-otel"]
}

为本地开发,安装依赖性 bun install 和 创建 .opencode/plugins/otel/index.ts 在 OpenCode 运行的项目中 :

export { default } from "/path/to/opencode-plugin-otel/src/index.ts"

OpenCode V2 自动发现此目录. 打开代码 2.0.1页:1 plugins 软件包条目直接指向绝对值 .ts 文件被拒绝; 包装器需要目录.

配置

插件从 OPENCODE_* 环境变量和(或)内置 插件选项 内 opencode.json。当两者同时存在时,一个选项胜过匹配的环境变量,后者胜过内置默认值.

当 OpenCode 在一个进程中加载多个位置时,所有已启用实例都必须 使用相同的遥测配置。 一个相互冲突的终点,认证, 资源属性、 参数前缀或信号选项失败而非设置 使用另一个位置的设置导出一个位置的数据 。 事件属性 可用时使用已观测到的会话项目ID。 共享事件处理 序列化所以同步会话查询无法重排步骤开始/结束事件 .

环境变量( 设置在您的外壳配置中 ) - ~/.zshrc, (中文(简体) ), ~/.bashrc等 :

变量默认说明
OPENCODE_ENABLE_TELEMETRY(未设定)设置到任何非空值以启用插件
OPENCODE_OTLP_ENDPOINThttp://localhost:4317OTLP收集器端点. 总是包含一个 URL 方案 。 对于 grpc,使用收藏器 URL(例如 http://localhost:4317 或者说 grpc://collector:4317) (中文(简体) ). 对于 http/protobuf 财务报告和审定财务报表 http/json,使用基准 URL,插件将附加 /v1/traces, (中文(简体) ), /v1/metrics,以及 /v1/logs。 。 。 .
OPENCODE_OTLP_PROTOCOLgrpcOTLP运输协议: grpc, (中文(简体) ), http/protobuf,或 http/json
OPENCODE_OTLP_METRICS_INTERVAL60000导出间隔( 毫秒)
OPENCODE_OTLP_LOGS_INTERVAL5000日志导出间隔( 毫秒)
OPENCODE_METRIC_PREFIXopencode.所有公尺名称的前缀(例如设置为 claude_code. claude 代码仪表板兼容性)
OPENCODE_DISABLE_METRICS(未设定)以逗号分隔的计量名后缀列表来禁用(例如. cache.count,session.duration(中文(简体) )
OPENCODE_DISABLE_LOGS(未设定)设定为任何非空值, 以压制所有 OTLP 日志事件, 而未留下测量和痕迹
OPENCODE_CAPTURE_PROMPT_IN_LOGS(未设定)设定为任何非空值,以便在 prompt 属性 user_prompt 日志事件. 仅记录事件 - 跟踪跨度带有观测到的迅速进入 input.value 不分此旗帜( 无法通过 OPENCODE_DISABLE_TRACES) (中文(简体) ). 默认关闭——提示可能包含秘密或PII;只允许信任的收藏家使用.
OPENCODE_CAPTURE_MODEL_CONTEXT(未设定)设定为任何非空值, 将主模型可见上下文的限定文本预览附加到 LLM 跨度 。 默认关闭;可以包含系统指令,更早的消息,以及工具文本.
OPENCODE_COMBINE_REASONING_TOKENS(未设定)设定为任何非空值, 报告推理符作为其中的一部分 output 而不是单独的 reasoning 类型。 OpenCode V2 排除推理 output,而克洛德代码包含它, 所以让这个为克洛德代码仪表板和成本平价。 适用于 token.usage 计量, api_request output_tokens (与 reasoning_tokens 和 LLM 跨度 llm.token_count.completion· ; llm.token_count.completion_details.reasoning 仍然带有推理子集.
OPENCODE_DISABLE_TRACES(未设定)以逗号分隔的可禁用微量类型列表( N)session, (中文(简体) ), llm, (中文(简体) ), tool) (中文(简体) ). 使用 all, (中文(简体) ), *, (中文(简体) ), true,或 1 以禁用每个跟踪类型
OPENCODE_OTLP_HEADERS(未设定)逗号分隔 key=value 在OTLP的所有出口中增加了页眉. 远离版本控制——可能包含敏感的认证符号.
OPENCODE_OTLP_HEADERS_HELPER(未设定)可执行的脚本/ 二进制,在认证失败后返回动态 OTLP 头作为 JSON 。 帮助信头覆盖 OPENCODE_OTLP_HEADERS。 。 。 .
OPENCODE_RESOURCE_ATTRIBUTES(未设定)逗号分隔 key=value 组合合并为OTel资源. 示例 service.version=1.2.3,deployment.environment=production
OPENCODE_SPAN_ATTRIBUTES(未设定)逗号分隔 key=value 与每个排放的跨度、日志事件和度量数据点相接。 示例 team=platform,deployment.environment=production
OPENCODE_OTLP_METRICS_TEMPORALITY(未设定)计量汇总时间性 : delta, (中文(简体) ), cumulative,或 lowmemory数据犬( 需要)delta) (中文(简体) ). 转给出口商并复制到 OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE。 。 。 .
OPENCODE_TRACEPARENT(未设定)W3C 战车 traceparent 绳子。 设定时,所有跨度都会在此远程上下文下被父化,因此开口码会追踪呼叫者追踪中的巢穴(例如CI活). 无效的值会被记录和忽略 。 注意: 默认 ParentBased 采样器,带有被采样的旗去掉的值(...-00)抑制所有微量导出.
OPENCODE_TRACESTATE(未设定)W3C 战车 tracestate 字符串, 边解析 OPENCODE_TRACEPARENT 并附在远程父上下文。 除非有效,否则被忽略 OPENCODE_TRACEPARENT 也设置了.
OPENCODE_TRACE_PROPAGATION_PROVIDERS(未设定)接收 W3C 的逗号分隔开码提供者ID traceparent 财务报告和审定财务报表 tracestate 关于 LLM 请求的页眉 。 使用 * 明确允许每个提供者.

默认情况下, 快速日志仍然被禁用 。 只有当所配置的遥测目标被信任以接收潜在的敏感即时内容时才启用它.

插件选项( opencode.json)

每个设置也可以通过 Opencode 插件内接 对象窗体,所以不需要在外壳中输出。 选项优先于匹配 OPENCODE_* 环境变量,它反过来胜过内置默认值.

{
  "$schema": "https://opencode.ai/config.json",
  "plugins": [
    {
      "package": "@devtheops/opencode-plugin-otel",
      "options": {
        "enabled": true,
        "endpoint": "http://localhost:4317",
        "protocol": "grpc",
        "metricPrefix": "claude_code.",
        "resourceAttributes": "service.version=1.2.3,deployment.environment=production",
        "disabledTraces": ["tool"]
      }
    }
  ]
}

选项密钥映射已解析的配置并映射到环境变量 :

选项环境变量
enabledOPENCODE_ENABLE_TELEMETRY
logsEnabledOPENCODE_DISABLE_LOGS (倒转)
capturePromptInLogsOPENCODE_CAPTURE_PROMPT_IN_LOGS
captureModelContextOPENCODE_CAPTURE_MODEL_CONTEXT
combineReasoningTokensOPENCODE_COMBINE_REASONING_TOKENS
logLevel(无——仅选择)数字 : debug, (中文(简体) ), info, (中文(简体) ), warn, (中文(简体) ), error
endpointOPENCODE_OTLP_ENDPOINT
protocolOPENCODE_OTLP_PROTOCOL
metricsIntervalOPENCODE_OTLP_METRICS_INTERVAL
logsIntervalOPENCODE_OTLP_LOGS_INTERVAL
metricPrefixOPENCODE_METRIC_PREFIX
otlpHeadersOPENCODE_OTLP_HEADERS
otlpHeadersHelperOPENCODE_OTLP_HEADERS_HELPER
resourceAttributesOPENCODE_RESOURCE_ATTRIBUTES
spanAttributesOPENCODE_SPAN_ATTRIBUTES
traceparentOPENCODE_TRACEPARENT
tracestateOPENCODE_TRACESTATE
metricsTemporalityOPENCODE_OTLP_METRICS_TEMPORALITY
disabledMetricsOPENCODE_DISABLE_METRICS (阵列,不是逗号字符串)
disabledTracesOPENCODE_DISABLE_TRACES (阵列,不是逗号字符串)
tracePropagationProvidersOPENCODE_TRACE_PROPAGATION_PROVIDERS (阵列,不是逗号字符串)

安全说明: opencode.json 经常致力于版本控制。 保密,例如 otlpHeaders 在环境变量或打开代码中 {env:VAR} 替换(例如:. "otlpHeaders": "{env:OTEL_HEADERS}"而不是内在.

快开始

export OPENCODE_ENABLE_TELEMETRY=1
export OPENCODE_OTLP_ENDPOINT=http://localhost:4317
export OPENCODE_OTLP_PROTOCOL=grpc
opencode

总是设定 OPENCODE_OTLP_ENDPOINT 到一个包含一个方案的完整 URL。 无方案值 localhost:4317 拒绝.

对于 OPENCODE_OTLP_PROTOCOL=http/protobuf 或者说 OPENCODE_OTLP_PROTOCOL=http/json设置 OPENCODE_OTLP_ENDPOINT 改为收集器基址,而不是每个符号路径。 插件将其扩展为 /v1/traces, (中文(简体) ), /v1/metrics,以及 /v1/logs 自动.

标题和资源属性

# Auth token for a managed collector (e.g. Honeycomb, Grafana Cloud)
export OPENCODE_OTLP_HEADERS="x-honeycomb-team=your-api-key,x-honeycomb-dataset=opencode"

# Tag every metric and log with deployment context
export OPENCODE_RESOURCE_ATTRIBUTES="service.version=1.2.3,deployment.environment=production"

# Tag every span, log event, and metric point with filterable attributes
export OPENCODE_SPAN_ATTRIBUTES="team=platform,deployment.environment=production"

安全说明: OPENCODE_OTLP_HEADERS 通常含有认证符号。 设置在您的外壳配置( N)~/.zshrc, (中文(简体) ), ~/.bashrc)或秘密管理器——永远不要承诺用于版本控制或将其打印入CI日志.

OPENCODE_RESOURCE_ATTRIBUTES 财务报告和审定财务报表 OPENCODE_SPAN_ATTRIBUTES 独立:

  • 使用 OPENCODE_RESOURCE_ATTRIBUTES 用于生产OTel资源元数据.
  • 使用 OPENCODE_SPAN_ATTRIBUTES 用于每个跨度、日志事件和用于过滤或后端分组的度量数据点.

动态信头

使用 OPENCODE_OTLP_HEADERS_HELPER 当您的收藏家需要短期认证符时。 设定此选项时, 插件会在启动时预置一次帮助器, 这样第一个导出就可以使用新鲜的证书 。 如果以后的 OTLP 导出失败, 认证错误 (401编号 :403 用于 HTTP 或 UNAUTHENTICATED编号 :PERMISSION_DENIED 对于 gRPC ,插件会再次刷新信头,重建导出者,并重复一次失败的导出 .

export OPENCODE_OTLP_HEADERS_HELPER=/path/to/opencode-otel-headers.sh

使用绝对帮助路径 。 如果您需要路径来遵循当前工程, OPENCODE_OTLP_HEADERS_HELPER 也支持 ${PROJECT_ROOT}, (中文(简体) ), ${WORKTREE},以及 ${DIRECTORY} 占位符 .

export OPENCODE_OTLP_HEADERS_HELPER='${PROJECT_ROOT}/scripts/opencode-otel-headers.sh'

帮助者必须是可执行的,并打印一个 JSON 对象以显示 :

#!/bin/sh
printf '{"Authorization":"Bearer %s"}' "$(get-token.sh)"

对于一个使用IAM认证的云跑采集器, get-token.sh 也许是 gcloud auth print-identity-token。 。 。 .

若为 OPENCODE_OTLP_HEADERS 还设置了, 帮助提供的标题覆盖同名的静态标题。 头值从未被记录 .

模式可见上下文抓取

export OPENCODE_CAPTURE_MODEL_CONTEXT=1

当启用时, session.hook("context") 最多抓取两个系统部件和最后十二个部件 信件,只保留文本部分,并切入每个字符至1,000个字符。 匹配的初级 LLM 跨度收到此预览 llm.input_messages 及其最新的用户文本 input.value。 。 。 . 不包括媒体字节和结构化工具有效载荷。 钩子观察其位置的背景 ;后续插件仍可更改请求。 这是独立于 OPENCODE_CAPTURE_PROMPT_IN_LOGS 并且可以包括以前消息中的秘密或PII, 系统指令,或工具文本。 只用一个信任的收藏家.

LLM 微量传播

使用 OPENCODE_TRACE_PROPAGATION_PROVIDERS 连接此插件的 LLM 跨度到像 LiteLLM 或 vLLLM 这样的 LLM 网关所释放的跨度 。 对于匹配的提供者 ID, 插件注入当前 opencode.llm 间距为 W3C traceparent 页眉并包含 tracestate 当在现相.

传播仅限于初级代理-loop请求,其提供者、模型和代理匹配主动LLM步骤;标题、收缩和瞬时生成请求不归为该步骤.

export OPENCODE_TRACE_PROPAGATION_PROVIDERS="company-litellm,vllm"

值是开口码提供者ID,包括配置在 provider 键入 opencode.json。在设置未设定时,宣传被禁用。 使用 * 仅当每个配置的提供者收到微量上下文时.

仅传播了W3C微量上下文. 该插件不注入任意头或W3C行李. 通过提供者的本土配置静态提供者专用信头 options.headers 设置在 opencode.json。 。 。 .

对于 WebSocket 支持的提供者,插件也注入了 V2 的实验性 experimental.ws.handshake 钩. 每一步更换跟踪头可以重开一个再利用的套接字, 因此,只有在连接痕迹大于连接再利用的情况下,才能向供应商传播. 钩子是实验性的,应该根据你供应商的WebSocket路线进行验证.

使具体衡量标准失效

使用 OPENCODE_DISABLE_METRICS 压制个人衡量标准。 该值是一个以逗号分隔的公尺名后缀列表(没有前缀).

禁用一个度量衡只会阻止计数器/相图被递增——相应的日志事件仍然被放出.

# Disable a single metric
export OPENCODE_DISABLE_METRICS="retry.count"

# Disable multiple metrics
export OPENCODE_DISABLE_METRICS="cache.count,session.duration,session.token.total,session.cost.total,model.usage,retry.count,message.count"

仅限代码的度量标准

以下的度量衡是开口码的特有性,在克洛德码的内置监测中没有等同性. 如果您使用克洛德码仪表板,并想避免用只用开码的度量符来搅拌,可以禁用:

export OPENCODE_DISABLE_METRICS="cache.count,session.duration,session.token.total,session.cost.total,model.usage,retry.count,message.count"
计量后缀为什么它只开放代码
cache.count跟踪缓存读取/写入活动作为发生数——不是克劳德代码信号
session.duration会话时钟持续时间——不是由克洛德代码发布的
session.token.total平面符号直方图——不是克洛德代码发布的
session.cost.total人均成本直方图——不是克洛德代码发布的
model.usage每个模型信息计数器——不是克洛德代码发布的
retry.countAPI 重试计数器——不是由 Claude Code 发布的
message.count已完成信件计数器——不是克洛德代码发布的

禁用 OTLP 日志

使用 OPENCODE_DISABLE_LOGS 以压制插件发布的每个 OTLP 日志事件.

export OPENCODE_DISABLE_LOGS=1

只禁用 OTLP 日志 。 继续出口的计量和道具,除非分别被禁用.

损坏痕迹

使用 OPENCODE_DISABLE_TRACES 以压制一个或多个痕量类型.

# Disable one trace type
export OPENCODE_DISABLE_TRACES="tool"

# Disable multiple trace types
export OPENCODE_DISABLE_TRACES="llm,tool"

# Disable every trace type explicitly
export OPENCODE_DISABLE_TRACES="all"

接受明确的“所有痕迹”值为 all, (中文(简体) ), *, (中文(简体) ), true,以及 1。 。 。 .

SigNoz 实例

export OPENCODE_ENABLE_TELEMETRY=1
export OPENCODE_OTLP_ENDPOINT="https://ingest.us.signoz.cloud:443"
export OPENCODE_OTLP_HEADERS="signoz-ingestion-key=<SIGNOZ_INGESTION_KEY>"

使用 https://ingest.in.signoz.cloud:443 印度, https://ingest.eu2.signoz.cloud:443 用于欧盟2, 等. 见 SigNoz 设置文件 适用于所有区域.

数据犬示例

export OPENCODE_ENABLE_TELEMETRY=1
export OPENCODE_OTLP_ENDPOINT=https://otlp.datadoghq.com
export OPENCODE_OTLP_PROTOCOL=http/protobuf
export OPENCODE_OTLP_HEADERS="dd-api-key=YOUR_DATADOG_API_KEY"

# Required — Datadog's OTLP intake only accepts delta temporality
export OPENCODE_OTLP_METRICS_TEMPORALITY=delta

说明: 终点是 otlp.datadoghq.com (无) api.datadoghq.com) (中文(简体) ). 使用 otlp.datadoghq.eu 代表欧盟, otlp.us3.datadoghq.com 用于US3等. 见 数据犬 OTLP 文件 适用于所有区域.

Honeycomb 实例

export OPENCODE_ENABLE_TELEMETRY=1
export OPENCODE_OTLP_ENDPOINT=https://api.honeycomb.io
export OPENCODE_OTLP_PROTOCOL=http/protobuf

格拉法纳云实例

export OPENCODE_ENABLE_TELEMETRY=1
export OPENCODE_OTLP_ENDPOINT=https://otlp-gateway-prod-us-central-0.grafana.net/otlp
export OPENCODE_OTLP_PROTOCOL=http/protobuf
export OPENCODE_OTLP_HEADERS="Authorization=Basic <base64-instance-id:api-key>"

Claude 代码仪表板兼容性

export OPENCODE_METRIC_PREFIX=claude_code.

地方发展

见 捐款额。 。 。 .

GitHub 磁盘通知

此重播包括可重复使用的工作流程 .github/workflows/discord-notify.yml 贴出一个嵌入支持 GitHub 事件的 Discord 。 包含的内容 .github/workflows/discord-events.yml 文件为:

  • issues.opened
  • pull_request.opened
  • release.published

设置一个名为 org 或 repo 的秘密 DISCORD_WEBHOOK 工作流程会自动发送到那个网页.

从另一个存储器中重新使用 DEVtheOPS 鼠标 :

name: Discord Events

on:
  issues:
    types: [opened]
  pull_request:
    types: [opened]
  release:
    types: [published]

jobs:
  notify-discord:
    uses: DEVtheOPS/opencode-plugin-otel/.github/workflows/discord-notify.yml@main
    with:
      username: DEVtheOPS Bot
      title_prefix: "[DEVtheOPS]"
      include_body: true
    secrets:
      discord_webhook: ${{ secrets.DISCORD_WEBHOOK }}

可用工作流程输入 :

  • username: webhook 显示名称
  • avatar_url: webhook 浮雕图像 URL
  • title_prefix: 嵌入式的可选标题前缀
  • include_body:在卡片中包括问题、公关或释放体
  • color: 不支持的事件后置颜色

版本与发布记录

@devtheops/opencode-plugin-otel 共发布 21 个版本,首次发布于 2026/03/12;过去 12 个月发布了 21 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.1.0latest2026/11/111 天前
2.0.12026/10/061 个月前
2.0.02026/09/271 个月前
1.5.12026/08/093 个月前
1.5.02026/08/043 个月前
1.4.02026/07/243 个月前

关于 @devtheops/opencode-plugin-otel 的常见问题

@devtheops/opencode-plugin-otel 是什么?

开口码 CLI 的开口遥测插件

如何安装 @devtheops/opencode-plugin-otel?

在项目目录运行 npm install @devtheops/opencode-plugin-otel,或使用 pnpm add / yarn add / bun add。

@devtheops/opencode-plugin-otel 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@devtheops/opencode-plugin-otel 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@devtheops/opencode-plugin-otel 可以商用吗?

@devtheops/opencode-plugin-otel 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@devtheops/opencode-plugin-otel 的下载量有多少?

根据 npm 官方下载统计,@devtheops/opencode-plugin-otel 在 2026/10/12 – 2026/11/10 这 30 天内被下载 76,486 次,日均约 2,550 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@devtheops/opencode-plugin-otel 还在维护吗?

最新版本 2.1.0 发布于 2026/11/11(1 天前);至今共发布 21 个版本,其中过去 12 个月发布了 21 个;首次发布于 2026/03/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。