core/agent+cli: treat last-request prompt_tokens as context size

context_tokens prefers API usage from the last model call; char est.
is only a pre-call fallback. Clarify billed turn/session totals in UI.
This commit is contained in:
2026-07-15 11:07:52 +08:00
parent a61b536243
commit c9e805f38d
6 changed files with 73 additions and 10 deletions
+15
View File
@@ -273,6 +273,21 @@ async def test_chat_agent_turn_usage_sums_tool_rounds() -> None:
assert agent.last_request_usage.prompt_tokens == 200
assert agent.last_turn_usage.prompt_tokens == 300
assert agent.last_turn_usage.total_tokens == 308
# Context size is last request prompt, not billed sum
assert agent.context_tokens == 200
assert agent.context_tokens_source == "api"
async def test_context_tokens_falls_back_to_message_estimate() -> None:
agent = ChatAgent(
ScriptedClient([]),
model="m",
stream=False,
messages=[UserChatMessage(content="12345678")],
)
assert agent.last_request_usage.is_zero()
assert agent.context_tokens_source == "estimate"
assert agent.context_tokens >= 1
async def test_stream_yields_deltas_incrementally() -> None: