mirror of
https://github.com/openai/codex.git
synced 2026-11-13 06:45:07 +00:00
Allow models to enable token budgeting by default (#41803)
## What changed - Add model metadata flags for enabling token budgeting and its history-notes extension. - Apply those activation defaults once at thread startup when the user has not explicitly configured token budgeting, while respecting managed feature requirements. - Continue resolving model-owned prompts for the active model so model switches can use their own token-budget guidance. ## Testing - Update the token-budget integration test to verify that model metadata activates the feature without manual configuration. GitOrigin-RevId: 73a32623eaeabb9243e240c43da7a5e7e93e9a19
This commit is contained in:
1 parent
a9519cbcdd
commit
d58d0e5841
8 files changed
+60
-12
No files matched your search
@@ -582,6 +582,8 @@ async fn review_uses_updated_turn_permissions_and_approval_policy() {
|
||||
|
||||
fn model_defaults(guidance_message: &str) -> ModelTokenBudgetConfig {
|
||||
ModelTokenBudgetConfig {
|
||||
enabled: false,
|
||||
use_history_notes_extension: false,
|
||||
reminder_threshold_tokens: 6_144,
|
||||
reminder_message_template: "Reminder: {n_remaining} tokens remain.".to_string(),
|
||||
guidance_message: guidance_message.to_string(),
|
||||
|
||||
@@ -430,6 +430,8 @@ async fn active_model_switch_resolves_token_budget_from_original_preferences(
|
||||
.as_mut()
|
||||
.expect("model messages")
|
||||
.token_budget = (initial_model || destination_has_guidance).then(|| ModelTokenBudgetConfig {
|
||||
enabled: false,
|
||||
use_history_notes_extension: false,
|
||||
reminder_threshold_tokens: if initial_model { 8_000 } else { 2_000 },
|
||||
reminder_message_template: format!(
|
||||
"Reminder for {slug}: {{n_remaining}} tokens remain."
|
||||
|
||||
@@ -63,6 +63,8 @@ const AUTO_COMPACT_FALLBACK_PROMPT: &str = "Save the important state before roll
|
||||
|
||||
fn model_token_budget_config() -> ModelTokenBudgetConfig {
|
||||
ModelTokenBudgetConfig {
|
||||
enabled: false,
|
||||
use_history_notes_extension: false,
|
||||
reminder_threshold_tokens: 6_144,
|
||||
reminder_message_template: "Model reminder: {n_remaining} tokens remain.".to_string(),
|
||||
guidance_message: "Use the model-owned context-window guidance.".to_string(),
|
||||
@@ -295,16 +297,11 @@ async fn token_budget_uses_model_message_defaults() -> Result<()> {
|
||||
|
||||
let server = start_mock_server().await;
|
||||
let response = mount_sse_once(&server, sse_completed("resp-1")).await;
|
||||
let model_defaults = model_token_budget_config();
|
||||
let mut model_defaults = model_token_budget_config();
|
||||
model_defaults.enabled = true;
|
||||
model_defaults.use_history_notes_extension = true;
|
||||
let expected_guidance = model_defaults.guidance_message.clone();
|
||||
let test = test_codex()
|
||||
.with_pre_build_hook(|home| {
|
||||
std::fs::write(
|
||||
home.join("config.toml"),
|
||||
"[features.token_budget]\nenabled = true\nuse_history_notes_extension = true\n",
|
||||
)
|
||||
.expect("write token-budget configuration");
|
||||
})
|
||||
.with_model_info_override("gpt-5.2", move |model_info| {
|
||||
model_info
|
||||
.model_messages
|
||||
@@ -314,10 +311,6 @@ async fn token_budget_uses_model_message_defaults() -> Result<()> {
|
||||
})
|
||||
.with_config(|config| {
|
||||
config.model_context_window = Some(CONFIGURED_CONTEXT_WINDOW);
|
||||
config
|
||||
.features
|
||||
.enable(Feature::TokenBudget)
|
||||
.expect("test config should allow token budget");
|
||||
})
|
||||
.build_with_auto_env(&server)
|
||||
.await?;
|
||||
|
||||
Reference in new issue
Block a user