用途:为 Genkit(TypeScript/Node.js)智能体接入 Maple 追踪。目标是一次对话对应一个 Maple Agent Session,每次 flow 运行对应一个 turn,并保留对话转录、每次模型调用(模型、token)与每次工具调用(名称、参数、结果、失败)。仅支持 TypeScript/JavaScript;Go 或 Python Genkit 不适用。需 Genkit >= 1.22、Node.js >= 20。
主要能力:自定义 SpanProcessor 把 flow/agent span 映射为 invoke_agent,model span 映射为 chat(含模型名、输入输出消息、系统指令、token 用量、结束原因),tool span 映射为 execute_tool(名称、参数、结果)。消息角色 model 转为 assistant,text/reasoning/toolRequest/toolResponse 分别转成 text、reasoning、tool_call、tool_call_response。对话 id 取自 genkit:metadata:conversationId 或 genkit:metadata:agent:sessionId。
使用方式:安装 genkit 与 @opentelemetry/sdk-node、@opentelemetry/sdk-trace-base、@opentelemetry/exporter-trace-otlp-proto;创建 genkit-for-maple.ts 定义处理器;创建 instrumentation.ts 启动 NodeSDK,把 GenkitForMaple 放在导出处理器之前,并在非 dev 环境调用 disableGenkitOTelInitialization();instrumentation 必须作为每个入口首行导入。通过 OTEL_EXPORTER_OTLP_ENDPOINT(US:https://ingest.maple.dev,EU:https://ingest.eu.maple.dev)与 OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <key>" 配置。
限制:已知缺口包括成本显示为未定价、provider name 用插件前缀而非 semconv 值、媒体部分不进入转录、execute_tool span 无 gen_ai.tool.call.id。不要设置 OTEL 属性长度上限,否则处理器解析会失败。开发模式下 Maple 收不到 trace。若已有 OTel SDK 应复用,不要启动第二个。