压缩管道系统

📎 引用文件

本文引用的文件 - compression.py - test_compression.py - tier2_runner.py - persistent.py - hierarchy.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件为 Vibe-Trading 的“三级压缩管道”提供系统化技术文档。该管道将原始记忆内容按时间衰减策略逐步压缩,形成“原始→每日→摘要”三层表示: - 原始(raw):完整文本,保留全部信息。 - 每日(daily):基于 TF-IDF 的关键句抽取,保留上下文首尾句与 Top-K 高权重句,体积约为原始的约一半。 - 摘要(digest):基于词频与 IDF 加权的核心概念列表,体积约为原始的 10%–20%,便于快速浏览与检索。

压缩触发条件基于“距上次访问时间”的天数阈值;压缩过程在修改前自动归档原始文件,确保可回溯。系统还提供信息保留率估算(Jaccard 重叠)与基准评测流程,用于评估压缩对检索质量的影响。

项目结构

压缩管道位于内存子系统内,围绕以下关键文件组织: - 实现:agent/src/memory/compression.py - 单元测试:agent/tests/memory/test_compression.py - 基准评测:agent/tests/memory/benchmarks/tier2_runner.py - 持久化模型与生命周期:agent/src/memory/persistent.py - 层级路由(与压缩配合使用):agent/src/memory/hierarchy.py

graph TB A["压缩实现<br/>compression.py"] --> B["单元测试<br/>test_compression.py"] A --> C["基准评测<br/>tier2_runner.py"] A --> D["持久化模型<br/>persistent.py"] A --> E["层级路由<br/>hierarchy.py"]

图表来源 - compression.py:1-353 - test_compression.py:1-235 - tier2_runner.py:324-424 - persistent.py:122-143 - hierarchy.py:145-176

章节来源 - compression.py:1-353 - test_compression.py:1-235 - tier2_runner.py:324-424 - persistent.py:122-143 - hierarchy.py:145-176

核心组件

章节来源 - compression.py:60-155 - compression.py:160-353

架构总览

三级压缩管道以“时间衰减 + 内容抽象”为主线,结合“归档保护”保障数据安全。整体流程如下:

sequenceDiagram participant Caller as "调用方" participant Pipe as "CompressionPipeline" participant FS as "文件系统" Caller->>Pipe : should_compress(当前级别, 最后访问时间) alt 需要压缩 Pipe->>FS : archive_original(原文件) alt 目标=每日 Pipe->>Pipe : compress_to_daily(内容, 关键词) else 目标=摘要 Pipe->>Pipe : compress_to_digest(内容, 关键词) end Pipe->>Pipe : estimate_retention(原始, 压缩后) Pipe-->>Caller : 返回压缩结果 else 无需压缩 Pipe-->>Caller : None end

图表来源 - compression.py:168-334

详细组件分析

触发条件与阈值配置

章节来源 - compression.py:23-39 - compression.py:168-192 - test_compression.py:58-89

关键词提取与 TF-IDF 应用

flowchart TD Start(["开始"]) --> Tokenize["分词"] Tokenize --> DocFreq["统计词项文档频率"] DocFreq --> IDF["计算 IDF"] IDF --> ScoreSent["句子评分(词IDF求和/词数)"] ScoreSent --> SelectTopK["选择Top-K+首尾句"] SelectTopK --> Daily["生成每日内容"] Daily --> TF["词频统计"] TF --> Weighted["tf × idf 加权"] Weighted --> TopTerms["取Top-N术语"] TopTerms --> Digest["生成摘要要点"] Digest --> End(["结束"])

图表来源 - compression.py:60-155 - compression.py:220-256

章节来源 - compression.py:60-155 - compression.py:220-256 - test_compression.py:209-235

信息保留率计算

章节来源 - compression.py:336-353 - test_compression.py:149-168

压缩策略选择逻辑

章节来源 - compression.py:168-192 - compression.py:194-256

CompressionPipeline 核心方法

classDiagram class CompressionPipeline { +should_compress(level, last_accessed, now) str? +compress_to_daily(content, keywords) str +compress_to_digest(daily_content, keywords) str +archive_original(entry_path) Path? +apply_compression(entry_path, content, keywords, target_level) str? +estimate_retention(original, compressed) float }

图表来源 - compression.py:160-353

章节来源 - compression.py:160-353

与持久化与层级系统的集成

章节来源 - persistent.py:122-143 - hierarchy.py:145-176

依赖关系分析

graph LR T["工具函数<br/>compute_tfidf/_tokenize/_split"] --> K["关键句抽取<br/>extract_key_sentences"] T --> D["摘要生成<br/>compress_to_digest"] K --> P["CompressionPipeline"] D --> P P --> A["归档<br/>archive_original"] P --> R["保留率<br/>estimate_retention"]

图表来源 - compression.py:60-155 - compression.py:160-353

章节来源 - compression.py:60-155 - compression.py:160-353 - test_compression.py:1-235 - tier2_runner.py:324-424

性能考量

[本节为通用性能讨论,不直接分析具体文件]

故障排查指南

章节来源 - compression.py:258-334 - test_compression.py:176-202

结论

Vibe-Trading 的三级压缩管道以 TF-IDF 为核心,结合时间衰减触发与原子归档机制,实现了从原始到每日再到摘要的可控压缩流程。通过 Jaccard 保留率与基准评测(P@5、MRR、NDCG),可量化压缩对检索质量的影响。建议在大规模场景下引入缓存与并行优化,并根据业务需求动态调整阈值与参数,以获得最佳压缩比与信息保留平衡。

[本节为总结性内容,不直接分析具体文件]

附录

使用示例(代码片段路径)

章节来源 - test_compression.py:98-142 - test_compression.py:176-202 - test_compression.py:149-168 - tier2_runner.py:324-424