Skip to content

refactor: 移除 MicroCompact 子系统 #706

@Yumiue

Description

@Yumiue

背景

MicroCompact 是早期设计的上下文压缩机制,用于在 token 预算接近上限时对历史消息进行局部摘要压缩。随着项目演进,该方案暴露出以下问题:
主要:这个策略对缓存命中不友好,对于之前设计考量的是claude的缓存过期,而不并非适合所有模型,由此准备删除

  1. 复杂度高:涉及 summarizer 注册、pin checker、policy 路由等多层抽象,维护成本与收益不成正比
  2. 与现有 Compact 策略重叠:当前 context-compact.md 定义的全局 compact 已能覆盖预算管理需求
  3. 代码耦合深:microcompact 的类型定义散布在 context/types.gotools/manager.gotools/registry.go 等多处,增加了模块间耦合
  4. 测试负担大:microcompact 相关测试文件超过 1400 行,但实际功能未被主链路使用

目标

彻底移除 MicroCompact 子系统,降低代码复杂度,明确上下文管理的单一职责。

范围

删除文件

  • internal/context/microcompact.go — 核心压缩逻辑
  • internal/context/microcompact_test.go — 单元测试
  • internal/context/microcompact_summarizer_test.go — summarizer 测试
  • internal/context/pin_checker.go — pin 检查器
  • internal/context/pin_checker_test.go — pin 检查器测试
  • internal/tools/micro_compact_policy.go — policy 定义
  • internal/tools/micro_compact_summarizer.go — summarizer 接口
  • internal/tools/micro_compact_summarizer_test.go — summarizer 测试
  • internal/tools/micro_compact_summarizers_builtin.go — 内置 summarizer 实现

修改文件

  • internal/context/types.go — 移除 MicroCompact 相关类型与字段
  • internal/context/builder.go — 移除 microcompact 引用与构建逻辑
  • internal/context/projection.go — 移除 microcompact 投影逻辑
  • internal/config/context.go — 移除 microcompact 配置项
  • internal/config/loader.go — 移除配置加载中的 microcompact 分支
  • internal/tools/manager.go — 移除 summarizer 注册
  • internal/tools/registry.go — 移除 microcompact 工具注册
  • internal/runtime/runtime.go — 移除 runtime 中的 microcompact 引用
  • internal/app/bootstrap.go — 移除启动时的 microcompact 初始化
  • docs/context-compact.md — 移除 microcompact 相关文档
  • docs/tech-debt.md — 更新技术债务清单
  • docs/roadmap.md — 更新路线图

不在本任务范围

  • 全局 Compact 策略的优化(独立任务)
  • Budget 闭环的进一步完善(独立任务)

验收

  • go build ./... 编译通过
  • go test ./... 全部通过
  • go vet ./... 无警告
  • 无残留的 microcompact 引用(grep 确认)
  • 相关文档已同步更新

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions