yingjie@memoir
Skip to content

2026-03-07

继续调研插桩库

我让虾仔继续去调研了几个插桩库并写了报告。

我发现他在处理比较长的报告的时候可能会出一点问题,一篇飞书文档靠后的章节出现在了开头,我让调整,但没成功。

我想手动编辑,但发现文档是他名下的,我和他要了权限才编辑好。

我觉得或许需要将一个复杂的任务分解成原子态或者是适合复杂状态,每个子任务对应一个报告,最后合并成一个大的。

继续部署Tempo

Tempo还是有问题,可能是简化部署导致的?

error querying live-stores in Querier.SearchTags: error finding partition ring replicas: empty ring

决定暂时搁置部署Tempo了。

尝试给ZeroClaw插桩

尝试用OpenLIT对Doubao-agent进行插桩

用OpenLIT对doubao-agent进行了插桩,在Jaeger查看,效果如下:

Grafana上的Jaeger面板:

感觉效果是不如Agent可观测平台那样直观。

上下文是否关联了?

一次请求还是出现了两个Trace,两条记录的trace_id都不相同。

3dea,Span attributes,gen_ai.input.messages:

json
[
  {
    "role": "system",
    "parts": [
      {
        "type": "text",
        "content": "你是一个有用的AI助手,可以使用工具来帮助用户。"
      }
    ]
  },
  {
    "role": "user",
    "parts": [
      {
        "type": "text",
        "content": "66*66=?"
      }
    ]
  }
]

3dea,Span attributes,gen_ai.output.messages:

json
[
  {
    "role": "assistant",
    "parts": [
      {
        "type": "tool_call",
        "id": "call_ausae1kpbd549aq8i6k5olyo",
        "name": "",
        "arguments": {}
      }
    ],
    "finish_reason": "tool_call"
  }
]
Span attributes
gen_ai.tool.args
gen_ai.tool.call.id"call_ausae1kpbd549aq8i6k5olyo"
gen_ai.tool.name"calculate"

be48, Span attributes, gen_ai.input.messages

json
[
  {
    "role": "system",
    "parts": [
      {
        "type": "text",
        "content": "你是一个有用的AI助手,可以使用工具来帮助用户。"
      }
    ]
  },
  {
    "role": "user",
    "parts": [
      {
        "type": "text",
        "content": "66*66=?"
      }
    ]
  },
  {
    "role": "tool",
    "parts": [
      {
        "type": "tool_call_response",
        "id": "call_ausae1kpbd549aq8i6k5olyo",
        "response": "计算结果:4356"
      }
    ]
  }
]

be48, Span attributes, gen_ai.output.messages

json
[
  {
    "role": "assistant",
    "parts": [
      {
        "type": "text",
        "content": "66*66=4356"
      }
    ],
    "finish_reason": "stop"
  }
]

简单分析一下:

  1. 用户:输入,提出问题,66*66=?
  2. LLM:输出,调用名为calculate的工具,传递参数66*66
  3. LLM:输入,分析前面的内容+工具返回的结果
  4. LLM:输出,返回66*66=4356

我写的这个脚本中实际上对LLM进行了两次调用,这就是为什么会产生两条记录。

为什么用Langfuse的observe装饰器进行插桩的时候,Langfuse平台上只显示折叠后的一条呢? 因为装饰器保持了一个上下文,在这个上下文中,进行的操作是隶属于一个Trace的。而直接使用OpenLIT进行自动插桩,并不会保持这样的上下文,所以就产生了两个Trace。