mirror of
https://github.com/openai/codex.git
synced 2026-09-16 12:13:30 +00:00
Reinject previous-turn context for pre-sampling model-switch compaction
This commit is contained in:
@@ -4670,7 +4670,7 @@ async fn maybe_run_previous_model_inline_compact(
|
||||
sess,
|
||||
// We use previous turn context here because we compact with the previous model
|
||||
&previous_turn_context,
|
||||
AutoCompactCallsite::PreTurnExcludingIncomingUserMessage,
|
||||
AutoCompactCallsite::PreSamplingModelSwitch,
|
||||
None,
|
||||
)
|
||||
.await
|
||||
|
||||
@@ -44,6 +44,9 @@ pub(crate) enum AutoCompactCallsite {
|
||||
/// default pre-turn flow and retained for future model-specific strategies.
|
||||
#[allow(dead_code)]
|
||||
PreTurnExcludingIncomingUserMessage,
|
||||
/// Pre-sampling compaction triggered by model switch to a smaller context window.
|
||||
/// This compacts prior-turn history only and should reinsert previous-turn canonical context.
|
||||
PreSamplingModelSwitch,
|
||||
/// Mid-turn compaction between assistant responses in a follow-up loop.
|
||||
MidTurnContinuation,
|
||||
}
|
||||
@@ -284,7 +287,9 @@ async fn run_compact_task_inner(
|
||||
let mut new_history = process_compacted_history(compacted_history);
|
||||
if matches!(
|
||||
auto_compact_callsite,
|
||||
Some(AutoCompactCallsite::MidTurnContinuation)
|
||||
Some(
|
||||
AutoCompactCallsite::MidTurnContinuation | AutoCompactCallsite::PreSamplingModelSwitch
|
||||
)
|
||||
) {
|
||||
let initial_context = sess.build_initial_context(turn_context.as_ref()).await;
|
||||
insert_initial_context_before_last_real_user(&mut new_history, initial_context);
|
||||
|
||||
@@ -168,7 +168,10 @@ async fn run_remote_compact_task_inner_impl(
|
||||
})
|
||||
.await?;
|
||||
new_history = process_compacted_history(new_history);
|
||||
if auto_compact_callsite == AutoCompactCallsite::MidTurnContinuation {
|
||||
if matches!(
|
||||
auto_compact_callsite,
|
||||
AutoCompactCallsite::MidTurnContinuation | AutoCompactCallsite::PreSamplingModelSwitch
|
||||
) {
|
||||
let initial_context = sess.build_initial_context(turn_context.as_ref()).await;
|
||||
insert_initial_context_before_last_real_user(&mut new_history, initial_context);
|
||||
}
|
||||
|
||||
@@ -142,8 +142,8 @@ fn assert_pre_sampling_switch_compaction_requests(
|
||||
"follow-up request after successful model-switch compaction should include model-switch update item"
|
||||
);
|
||||
assert!(
|
||||
!body_contains_text(&follow_up_body, "<environment_context>"),
|
||||
"follow-up request should not reinsert canonical environment context after pre-sampling compaction"
|
||||
body_contains_text(&follow_up_body, "<environment_context>"),
|
||||
"follow-up request should include canonical environment context from previous-turn context reinjection"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
---
|
||||
source: core/tests/suite/compact.rs
|
||||
assertion_line: 1460
|
||||
expression: "format_labeled_requests_snapshot(\"Pre-sampling compaction on model switch to a smaller context window: current behavior compacts using prior-turn history only (incoming user message excluded), and the follow-up request carries compacted history plus the new user message.\",\n&[(\"Initial Request (Previous Model)\", &requests[0]),\n(\"Pre-sampling Compaction Request\", &requests[1]),\n(\"Post-Compaction Follow-up Request (Next Model)\", &requests[2]),])"
|
||||
---
|
||||
Scenario: Pre-sampling compaction on model switch to a smaller context window: current behavior compacts using prior-turn history only (incoming user message excluded), and the follow-up request carries compacted history plus the new user message.
|
||||
@@ -22,7 +21,10 @@ Scenario: Pre-sampling compaction on model switch to a smaller context window: c
|
||||
06:message/user:<SUMMARIZATION_PROMPT>
|
||||
|
||||
## Post-Compaction Follow-up Request (Next Model)
|
||||
00:message/user:before switch
|
||||
01:message/user:<COMPACTION_SUMMARY>\nPRE_SAMPLING_SUMMARY
|
||||
02:message/developer:<model_switch>\nThe user was previously using a different model....
|
||||
03:message/user:after switch
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:before switch
|
||||
04:message/user:<COMPACTION_SUMMARY>\nPRE_SAMPLING_SUMMARY
|
||||
05:message/developer:<model_switch>\nThe user was previously using a different model....
|
||||
06:message/user:after switch
|
||||
|
||||
Reference in New Issue
Block a user