跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

关联会话、用量与工具事件

选择正确的 OTel 自定义 ID,避免用 metric 聚合值或去重键错误关联会话。

OpenTelemetry metrics 是聚合,不携带 conversation/request/usage_event ID。需要会话级分析时使用 logs,先按 cursor.event.id 去重,再按业务 ID 关联。

ID 的用途

属性用途
cursor.conversation.id会话;IDE/CLI 是 chat UUID,Cloud Agent 是 bc-… ID,Grok Bot 是 Bot 的 conversation ID
cursor.usage_event.id模型请求与费用修正的关联键
cursor.request.id某些 log 的单次调用 ID,可选
cursor.event.id单条事件去重,不能跨事件类型 join
cursor.user.account_id可选成员 ID,可连接 /teams/members 返回的 id

api.correction、cloud_agent.、grok_bot. 不带 request.id。用户属性可缺失,团队 key 或服务账号启动的 Cloud Agent 无 owner,不带这些 owner 属性。不要用必填约束丢掉它们。

计算会话用量

按 conversation.id 汇总 api.request 的 input/output/cache token,再连接同会话 skill.activated、hook.execution_complete、cloud_agent.* 等事件。tool.calls 和 cost.usage 都仅是 metric,不能直接分摊到聊天;会话费用需用 token 和费率估算,或连接计费数据。

遇到 api.correction,按 usage_event.id 找到对应 request/error,将整组按不计费处理。这里是账单最终修正,不是新增负数 token metric。

Grok Bot 的回合和调用

cursor.grok_bot.turn.id 关联一轮 action 与该轮模型请求;event.sequence 排序行动,不依赖客户端时钟,序号无需连续。tool_call.id 连接一次工具调用的 tool_result、tool_decision、特定事件及 opt-in tool_io;decision.id 连接人工批准请求、等待与答复。

shell_command 事件自身不带 tool_call.id,不能强制用该键关联所有事件。消息日志使用可选 conversation.turn.id,也不能要求其一定有 grok_bot.turn.id。

subagent 有自己的 turn.id/subagent.id,可用 root_turn.id 汇总到发起回合。其他产品入口暂没有同等 parent rollup;旧 Bot 记录还可能缺 event.sequence/initiated_by,兼容这些可选字段。