mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-08-31 00:50:02 +08:00
894cbec48a
Accumulate token usage across every LLM round of an agent turn and expose the aggregate everywhere a turn is observable: - AgentState.TurnUsage accumulates each round's reported usage, including the final-answer synthesis call; TokenUsage.Accumulate keeps the cache counters as prompt subsets and recomputes the combined cache status (unsupported survives only while every call was itself unsupported). - The agent completion event carries the aggregate, and the complete stream event exposes it both as data.usage and as a typed StreamEvent.Usage that buildStreamResponse promotes into the previously-unused StreamResponse.Usage wire field. - The assistant message persists it as a nullable usage column on both migration targets (postgres 000085 jsonb, sqlite 000012 text), for web and IM channels alike, so history reads still carry the turn's cost after the live stream is gone. - "[LLM Usage]" log lines gain ", session_id=..., principal=type:id" when the context carries them; calls outside sessions stay byte-identical. Usage from failed retry attempts is not accumulated: the per-call usage log remains the ground truth, while the turn aggregate serves as the operational signal.