perf: preserve conversation prefixes across agent turns

This commit is contained in:
chenmingxuan committed 2026-10-17 17:25:15 +08:00
1 parent 1440a1f508
commit f1bb5d02aa
19 files changed
+552 -205

No files matched your search

+8 -2
View File
@@ -65,7 +65,9 @@ def test_burst_results_reach_responses_once_with_images_before_compression(tmp_p
actions[2].pop("post_image_name")
actions[2]["attempts"] = ["Skipped"]
report = {"status": "failed", "execution": actions}
ledger = TranscriptLedger(image_scrub_depth=1, pending_grace_steps=0)
ledger = TranscriptLedger(
image_scrub_depth=1, pending_grace_steps=0, context_budget_tokens=300_000
)
_stage(ledger, actions)
ledger.commit_staged(
step_key="step1",
@@ -84,13 +86,17 @@ def test_burst_results_reach_responses_once_with_images_before_compression(tmp_p
assert len([item for item in payload if item.get("type") == "function_call_output"]) == 4
assert str(payload).count(base64.b64encode(image.read_bytes()).decode()) == 3
assert f"data:{Image.MIME[image_format]};base64," in str(payload)
# No duplicate outputs at the following turn; old images are eligible for scrubbing again.
# No duplicate outputs or rewritten images on the following ordinary turn.
ledger.commit_staged(
validator_result=report, tool_results=plugin_result_messages(report, engine)
)
later = ledger.render([])
assert len([m for m in later if isinstance(m, ToolMessage)]) == 4
assert str(later).count(base64.b64encode(image.read_bytes()).decode()) == 3
ledger.compact_active()
later = ledger.render([])
assert str(later).count(base64.b64encode(image.read_bytes()).decode()) < 3
assert str(messages).count(base64.b64encode(image.read_bytes()).decode()) == 3
def test_missing_plugin_screenshot_keeps_real_result_and_reports_missing_evidence(tmp_path):