feat: 增加工具结果字符限制,提升处理能力至 100,000 字符

This commit is contained in:
oudecheng 2026-06-04 17:33:01 +08:00
parent 2f529e96d0
commit d1d4998a26
7 changed files with 31 additions and 31 deletions

View File

@ -1448,8 +1448,8 @@ mod tests {
context_window_tokens: None, context_window_tokens: None,
model_extra: std::collections::HashMap::new(), model_extra: std::collections::HashMap::new(),
max_tool_iterations: 1, max_tool_iterations: 1,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
} }
@ -1554,9 +1554,9 @@ mod tests {
#[test] #[test]
fn test_truncate_tool_result_handles_utf8_char_boundaries() { fn test_truncate_tool_result_handles_utf8_char_boundaries() {
let input = "".repeat(20_500); let input = "".repeat(100_500);
let output = truncate_tool_result(&input, 20_000); let output = truncate_tool_result(&input, 100_000);
assert!(output.contains("Output truncated")); assert!(output.contains("Output truncated"));
assert!(output.is_char_boundary(output.len())); assert!(output.is_char_boundary(output.len()));

View File

@ -555,7 +555,7 @@ impl InitWizard {
provider: selected_provider.clone(), provider: selected_provider.clone(),
model: selected_model.clone(), model: selected_model.clone(),
max_tool_iterations: 100, max_tool_iterations: 100,
tool_result_max_chars: 20000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 2000, context_tool_result_trim_chars: 2000,
}; };

View File

@ -438,7 +438,7 @@ fn default_max_tool_iterations() -> usize {
} }
fn default_tool_result_max_chars() -> usize { fn default_tool_result_max_chars() -> usize {
20_000 100_000
} }
fn default_context_tool_result_trim_chars() -> usize { fn default_context_tool_result_trim_chars() -> usize {
@ -1077,7 +1077,7 @@ mod tests {
assert_eq!(provider_config.temperature, Some(0.0)); assert_eq!(provider_config.temperature, Some(0.0));
assert_eq!(provider_config.max_tokens, None); assert_eq!(provider_config.max_tokens, None);
assert_eq!(provider_config.llm_timeout_secs, 120); assert_eq!(provider_config.llm_timeout_secs, 120);
assert_eq!(provider_config.tool_result_max_chars, 20_000); assert_eq!(provider_config.tool_result_max_chars, 100_000);
assert_eq!(provider_config.context_tool_result_trim_chars, 2_000); assert_eq!(provider_config.context_tool_result_trim_chars, 2_000);
assert_eq!(provider_config.context_summary_char_budget(), 32_000); assert_eq!(provider_config.context_summary_char_budget(), 32_000);
} }
@ -1322,7 +1322,7 @@ mod tests {
let config = Config::load(file.path().to_str().unwrap()).unwrap(); let config = Config::load(file.path().to_str().unwrap()).unwrap();
assert_eq!(config.agents["default"].max_tool_iterations, 100); assert_eq!(config.agents["default"].max_tool_iterations, 100);
assert_eq!(config.agents["default"].tool_result_max_chars, 20_000); assert_eq!(config.agents["default"].tool_result_max_chars, 100_000);
assert_eq!( assert_eq!(
config.agents["default"].context_tool_result_trim_chars, config.agents["default"].context_tool_result_trim_chars,
2_000 2_000

View File

@ -121,7 +121,7 @@ mod tests {
context_window_tokens: None, context_window_tokens: None,
model_extra: HashMap::new(), model_extra: HashMap::new(),
max_tool_iterations: 1, max_tool_iterations: 1,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 20_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,

View File

@ -65,7 +65,7 @@ mod tests {
context_window_tokens: None, context_window_tokens: None,
model_extra: HashMap::new(), model_extra: HashMap::new(),
max_tool_iterations: 1, max_tool_iterations: 1,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 20_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,

View File

@ -742,8 +742,8 @@ mod tests {
context_window_tokens: None, context_window_tokens: None,
model_extra: HashMap::new(), model_extra: HashMap::new(),
max_tool_iterations: 1, max_tool_iterations: 1,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
} }
@ -1004,8 +1004,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1052,8 +1052,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1130,8 +1130,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1218,8 +1218,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1308,8 +1308,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 1, llm_timeout_secs: 1,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1397,8 +1397,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1468,8 +1468,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1548,8 +1548,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 30, llm_timeout_secs: 30,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };
@ -1615,8 +1615,8 @@ mod tests {
max_tool_iterations: 1, max_tool_iterations: 1,
llm_timeout_secs: 1, llm_timeout_secs: 1,
memory_maintenance_timeout_secs: 600, memory_maintenance_timeout_secs: 600,
tool_result_max_chars: 20_000, tool_result_max_chars: 100_000,
context_tool_result_trim_chars: 20_000, context_tool_result_trim_chars: 100_000,
max_images_in_context: 1, max_images_in_context: 1,
max_image_age_rounds: 10, max_image_age_rounds: 10,
}; };

View File

@ -7,7 +7,7 @@ use crate::text::take_prefix_chars;
use crate::tools::traits::{Tool, ToolResult}; use crate::tools::traits::{Tool, ToolResult};
use crate::tools::extract_u64; use crate::tools::extract_u64;
const MAX_CHARS: usize = 128_000; const MAX_CHARS: usize = 100_000;
const DEFAULT_LIMIT: usize = 2000; const DEFAULT_LIMIT: usize = 2000;
pub struct FileReadTool { pub struct FileReadTool {