# @devtheops/opencode-plugin-otel 中文文档

规范地址：https://npmcn.com/package/%40devtheops/opencode-plugin-otel/

版本：2\.1\.0
npm 元数据更新时间：2026-11-10T16:57:09.746Z
中文译文更新时间：2026-11-12T04:29:09.218Z
软件包许可：MPL-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40devtheops/opencode-plugin-otel
原文对照：https://npmcn.com/package/%40devtheops/opencode-plugin-otel/?lang=original
项目主页：https://github.com/DEVtheOPS/opencode-plugin-otel#readme
源码仓库：https://github.com/DEVtheOPS/opencode-plugin-otel

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：3.2 MB，19 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：17 个
- peer 依赖：@opencode/plugin \>=2\.0\.0
- 首次发布：2026-03-11T18:49:18.683Z
- 最新版本发布：2026-11-10T16:57:09.373Z
- 近 30 天下载量：76486（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 21 个）

## 中文简介

开口码 CLI 的开口遥测插件

## 安装

```sh
npm install @devtheops/opencode-plugin-otel
```

也可以使用：`pnpm add @devtheops/opencode-plugin-otel`、`yarn add @devtheops/opencode-plugin-otel`、`bun add @devtheops/opencode-plugin-otel`

## README

# 打开编码插件- otel

[![npm version](https://img.shields.io/npm/v/@devtheops/opencode-plugin-otel.svg)](https://www.npmjs.com/package/@devtheops/opencode-plugin-otel) [![npm downloads](https://img.shields.io/npm/dm/@devtheops/opencode-plugin-otel.svg)](https://www.npmjs.com/package/@devtheops/opencode-plugin-otel) [![GitHub stars](https://img.shields.io/github/stars/DEVtheOPS/opencode-plugin-otel.svg)](https://github.com/DEVtheOPS/opencode-plugin-otel/stargazers) [![Build status](https://img.shields.io/github/actions/workflow/status/DEVtheOPS/opencode-plugin-otel/release-please.yml?branch=main)](https://github.com/DEVtheOPS/opencode-plugin-otel/actions/workflows/release-please.yml) [![Discord notifications](https://img.shields.io/badge/discord-notifications-5865F2?logo=discord&logoColor=white)](https://discord.gg/zavuskz8xB) [![License](https://img.shields.io/npm/l/@devtheops/opencode-plugin-otel.svg)](https://github.com/DEVtheOPS/opencode-plugin-otel/blob/main/LICENSE)

一个 [打开代码](https://opencode.ai/) 通过 OpenTeleometry 导出遥测( OTLP over gRPC 或 HTTP/ protobuf) 的插件, 反射和 [克劳德代码的监控](https://code.claude.com/docs/en/monitoring-usage)。 。 。 .

> **仅限 OpenCode V2 .** 版本 `2.x` 此插件目标 **打开代码 `>=2`** 并输出 V2 `Plugin.define`\-样式默认导出( e)`id: "devtheops.otel"`) (中文(简体) ). OpenCode V1 插件得到维护 编辑 [`v1` 分支](https://github.com/DEVtheOPS/opencode-plugin-otel/tree/v1) 编辑 `1.x` 释放 线条。 见 [OpenCode 版本支持](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-opencode-version-support)。 。 。 .

-   [OpenCode 版本支持](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-opencode-version-support)
-   [它的乐器](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-what-it-instruments)
    -   [计量](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-metrics)
    -   [日志事件](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-log-events)
-   [安装](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-installation)
-   [配置](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-configuration)
    -   [插件选项( opencode.json)](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-plugin-options-opencodejson)
    -   [快开始](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-quick-start)
    -   [标题和资源属性](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-headers-and-resource-attributes)
    -   [动态信头](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-dynamic-headers)
    -   [模式可见上下文抓取](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-model-visible-context-capture)
    -   [LLM 微量传播](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-llm-trace-propagation)
    -   [使具体衡量标准失效](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-disabling-specific-metrics)
    -   [禁用OTLP日志(`OPENCODE_DISABLE_LOGS`(中文(简体) )](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-disabling-otlp-logs)
    -   [损坏痕迹( E)`OPENCODE_DISABLE_TRACES`(中文(简体) )](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-disabling-traces)
    -   [SigNoz 实例](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-signoz-example)
    -   [数据犬示例](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-datadog-example)
    -   [Honeycomb 实例](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-honeycomb-example)
    -   [Claude 代码仪表板兼容性](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-claude-code-dashboard-compatibility)
-   [地方发展](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-local-development)
-   [GitHub 磁盘通知](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-github-discord-notifications)

## 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_error` | LLM 步骤失败( 错误摘要) |
| `tool_result` | 工具完成或出错(期限、成功、输出大小) |
| `tool_decision` | 权限即时响应( 接受/ 拒绝) |
| `commit` | 已检测出 Git 行为 |
| `subtask_invoked` | 创建子代理会话(代理和主会话ID) |

## 安装

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

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

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

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

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

## 配置

插件从 `OPENCODE_*` 环境变量和(或)内置 [插件选项](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/#readme-plugin-options-opencodejson) 内 `opencode.json`。当两者同时存在时,一个选项胜过匹配的环境变量,后者胜过内置默认值.

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

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

| 变量 | 默认 | 说明 |
| --- | --- | --- |
| `OPENCODE_ENABLE_TELEMETRY` | _(未设定)_ | 设置到任何非空值以启用插件 |
| `OPENCODE_OTLP_ENDPOINT` | `http://localhost:4317` | OTLP收集器端点. 总是包含一个 URL 方案 。 对于 `grpc`,使用收藏器 URL(例如 `http://localhost:4317` 或者说 `grpc://collector:4317`) (中文(简体) ). 对于 `http/protobuf` 财务报告和审定财务报表 `http/json`,使用基准 URL,插件将附加 `/v1/traces`, (中文(简体) ), `/v1/metrics`,以及 `/v1/logs`。 。 。 . |
| `OPENCODE_OTLP_PROTOCOL` | `grpc` | OTLP运输协议: `grpc`, (中文(简体) ), `http/protobuf`,或 `http/json` |
| `OPENCODE_OTLP_METRICS_INTERVAL` | `60000` | 导出间隔( 毫秒) |
| `OPENCODE_OTLP_LOGS_INTERVAL` | `5000` | 日志导出间隔( 毫秒) |
| `OPENCODE_METRIC_PREFIX` | `opencode.` | 所有公尺名称的前缀(例如设置为 `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`](https://www.w3.org/TR/trace-context/#traceparent-header) 绳子。 设定时,所有跨度都会在此远程上下文下被父化,因此开口码会追踪呼叫者追踪中的巢穴(例如CI活). 无效的值会被记录和忽略 。 注意: 默认 `ParentBased` 采样器,带有被采样的旗去掉的值(`...-00`)抑制所有微量导出. |
| `OPENCODE_TRACESTATE` | _(未设定)_ | W3C 战车 [`tracestate`](https://www.w3.org/TR/trace-context/#tracestate-header) 字符串, 边解析 `OPENCODE_TRACEPARENT` 并附在远程父上下文。 除非有效,否则被忽略 `OPENCODE_TRACEPARENT` 也设置了. |
| `OPENCODE_TRACE_PROPAGATION_PROVIDERS` | _(未设定)_ | 接收 W3C 的逗号分隔开码提供者ID `traceparent` 财务报告和审定财务报表 `tracestate` 关于 LLM 请求的页眉 。 使用 `*` 明确允许每个提供者. |

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

### 插件选项( opencode.json)

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

```json
{
  "$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"]
      }
    }
  ]
}
```

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

| 选项 | 环境变量 |
| --- | --- |
| `enabled` | `OPENCODE_ENABLE_TELEMETRY` |
| `logsEnabled` | `OPENCODE_DISABLE_LOGS` (倒转) |
| `capturePromptInLogs` | `OPENCODE_CAPTURE_PROMPT_IN_LOGS` |
| `captureModelContext` | `OPENCODE_CAPTURE_MODEL_CONTEXT` |
| `combineReasoningTokens` | `OPENCODE_COMBINE_REASONING_TOKENS` |
| `logLevel` | _(无——仅选择)_数字 : `debug`, (中文(简体) ), `info`, (中文(简体) ), `warn`, (中文(简体) ), `error` |
| `endpoint` | `OPENCODE_OTLP_ENDPOINT` |
| `protocol` | `OPENCODE_OTLP_PROTOCOL` |
| `metricsInterval` | `OPENCODE_OTLP_METRICS_INTERVAL` |
| `logsInterval` | `OPENCODE_OTLP_LOGS_INTERVAL` |
| `metricPrefix` | `OPENCODE_METRIC_PREFIX` |
| `otlpHeaders` | `OPENCODE_OTLP_HEADERS` |
| `otlpHeadersHelper` | `OPENCODE_OTLP_HEADERS_HELPER` |
| `resourceAttributes` | `OPENCODE_RESOURCE_ATTRIBUTES` |
| `spanAttributes` | `OPENCODE_SPAN_ATTRIBUTES` |
| `traceparent` | `OPENCODE_TRACEPARENT` |
| `tracestate` | `OPENCODE_TRACESTATE` |
| `metricsTemporality` | `OPENCODE_OTLP_METRICS_TEMPORALITY` |
| `disabledMetrics` | `OPENCODE_DISABLE_METRICS` (阵列,不是逗号字符串) |
| `disabledTraces` | `OPENCODE_DISABLE_TRACES` (阵列,不是逗号字符串) |
| `tracePropagationProviders` | `OPENCODE_TRACE_PROPAGATION_PROVIDERS` (阵列,不是逗号字符串) |

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

### 快开始

```bash
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` 自动.

### 标题和资源属性

```bash
# 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 ,插件会再次刷新信头,重建导出者,并重复一次失败的导出 .

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

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

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

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

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

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

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

### 模式可见上下文抓取

```bash
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步骤;标题、收缩和瞬时生成请求不归为该步骤.

```bash
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` 压制个人衡量标准。 该值是一个以逗号分隔的公尺名后缀列表(没有前缀).

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

```bash
# 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"
```

#### 仅限代码的度量标准

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

```bash
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.count` | API 重试计数器——不是由 Claude Code 发布的 |
| `message.count` | 已完成信件计数器——不是克洛德代码发布的 |

### 禁用 OTLP 日志

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

```bash
export OPENCODE_DISABLE_LOGS=1
```

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

### 损坏痕迹

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

```bash
# 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 实例

```bash
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 设置文件](https://signoz.io/docs/cloud/) 适用于所有区域.

### 数据犬示例

```bash
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 文件](https://docs.datadoghq.com/opentelemetry/setup/otlp_ingest_in_the_agent/) 适用于所有区域.

### Honeycomb 实例

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

### 格拉法纳云实例

```bash
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 代码仪表板兼容性

```bash
export OPENCODE_METRIC_PREFIX=claude_code.
```

## 地方发展

见 [捐款额](https://npmcn.com/package/%40devtheops/opencode-plugin-otel/CONTRIBUTING.md)。 。 。 .

## 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` 鼠标 :

```yaml
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 是什么？

开口码 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 和提交记录判断。

