From c12173582d1bb0f7788bf74a9c056d72665b61b4 Mon Sep 17 00:00:00 2001 From: Aaron Stannard Date: Mon, 13 Apr 2026 01:15:57 +0000 Subject: [PATCH] feat(observability): log turn_tool_call_batch as structured metric MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a TurnLog().Info call at the point where tool calls are dispatched in HandleToolCallResponse, emitting count and tool names as a single structured log line per assistant response. This enables one-liner grep+awk queries over daemon logs to measure the distribution of tool_calls_per_response — a prerequisite for validating whether vLLM + qwen3_coder parser or provider switches (Anthropic, OpenAI) unlock batched tool calls. Closes #623 --- src/Netclaw.Actors/Sessions/LlmSessionActor.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Netclaw.Actors/Sessions/LlmSessionActor.cs b/src/Netclaw.Actors/Sessions/LlmSessionActor.cs index 32229bd9b..ae9517ff8 100644 --- a/src/Netclaw.Actors/Sessions/LlmSessionActor.cs +++ b/src/Netclaw.Actors/Sessions/LlmSessionActor.cs @@ -1475,6 +1475,9 @@ private void HandleToolCallResponse( } // Execute tools async — results come back as ToolExecutionCompleted + TurnLog().Info("turn_tool_call_batch count={Count} tools={Tools}", + toolCalls.Count, + string.Join(",", toolCalls.Select(tc => tc.Name))); foreach (var tc in toolCalls) { _log.Info("Invoking tool [{ToolName}] (call={CallId}) args={Args}",