Skip to content

v0.3.4

Latest

Choose a tag to compare

@PineappleBond PineappleBond released this 09 Oct 06:32

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

  • 40a5749 refactor(agent): use summary boundaries for context loading
  • 6985543 docs(config): add clarifying comment for max_tokens

升级说明

此版本包含数据库模型变更(Session 表新增 latest_summary_offset 字段)。升级后:

  • 现有会话的 LatestSummaryOffset 默认为 0,表示尚无摘要
  • 下次上下文压缩时会自动填充该字段
  • 无需手动迁移数据