yingjie@memoir
Skip to content

2026-03-07

Continuing Research on Instrumentation Libraries

I asked Xiazai to continue researching several instrumentation libraries and write a report.

I noticed that he might have some issues when handling longer reports; a later section of a Feishu document appeared at the beginning. I asked him to adjust, but it didn't work.

I wanted to edit manually, but found that the document was under his name; I had to ask him for permission to edit.

I think it might be necessary to break down complex tasks into atomic states or ones suitable for complex states, with each sub-task corresponding to a report, and finally merge them into a larger one.

Continuing to Deploy Tempo

Tempo still has issues, possibly caused by a simplified deployment?

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

Decided to put the deployment of Tempo on hold for now.

Trying to Instrument ZeroClaw

Trying to Instrument Doubao-agent with OpenLIT

Instrumented doubao-agent with OpenLIT, viewed in Jaeger, results as follows:

Jaeger panel on Grafana:

The effect feels less intuitive than an Agent observability platform.

Is the context correlated?

In one request, two traces still appeared, and the trace_ids of the two records are different.

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"
  }
]

Brief analysis:

  1. User: input, asks question, 66*66=?
  2. LLM: output, calls tool named calculate, passes parameter 66*66
  3. LLM: input, analyzes previous content + result returned by tool
  4. LLM: output, returns 66*66=4356

In the script I wrote, the LLM was actually called twice, which is why two records were generated.

Why does Langfuse's platform only show one collapsed record when using the Langfuse observe decorator for instrumentation? Because the decorator maintains a context in which the operations belong to a single Trace. Directly using OpenLIT for auto-instrumentation does not maintain such a context, thus two Traces are generated.