开源的 AI 编码上下文智能压缩与监控引擎 解决 Claude Code / Cursor / OpenCode 等工具的上下文窗口爆炸问题
你用 Claude Code 或 Cursor 写代码时,有没有遇到这些问题?
ContextPilot 就是为了解决这个问题的。
它作为一个透明代理运行在你的电脑上,拦截 AI 工具发出的请求,自动压缩上下文、去除重复内容、智能裁剪工具返回结果,然后把优化后的内容发给真正的 API。你的 AI 工具完全感知不到这个过程。
同时,它提供一个 Web 控制面板,让你可以实时看到上下文占用情况、调整压缩策略、手动管理消息。
git clone https://github.com/xxx/contextpilot.git
cd contextpilotWindows 用户:
start.bat --target https://api.anthropic.commacOS / Linux 用户:
./start.sh --target https://api.anthropic.com脚本会自动完成:检查 Python 版本 → 创建虚拟环境 → 安装依赖 → 构建前端 → 启动服务。
启动成功后会看到:
🚀 ContextPilot v0.1.0
📡 代理运行在: http://localhost:8090
📊 控制面板: http://localhost:8090 (已在浏览器中打开)
🎯 目标 API: https://api.anthropic.com
⚡ 压缩引擎: 已启用
把 AI 工具的 API 地址改成 ContextPilot 的代理地址:
Claude Code:
export ANTHROPIC_BASE_URL=http://localhost:8090
# 之后正常使用 claude 命令即可Cursor:
在设置 → API 配置中,把 Base URL 改为 http://localhost:8090
OpenCode / 其他 OpenAI 兼容工具:
export OPENAI_BASE_URL=http://localhost:8090搞定! 从现在起,所有请求都会经过 ContextPilot 自动优化。
启动后,打开浏览器访问 http://localhost:8090,进入 Web 控制面板。
实时显示你当前的上下文健康状态:
- 进度条:显示已用 token 占总量的百分比(绿色正常,橙色警告,红色危险)
- 占用分布:饼图展示系统提示、对话历史、工具返回各占多少
- 节省统计:本次会话已经帮你省了多少 token,折算成大约省了多少钱
- 立即压缩:不想等自动触发,点一下按钮立刻压缩
- 开新会话:清空当前上下文,重新开始统计
逐条查看当前上下文里的每条消息:
- 每条消息显示:角色(系统/用户/AI/工具)、占用 token 数、内容预览
- 可以对单条消息操作:保护(不让任何策略碰它)、删除(从上下文中移除)
- 批量去重:一键处理所有检测到的重复内容
- 点击消息行可展开查看完整内容
这是核心设置页。你可以:
选择预设(推荐初次使用):
| 预设 | 适合谁 |
|---|---|
| 保守模式 | 上下文窗口大(200K+)、不太爆,想最大保留信息 |
| 均衡模式(默认) | 大多数用户,平衡压缩率和信息保留 |
| 激进模式 | 上下文经常爆,想最大程度压缩 |
或者自定义每个策略:
- 对话历史压缩:保留最近几轮完整对话,更早的历史自动摘要
- 工具结果裁剪:读取的代码文件超过多少行就截断,命令输出保留头尾
- 重复内容去重:自动检测同一文件被读取多次,只保留最新版本
- 优先级淘汰:上下文快满时,按优先级从低到高依次淘汰,系统提示和你最新的消息永远不会被删
所有修改立即生效,不需要重启。
查看所有历史会话的统计数据:
- 累计处理了多少个会话
- 总共节省了多少 token(折算成钱更有体感)
- 近7天的每日消耗趋势图
- 每个会话的详细记录
# 连接到不同的 AI 服务
./start.sh --target https://api.anthropic.com # Claude
./start.sh --target https://api.openai.com # OpenAI
./start.sh --target http://localhost:11434 # Ollama(本地模型)
# 自定义端口(默认代理 8090)
./start.sh --target https://api.anthropic.com --port 9090
# 不自动打开浏览器
./start.sh --target https://api.anthropic.com --no-browser你的 AI 工具
│
│ 发出请求(header 里带 API key,body 里带 messages)
▼
ContextPilot 代理 (localhost:8090)
│
├── 读取 body 中的 messages 数组
├── 识别 API 类型(/v1/messages → Anthropic,/v1/chat/completions → OpenAI)
├── 按你在 Web UI 里设置的策略执行压缩
├── header 原样透传(API key 绝不读取、不记录、不存储)
└── 把优化后的 messages 发给真正的 API
真正的 LLM API(Anthropic / OpenAI / ...)
关于隐私和安全:
- API key 只在请求 header 里传递,ContextPilot 完全不读取它
- 代码和对话内容只在内存里短暂处理,绝不写入文件
- 本地 JSON 文件只存储 token 数量等统计数字,不存任何内容
- 纯本地运行,没有任何数据发送到远端服务器
所有数据存储在项目的 data/ 目录下,纯 JSON 文件,可以直接读取和编辑:
data/
├── settings.json # 全局设置(端口、通知等)
├── strategies.json # 压缩策略配置(Web UI 中的所有选项)
├── sessions/ # 每个会话一个文件(只有统计数字)
└── presets/ # 三个内置预设(保守/均衡/激进)
想清除所有历史数据?直接删除 data/sessions/ 目录里的文件,或者在控制面板的历史记录页点"清除所有历史"。
| 要求 | 版本 |
|---|---|
| Python | 3.11 或以上 |
| Node.js | 18 或以上(仅首次构建前端时需要) |
| 操作系统 | Windows / macOS / Linux |
如果你想手动控制启动过程:
# 1. 创建并激活虚拟环境
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# 或 .venv\Scripts\activate # Windows
# 2. 安装依赖
pip install -r requirements.txt
# 3. 构建前端(只需做一次)
cd frontend
npm install
npm run build
cd ..
# 4. 启动
python -m backend.main --target https://api.anthropic.comQ:会影响 AI 回复的速度吗? A:有极少量额外延迟(目标 < 50ms),通常感知不到。压缩上下文反而会让 AI 回复更快,因为处理的 token 更少了。
Q:会不会压缩掉重要内容? A:默认的均衡模式比较保守,会保留最近8轮完整对话。你可以在策略页设置"保护关键词",含有这些词的消息绝对不会被压缩。也可以在消息管理页对单条重要消息点"保护"。
Q:支持哪些 AI 服务?
A:支持所有兼容 Anthropic API(/v1/messages)或 OpenAI API(/v1/chat/completions)的服务,包括 Claude、GPT、DeepSeek、本地 Ollama 等。不认识的请求路径会直接透传,不做任何处理。
Q:数据安全吗? A:完全安全。API key 从不被读取,代码内容从不写入磁盘,所有数据都在本地。你可以审查全部源码。
Q:和各 AI 工具自带的"自动压缩"有什么区别? A:各工具自带的自动压缩是黑盒,你不知道它压了什么、什么时候触发、会不会丢重要上下文。ContextPilot 让这个过程完全可见可控,你可以实时看到上下文状态,自己决定保留什么、压缩什么。
当前版本:v0.1.0 (MVP)
已实现功能:
- 反向代理核心(透明拦截 + header 透传)
- Streaming(SSE)响应原样转发
- 自动识别 Anthropic / OpenAI API 格式
- Token 计数(tiktoken)+ 智能模型识别
- 对话历史滑动压缩
- 工具返回结果按行数截断
- 精确重复去重 + 同文件重复检测
- 优先级淘汰(超阈值自动触发)
- Web 控制面板(概览/消息/策略/历史,四个 Tab)
- WebSocket 实时推送
- JSON 文件存储(三个策略预设)
- 一键启动脚本(Windows + macOS/Linux)
路线图:
- tree-sitter AST 智能代码裁剪(Python/JS/Go)
- 拖拽排序优先级淘汰列表
- 浏览器通知告警
- 策略实时预估效果
- Docker 镜像
MIT License — 自由使用、修改、分发。
如果这个工具对你有帮助,欢迎给个 Star
