Skip to main content

Task-aware context compression for logs, RAG, and coding workflows.

Project description

Context Engine - 面向 Agent / RAG / AI Coding 的上下文压缩引擎

把噪声日志、检索片段和代码上下文,压缩成大模型更容易使用的高信号输入。

面向 Agent 工作流、RAG 管线、AI Coding 助手的任务感知 Context Compression Layer。

Python Typer CLI MCP License


为什么需要 Context Engine

很多 Agent / RAG / AI Coding 系统的问题,不是“没有上下文”,而是“上下文太脏、太长、太乱”。

日志里有大量重复 heartbeat 和 retry;RAG 检索结果里混着相关与不相关 chunk;代码修复场景里,模型经常拿到一堆文件,却缺少最小修复线索。

Context Engine 解决的是这个中间层问题:

在把内容交给大模型之前,先按任务类型压缩、排序、去噪,并输出结构化的高信号上下文。

它不是普通摘要工具,而是一个更偏工程化的上下文整理层。


能力边界问题

场景 直接丢给模型 Context Engine
长日志 / traceback 复制全部日志,或者简单截断 保留疑似根因、traceback 尾部,折叠重复噪声
RAG 检索结果 按检索顺序塞入所有 chunk 围绕用户问题重新排序,区分高信号与低信号证据
AI Coding 修复 把附近文件全部塞进去 根据 issue / test output 排序 hotspot file
输入异常 抛原始 traceback 返回结构化错误、错误码和修复提示
Token 不够 从头或从尾硬切 在标准化和去重后按预算裁剪

系统架构

核心理念:先把上下文变成可解释、可预算、可消费的结构,再交给 LLM。

flowchart TB
    classDef input fill:#fff7d6,stroke:#d99b00,stroke-width:2px,color:#5c3b00;
    classDef core fill:#e7f1ff,stroke:#2563eb,stroke-width:2px,color:#123c8c;
    classDef mode fill:#eaf8ef,stroke:#1f8a4c,stroke-width:2px,color:#0f4f2b;
    classDef output fill:#f5ecff,stroke:#7c3aed,stroke-width:2px,color:#3f1d7a;

    subgraph Inputs["输入层"]
        CLI["CLI<br/>本地文件 / 示例"]:::input
        SDK["Python API<br/>CompressionRequest"]:::input
        MCP["MCP Tool<br/>compress_context"]:::input
    end

    subgraph Core["核心 Pipeline"]
        Validate["输入校验<br/>schema + size guard"]:::core
        Normalize["标准化<br/>ContextItem list"]:::core
        Dedupe["去重<br/>重复内容折叠"]:::core
        Budget["预算控制<br/>small / medium / large"]:::core
    end

    subgraph Compressors["任务感知压缩器"]
        Logs["logs<br/>root cause + traceback"]:::mode
        Rag["rag<br/>question-aware evidence"]:::mode
        Code["code<br/>hotspot files + failure signal"]:::mode
    end

    subgraph Outputs["输出契约"]
        Result["ok: true<br/>summary + key facts + llm_ready_context"]:::output
        Error["ok: false<br/>error_code + hint + details"]:::output
    end

    CLI --> Validate
    SDK --> Validate
    MCP --> Validate
    Validate --> Normalize --> Dedupe --> Budget
    Budget --> Logs
    Budget --> Rag
    Budget --> Code
    Logs --> Result
    Rag --> Result
    Code --> Result
    Validate --> Error

数据流

sequenceDiagram
    autonumber
    participant U as 用户 / Agent
    participant C as CLI / MCP / SDK
    participant V as Validator
    participant P as Pipeline
    participant M as Mode Compressor
    participant O as Output Envelope

    U->>C: 提交 logs / rag / code 输入
    C->>V: 校验字段、大小和模式
    V->>P: 标准化为 ContextItem
    P->>P: 去重、排序、预算裁剪
    P->>M: 进入任务压缩器
    M->>O: 生成 summary / key_facts / llm_ready_context
    O-->>U: 返回结构化结果或结构化错误

核心能力

1. logs:根因导向的日志压缩

logs 模式面向长日志、重复日志、异常栈和混合噪声。

能力 说明
根因提取 优先保留 error、exception、failed、fatal 等关键行
Traceback 保留 保留更接近根因的 traceback 尾部
噪声折叠 把重复 heartbeat、poll、retry、duplicate line 归并成计数
LLM-ready 输出 生成可以直接放进诊断或修复 prompt 的上下文块

2. rag:围绕问题的证据重排

rag 模式接收 questionchunks,把检索结果从“按召回顺序堆叠”变成“围绕问题排序”。

分层 含义
HIGH 与问题重叠度高,可能直接支持回答
SUPPORT 有帮助但不是核心证据
Low signal 相关性弱,不应该占据主要上下文窗口

3. code:最小修复上下文

code 模式接收 issue、可选 test_outputfiles,用于给 AI Coding 助手准备更聚焦的修复输入。

信号 作用
Issue terms 保留用户描述的问题焦点
Failure terms 把测试失败、异常信息和候选文件关联起来
Hot path hints 对 test、parser、pipeline、service、validator 等路径加权
Supporting files 保留辅助上下文,但不让它淹没主线

4. CLI + MCP 双入口

同一套压缩逻辑可通过三种方式使用:

入口 用途
Python API 集成到自己的包或服务里
CLI 本地处理日志、样例和脚本任务
MCP Server 接入支持 MCP 的 Agent / IDE / 自动化环境

快速开始

前置要求

项目 要求
Python 3.113.13
包管理器 pip
MCP 运行时 可选,通过 mcp extra 安装

安装

python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -e .[dev,mcp]

运行示例

python -m pytest -q
python -m context_engine.cli --mode logs --input examples/logs/sample.log --budget medium
python -m context_engine.cli --mode rag --input examples/rag/sample.json --budget medium
python -m context_engine.cli --mode code --input examples/code/sample.json --budget medium

从 PyPI 安装发布包:

python -m pip install "melonelish-context-engine[mcp]"
context-engine-mcp

CLI 使用

python -m context_engine.cli --mode logs --input examples/logs/sample.log --budget small
python -m context_engine.cli --mode rag --input examples/rag/sample.json --budget medium
python -m context_engine.cli --mode code --input examples/code/sample.json --budget large

输入格式

logs:纯文本

2026-07-03 10:01:12 ERROR payment.worker failed to charge order
Traceback (most recent call last):
  ...
ValueError: missing customer_id

rag:JSON

{
  "question": "Why did checkout fail?",
  "chunks": [
    {
      "content": "Checkout fails when customer_id is missing.",
      "metadata": {"source": "runbook.md"}
    }
  ]
}

code:JSON

{
  "issue": "Checkout test fails when customer_id is omitted.",
  "test_output": "ValueError: missing customer_id",
  "files": [
    {
      "path": "src/payments/checkout.py",
      "content": "def checkout(order): ..."
    }
  ]
}

MCP 使用

通过 stdio 启动 MCP Server:

python -m context_engine.mcp_server

当前暴露一个工具:

工具 参数 功能
compress_context modebudgetcontentpayload 压缩 logs / rag / code 上下文

示例错误返回:

{
  "ok": false,
  "error": {
    "error_code": "invalid_field",
    "message": "Field 'chunks' must be a non-empty list.",
    "hint": "Provide at least one item in 'chunks'."
  }
}

输出契约

CLI 和 MCP 都返回统一结构:

结果 结构
成功 { "ok": true, "result": ... }
失败 { "ok": false, "error": { "error_code": "...", "message": "...", "hint": "...", "details": ... } }

成功结果会包含 schema version、summary、key facts、被丢弃或降权的噪声,以及 llm_ready_context


安全边界

当前内置限制:

限制项 当前值
单段文本最大长度 200000 字符
结构化列表最大数量 64
输入文件最大大小 2000000 bytes
Schema version 1.0

这些限制用于避免外部工作流把任意超大 payload 直接打进工具。

当前已支持

  • Python 3.113.13
  • logs / rag / code 三种模式
  • 三种模式的 CLI 使用
  • 通过 compress_context 暴露 MCP 工具
  • 纯文本日志输入
  • JSON 格式的 RAG 和 code 输入
  • 结构化成功 / 失败 envelope
  • 基础 benchmark 和 GitHub Actions CI

暂不支持

  • PDF、图片、Office 文件等二进制输入
  • embedding-aware reranking
  • 仓库级依赖图分析
  • 跨未来大版本的长期兼容性承诺
  • 生产级鉴权、持久化、监控和审计能力

Benchmark

Benchmark 资料位于:

当前样例集体现的行为:

模式 对比对象 当前效果
logs 原始日志 / 简单截断 保留根因,折叠重复噪声
rag 直接 dump 检索 chunk 围绕问题排序证据
code 普通文件摘要 保留 issue、失败信号、hotspot file 和支持上下文

v0.1.0 的 benchmark 还很小,适合作为回归检查和展示样例,不代表完整生产评测。


开发

python -m pip install -e .[dev,mcp]
python -m pytest -q
python benchmarks/generate_benchmarks.py

CI 会在 push 和 pull request 时运行安装、测试和 benchmark 生成检查。


发布状态

当前版本目标:v0.1.0

这个版本适合早期外部试用、集成测试和开发者工作流验证。它已经具备可复用包结构、测试和文档,但仍然是范围明确的早期 beta。


Roadmap

  • 引入 embedding 或 reranker 驱动的 RAG 排序。
  • 加强 code hotspot 识别,加入更可靠的结构化代码信号。
  • 扩展 benchmark,加入更多真实脏数据样本。
  • 发布更易安装的正式包版本。
  • 增加更多 Agent Runtime / MCP 集成示例。

License

本项目采用 MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

melonelish_context_engine-0.1.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

melonelish_context_engine-0.1.0-py3-none-any.whl (21.3 kB view details)

Uploaded Python 3

File details

Details for the file melonelish_context_engine-0.1.0.tar.gz.

File metadata

File hashes

Hashes for melonelish_context_engine-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c9b66680c8403f02b20586be0dd938fcfd1caaa8719665ba07142f0b0ea76fff
MD5 b5b5645b70e05e45408660599f05c7ea
BLAKE2b-256 996848c2119aa1839baa44b84554b99a2ecf441a51bda3e93cecf03a43bbad9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for melonelish_context_engine-0.1.0.tar.gz:

Publisher: publish.yml on melonelish/context-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file melonelish_context_engine-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for melonelish_context_engine-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a3a928c6173f6577af9e7ee01e2a4faceb45afb564bd88f72feadba8514dc79
MD5 7316e211a38c3601e5d84e3f2de5651e
BLAKE2b-256 d0441b8d5ec24398351cb6486906b777539dd3566147db8943155881ed323444

See more details on using hashes here.

Provenance

The following attestation bundles were made for melonelish_context_engine-0.1.0-py3-none-any.whl:

Publisher: publish.yml on melonelish/context-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page