mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-24 23:10:56 +08:00
3.3 KiB
3.3 KiB
上下文管理升级方案
问题分析
当前状态
-
session_context_service.rs 使用本地关键词提取
create_summary()方法(第 355-418 行)使用硬编码关键词匹配- 摘要质量差,无法理解语义
- 不支持 AI 驱动的智能压缩
-
SessionConfigBuilder 缺少上下文配置
- 只有
max_turns、system_prompt、include_context_trace - 没有暴露 token 限制、压缩策略等配置
- 只有
-
aster 框架能力未接入
- aster 有渐进式工具响应移除能力
- aster 支持 AI 摘要
- Lime 未正确配置和使用这些能力
改进方案
阶段 1:扩展 SessionConfigBuilder
在 src-tauri/crates/agent/src/aster_state_support.rs 中扩展 SessionConfigBuilder:
pub struct SessionConfigBuilder {
id: String,
max_turns: Option<u32>,
system_prompt: Option<String>,
include_context_trace: Option<bool>,
// 新增:上下文压缩配置
max_context_tokens: Option<usize>,
context_compression_threshold: Option<f32>,
enable_ai_summary: Option<bool>,
tool_response_retention_strategy: Option<ToolResponseRetentionStrategy>,
}
pub enum ToolResponseRetentionStrategy {
KeepAll,
Progressive { stages: Vec<f32> }, // 0.0, 0.1, 0.2, 0.5, 1.0
RemoveAfterTurns(usize),
}
阶段 2:改造 session_context_service.rs
将 create_summary() 方法改为调用 AI 模型生成摘要:
async fn create_summary_with_ai(
&self,
session_id: &str,
messages: &[ChatMessage],
provider: &dyn LLMProvider,
) -> Result<SessionSummary, String> {
// 构建摘要提示词
let summary_prompt = build_summary_prompt(messages);
// 调用 AI 模型生成摘要
let summary_response = provider
.complete(&summary_prompt)
.await
.map_err(|e| format!("AI 摘要生成失败: {e}"))?;
// 解析摘要结果
parse_summary_response(&summary_response)
}
阶段 3:集成到 Aster Agent 初始化
在 aster_agent_cmd.rs 中配置上下文压缩:
let session_config = SessionConfigBuilder::new(&session_id)
.system_prompt(system_prompt)
.max_context_tokens(100_000) // Claude 的上下文窗口
.context_compression_threshold(0.8) // 80% 时触发压缩
.enable_ai_summary(true)
.tool_response_retention_strategy(
ToolResponseRetentionStrategy::Progressive {
stages: vec![0.0, 0.1, 0.2, 0.5, 1.0]
}
)
.build();
验证方式
- 单元测试:测试 AI 摘要生成逻辑
- 集成测试:发起 20+ 轮长对话,验证:
- AI 摘要是否在 80% token 使用率时触发
- 摘要质量是否优于本地关键词提取
- 工具响应是否按渐进式策略移除
- 性能测试:测试摘要生成的延迟和成本
实施步骤
- ✅ 分析当前代码结构
- ⬜ 扩展 SessionConfigBuilder
- ⬜ 实现 AI 摘要生成逻辑
- ⬜ 改造 session_context_service.rs
- ⬜ 集成到 aster_agent_cmd.rs
- ⬜ 编写单元测试
- ⬜ 进行集成测试
- ⬜ 性能优化和调优
注意事项
- 向后兼容:保留本地关键词提取作为降级方案
- 成本控制:AI 摘要会产生额外的 API 调用成本
- 缓存策略:摘要结果应该缓存,避免重复生成
- 错误处理:AI 摘要失败时应优雅降级到本地摘要