mirror of
https://github.com/openai/codex.git
synced 2026-11-10 08:43:33 +00:00
Add history and notes tools for token-budget sessions (#39827)
## Why Token-budget sessions need a way to recover prior conversation context and preserve working state across context-window transitions. ## What changed - Add direct-model `history` tools for listing windows and items, reading items, and searching conversation contents. - Add direct-model `notes` tools for listing, reading, searching, appending, and writing persistent notes. - Route tool calls through the configured Codex backend with trusted session and agent context, bounded request arguments, and truncation-aware output handling. - Expose the extension when `features.token_budget.use_history_notes_history` is enabled with an OpenAI provider and Codex backend authentication. ## Testing - Cover tool registration, configuration changes, provider and authentication requirements, backend request context, encrypted output preservation, and request and response limits. GitOrigin-RevId: 43b259f01014ba3f30803dd7cd5634942407a9bb
This commit is contained in:
1 parent
f20b63e85c
commit
daa48072f4
21 files changed
+1232
-6
No files matched your search
@@ -654,6 +654,7 @@ async fn load_config_resolves_token_budget_config() -> std::io::Result<()> {
|
||||
r#"
|
||||
[features.token_budget]
|
||||
enabled = true
|
||||
use_history_notes_history = true
|
||||
reminder_threshold_tokens = 16000
|
||||
reminder_message_template = "Custom reminder: {n_remaining} tokens."
|
||||
guidance_message = "Preserve important state before compaction."
|
||||
@@ -661,6 +662,7 @@ auto_compact_fallback_prompt = " Write notes immediately. "
|
||||
auto_compact_fallback_buffer_tokens = 8000
|
||||
"#,
|
||||
TokenBudgetConfig {
|
||||
use_history_notes_history: true,
|
||||
reminder_threshold_tokens: Some(16_000),
|
||||
reminder_message_template: "Custom reminder: {n_remaining} tokens.".to_string(),
|
||||
guidance_message: Some("Preserve important state before compaction.".to_string()),
|
||||
|
||||
@@ -1087,6 +1087,7 @@ const AUTO_COMPACT_FALLBACK_PROMPT_MAX_BYTES: usize = 2000;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
||||
pub struct TokenBudgetConfig {
|
||||
pub use_history_notes_history: bool,
|
||||
pub reminder_threshold_tokens: Option<i64>,
|
||||
pub reminder_message_template: String,
|
||||
pub guidance_message: Option<String>,
|
||||
@@ -1179,6 +1180,7 @@ impl TokenBudgetConfig {
|
||||
impl Default for TokenBudgetConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
use_history_notes_history: false,
|
||||
reminder_threshold_tokens: None,
|
||||
reminder_message_template: DEFAULT_TOKEN_BUDGET_REMINDER_MESSAGE_TEMPLATE.to_string(),
|
||||
guidance_message: None,
|
||||
@@ -2718,6 +2720,9 @@ fn resolve_token_budget_config(
|
||||
}
|
||||
|
||||
let token_budget_config = token_budget_toml_config(config_toml.features.as_ref());
|
||||
let use_history_notes_history = token_budget_config
|
||||
.and_then(|config| config.use_history_notes_history)
|
||||
.unwrap_or_default();
|
||||
let reminder_threshold_tokens =
|
||||
token_budget_config.and_then(|config| config.reminder_threshold_tokens);
|
||||
let reminder_message_template = token_budget_config
|
||||
@@ -2735,6 +2740,7 @@ fn resolve_token_budget_config(
|
||||
token_budget_config.and_then(|config| config.auto_compact_fallback_buffer_tokens);
|
||||
|
||||
let token_budget = TokenBudgetConfig {
|
||||
use_history_notes_history,
|
||||
reminder_threshold_tokens,
|
||||
reminder_message_template,
|
||||
guidance_message,
|
||||
|
||||
Reference in new issue
Block a user