mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-09-19 02:18:25 +08:00
Add per-stream once-only logs at the OpenAI-protocol layer so we can triage streaming behavior (natural-stop vs tool-call, TTFC, ordering of reasoning/content/tool_calls) without grepping through every delta. streamState now tracks: - streamStartedAt : baseline for elapsed_ms on each fire-once log - firstContentSeen : delta.Content first appearance - firstReasoningSeen : reasoning_content first appearance - firstToolCallSeen / noToolCallStopLogged (existing flags retained) Logs emitted at most once per stream: [LLM Stream] First reasoning_content at OpenAI layer (len, preview, elapsed_ms) [LLM Stream] First delta.Content at OpenAI layer (len, preview, tool_call_seen, thinking_seen, elapsed_ms) [LLM Stream] First tool_calls delta at OpenAI layer (count, first_id, first_name, first_content_seen, thinking_seen, elapsed_ms) [LLM Stream] Natural-stop at OpenAI layer (finish=stop, tool_calls field never observed, thinking_seen, first_content_seen, elapsed_ms) Together with the existing agent-layer "Natural-stop candidate detected" log this lets a single grep reconstruct the temporal layout of one stream (reasoning -> content -> tool_call OR natural-stop) and tell apart: (A) tool_calls field truly absent (real natural-stop) (B) tool_calls field arrived but high-level marker not yet emitted Pure logging change; no behavior change. Previews use the existing truncateForDebug helper (rune-safe, capped at 80 chars).