Repository navigation
What's Changed
🔄 Context Compression Refactoring
核心改进:重构上下文加载机制,使用摘要边界替代固定限制,确保上下文始终从有效的结构点(摘要或首条消息)开始加载。
主要变更
- Session 模型增强:新增
LatestSummaryOffset字段,追踪最新的摘要边界位置 - 消息仓库优化:
ListBySessionBeforeOffset支持minOffset参数,实现精确的范围查询 - ForkSession 改进:使用
LatestSummaryOffset作为上下文起点,替代原有的limit参数,避免从对话中间开始导致的结构问题 - 压缩流程完善:压缩完成后自动持久化摘要偏移量,确保下次加载从正确位置开始
- 消息规范化:为压缩路径添加
normalizeSchemaMessagesForLLM,保证压缩后的消息符合 Anthropic Messages API 规范(系统消息在前、工具调用配对正确等)
解决的问题
- 修复了"第一条非系统消息是 assistant"的 bug
- 确保压缩/分叉后的上下文始终满足 LLM API 的结构要求
- 消除了使用固定 limit 可能导致的上下文不完整问题
📝 配置优化
- 更新
context_tokens_limit、auto_compact_buffer_tokens等配置的默认值和注释 - 为
max_tokens配置项添加清晰的注释说明
📊 变更统计
- 27 个文件变更
- 579 行新增
- 183 行删除
Commits
40a5749refactor(agent): use summary boundaries for context loading6985543docs(config): add clarifying comment for max_tokens
升级说明
此版本包含数据库模型变更(Session 表新增 latest_summary_offset 字段)。升级后:
- 现有会话的
LatestSummaryOffset默认为 0,表示尚无摘要 - 下次上下文压缩时会自动填充该字段
- 无需手动迁移数据