Files
wehub-resource-sync 1a46bd5860
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code-slim name:code-slim]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code-slim-nonroot name:code-slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-nonroot name:nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code-nonroot name:code-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code-slim name:code-slim]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code-slim-nonroot name:code-slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-nonroot name:nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-slim name:slim]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-slim-nonroot name:slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime name:]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code name:code]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code-nonroot name:code-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-slim name:slim]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-slim-nonroot name:slim-nonroot]) (push) Has been cancelled
Release Please / release-please (push) Has been cancelled
CI / changes (push) Has been cancelled
CI / commitlint (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime name:]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code name:code]) (push) Has been cancelled
Install Native E2E / install-native (macos-latest) (push) Has been cancelled
Init E2E / docker-init-e2e (push) Has been cancelled
Init Native E2E / init-native (macos-latest, claude) (push) Has been cancelled
Init Native E2E / init-native (macos-latest, codex) (push) Has been cancelled
Init Native E2E / init-native (macos-latest, copilot) (push) Has been cancelled
Init Native E2E / init-native (ubuntu-latest, claude) (push) Has been cancelled
Install Native E2E / install-native (ubuntu-latest) (push) Has been cancelled
Init Native E2E / init-native (ubuntu-latest, codex) (push) Has been cancelled
Init Native E2E / init-native (ubuntu-latest, copilot) (push) Has been cancelled
Merge Conflicts / merge-conflicts (push) Has been cancelled
Security / Dependency audit (pip-audit) (push) Has been cancelled
Security / CodeQL (javascript-typescript) (push) Has been cancelled
Security / CodeQL (python) (push) Has been cancelled
Security / Secret scan (gitleaks) (push) Has been cancelled
Wrap E2E / docker-wrap-e2e (push) Has been cancelled
Wrap Native E2E / wrap-native (macos-latest) (push) Has been cancelled
Wrap Native E2E / wrap-native (ubuntu-latest) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code-slim name:code-slim]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code-slim-nonroot name:code-slim-nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-nonroot name:nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-slim name:slim]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-slim-nonroot name:slim-nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime name:]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code name:code]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code-nonroot name:code-nonroot]) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / build-wheel (push) Has been cancelled
CI / build-wheel-windows (push) Has been cancelled
CI / test-dashboard-ui (push) Has been cancelled
CI / prefetch-model (push) Has been cancelled
CI / test-agno (push) Has been cancelled
CI / build (push) Has been cancelled
CI / workflow-validation (push) Has been cancelled
CI / docker-native-e2e (push) Has been cancelled
CI / test (1) (push) Has been cancelled
CI / test (2) (push) Has been cancelled
CI / test (3) (push) Has been cancelled
CI / test (4) (push) Has been cancelled
CI / test-extras (push) Has been cancelled
CI / windows-native-wrapper (push) Has been cancelled
CI / macos-native-wrapper (push) Has been cancelled
Docker / promote-latest (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 09:51:56 +00:00

453 lines
31 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- WEHUB_ZH_README -->
> [!NOTE]
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
> [English](./README.en.md) · [原始项目](https://github.com/chopratejas/headroom) · [上游 README](https://github.com/chopratejas/headroom/blob/HEAD/README.md)
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
<div align="center"><pre>
██╗ ██╗███████╗ █████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███╗ ███╗
██║ ██║██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔═══██╗██╔═══██╗████╗ ████║
███████║█████╗ ███████║██║ ██║██████╔╝██║ ██║██║ ██║██╔████╔██║
██╔══██║██╔══╝ ██╔══██║██║ ██║██╔══██╗██║ ██║██║ ██║██║╚██╔╝██║
██║ ██║███████╗██║ ██║██████╔╝██║ ██║╚██████╔╝╚██████╔╝██║ ╚═╝ ██║
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
面向 AI 智能体的上下文压缩层
</pre></div>
<p align="center"><strong>JSON 数据场景 token 减少 6095%,编码智能体场景减少 15-20% · 库 · 代理 · MCP · 内容感知压缩器 · 本地优先 · 可逆</strong></p>
<p align="center">
<a href="https://github.com/chopratejas/headroom/actions/workflows/ci.yml"><img src="https://github.com/chopratejas/headroom/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="https://app.codecov.io/gh/chopratejas/headroom"><img src="https://codecov.io/gh/chopratejas/headroom/graph/badge.svg" alt="codecov"></a>
<a href="https://pypi.org/project/headroom-ai/"><img src="https://img.shields.io/pypi/v/headroom-ai.svg" alt="PyPI"></a>
<a href="https://www.npmjs.com/package/headroom-ai"><img src="https://img.shields.io/npm/v/headroom-ai.svg" alt="npm"></a>
<a href="https://huggingface.co/chopratejas/kompress-v2-base"><img src="https://img.shields.io/badge/model-Kompress--v2--base-yellow.svg" alt="Model: Kompress-v2-base"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="License: Apache 2.0"></a>
<a href="https://headroom-docs.vercel.app/docs"><img src="https://img.shields.io/badge/docs-online-blue.svg" alt="Docs"></a>
</p>
<p align="center">
<a href="https://headroom-docs.vercel.app/docs">Docs</a> ·
<a href="#get-started-60-seconds">安装</a> ·
<a href="#proof">验证</a> ·
<a href="#agent-compatibility-matrix">智能体</a> ·
<a href="https://discord.gg/yRmaUNpsPJ">Discord</a> ·
<a href="llms.txt">llms.txt</a>
</p>
<p align="center"><sub>
<b>AI 智能体 / LLM</b>请在此阅读 <a href="llms.txt"><code>/llms.txt</code></a>,或获取 <a href="https://headroom-docs.vercel.app/llms.txt">实时索引</a> / <a href="https://headroom-docs.vercel.app/llms-full.txt">完整文档 blob</a>。
</sub></p>
---
<p align="center"><a href="https://trendshift.io/repositories/20881" target="_blank"><img src="https://trendshift.io/api/badge/repositories/20881" alt="chopratejas%2Fheadroom | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a></p>
Headroom 会在内容到达 LLM 之前,压缩 AI 智能体读取的一切——工具输出、日志、RAG 分块、文件和对话历史。答案相同,token 仅为原来的一小部分。
<p align="center">
<img src="HeadroomDemo-Fast.gif" alt="Headroom 实际运行效果" width="820">
<br/><sub>实时演示:10,144 → 1,260 tokens — 同样找到 FATAL。</sub>
</p>
## 它能做什么
- **库(Library** — 在 Python 或 TypeScript 中使用 `compress(messages)`,可内联集成到任意应用
- **代理(Proxy** — `headroom proxy --port 8787`,零代码改动,支持任意语言
- **智能体封装(Agent wrap)** — 一条命令运行 `headroom wrap claude|codex|copilot|cursor|aider|opencode|cline|continue|goose|openhands|openclaw|vibe`;用 `headroom unwrap <tool>` 撤销
- **MCP 服务器** — `headroom_compress``headroom_retrieve``headroom_stats`,适用于任意 MCP 客户端
- **跨智能体记忆(Cross-agent memory** — 在 Claude、Codex、Gemini 之间共享存储,自动去重
- **`headroom learn`** — 挖掘失败会话,将修正写入 `CLAUDE.local.md`(默认,已 gitignore)或 `CLAUDE.md` / `AGENTS.md` / `GEMINI.md`
- **输出 token 缩减(Output token reduction** — 裁剪模型*写回*的内容(不仅是发送给它的内容):去除冗余套话/重复代码,并在常规步骤中跳过深度“思考”。参见[输出 token 缩减](#output-token-reduction-cut-what-the-model-writes-back)。
- **可逆(CCRReversible)** — 原文本地缓存,可按需检索
## 工作原理(30 秒)
```
Your agent / app
(Claude Code, Cursor, Codex, LangChain, Agno, Strands, your own code…)
│ prompts · tool outputs · logs · RAG results · files
┌────────────────────────────────────────────────────┐
│ Headroom (runs locally — your data stays here) │
│ ──────────────────────────────────────────────── │
│ CacheAligner → ContentRouter → CCR │
│ ├─ SmartCrusher (JSON) │
│ ├─ CodeCompressor (AST) │
│ └─ Kompress-v2-base (text, HF) │
│ │
│ Cross-agent memory · headroom learn · MCP │
└────────────────────────────────────────────────────┘
│ compressed prompt + retrieval tool
LLM provider (Anthropic · OpenAI · Bedrock · …)
```
- **ContentRouter** — 检测内容类型,选择对应压缩器
- **SmartCrusher / CodeCompressor / Kompress-v2-base** — 压缩 JSON、AST 或散文文本
- **CacheAligner** — 稳定前缀,使提供商 KV 缓存真正命中
- **CCR** — 本地存储原文;若需要,LLM 可调用 `headroom_retrieve`
→ [Architecture](https://headroom-docs.vercel.app/docs/architecture) · [CCR reversible compression](https://headroom-docs.vercel.app/docs/ccr) · [Kompress-v2-base model card](https://huggingface.co/chopratejas/kompress-v2-base)
## 快速开始(60 秒)
```bash
# 1 — Install
uv tool install "headroom-ai[all]" # Install `headroom` CLI as a global tool in self-contained virtual env
pip install "headroom-ai[all]" # Python — ships the `headroom` CLI
npm install headroom-ai # TypeScript SDK only — no `headroom` CLI
# 2 — Pick your mode (the `headroom` commands below come from the uv or pip install)
headroom wrap claude # wrap a coding agent
headroom proxy --port 8787 # drop-in proxy, zero code changes
# or: from headroom import compress # inline library
# 3 — Verify setup and see the savings
headroom doctor # health check — confirms routing is working
headroom perf
headroom dashboard # live savings dashboard (proxy must be running)
```
建议使用 headroom 时,每次启动一个封装后的智能体会话,以确保完成所有必要配置。封装编码智能体时,headroom 会启动本地代理,设置提供 rtk、tokensave 等工具的 MCP 服务器,并启动已将请求代理到 headroom 的编码智能体会话。
`headroom` CLI **仅**通过 PyPI 包分发。npm 上的 `headroom-ai` 是 TypeScript SDK——供导入的库(`import { compress } from 'headroom-ai'`),不是 CLI,因此不提供 `headroom` 命令。
细粒度可选依赖:`[proxy]``[mcp]``[ml]``[code]``[memory]``[vector]`(可选 HNSW 后端——需要 C++ 工具链,不包含在 `[all]` 中)、`[relevance]``[image]``[agno]``[langchain]``[evals]``[pytorch-mps]`(Apple GPU 内存嵌入器卸载——设置 `HEADROOM_EMBEDDER_RUNTIME=pytorch_mps`)。需要 **Python 3.10+**
### Codex / 全局安装
若 Codex 或其他 MCP 客户端无法可靠继承 shell 中的 `PATH`,请将 Headroom 安装为持久化 uv 工具,并在客户端中指向该二进制文件的绝对路径:
```bash
uv tool install "headroom-ai[all]"
command -v headroom
```
然后在 MCP 配置中使用返回的路径:
```toml
[mcp_servers.headroom]
command = "/absolute/path/from/command-v/headroom"
args = ["mcp", "serve"]
```
仅当客户端启动时,`PATH` 已包含 uv 工具目录时,`command = "headroom"` 才有效。
## 验证
**真实智能体工作负载上的节省:**
| 工作负载 | 压缩前 | 压缩后 | 节省 |
|-------------------------------|-------:|-------:|--------:|
| 代码搜索(100 条结果) | 17,765 | 1,408 | **92%** |
| SRE 事故排查 | 65,694 | 5,118 | **92%** |
| GitHub issue 分类 | 54,174 | 14,761 | **73%** |
| 代码库探索 | 78,502 | 41,254 | **47%** |
**在标准基准测试中保持准确性:**
| Benchmark | Category | N | Baseline | Headroom | Delta |
|------------|----------|----:|---------:|---------:|------------|
| GSM8K | Math | 100 | 0.870 | 0.870 | **±0.000** |
| TruthfulQA | Factual | 100 | 0.530 | 0.560 | **+0.030** |
| SQuAD v2 | QA | 100 | — | **97%** | 19% compression |
| BFCL | Tools | 100 | — | **97%** | 32% compression |
复现:`python -m headroom.evals suite --tier 1` · [完整基准测试与方法学](https://headroom-docs.vercel.app/docs/benchmarks)
## 输出 token 缩减(削减模型写回的内容)
上文所述内容会缩小你**发送**的 prompt。但你也要为模型**写回**的每一个 token 付费——而在 Opus 级别模型上,输出成本是输入的 5 倍。其中大量输出是浪费:比如「好的,让我来…」这类开场白、重复打印你刚展示过的代码,以及在读取文件等常规步骤上进行冗长的「思考」。
Headroom 也能从代理侧削减这些输出,无需你改动任何代码:
- **冗长度引导(verbosity steering** — 在 system prompt 末尾追加一条简短的「保持简洁、不要复述上下文」说明(这样你的 prompt 缓存仍能命中)。
- **努力度路由(effort routing)** — 当某轮对话只是模型在工具结果之后继续执行时(例如读取文件、测试通过),会降低模型的思考努力度。新问题与错误仍保持全力。
开启方式:
```bash
export HEADROOM_OUTPUT_SHAPER=1 # off by default
headroom proxy --port 8787
```
> **已经在运行代理?** 这些开关在每次请求时都会*实时*读取,因此若代理是 `headroom wrap` **复用**(而非重新启动),则不会看到你之后 export 的值——其环境在启动时已被快照。`headroom wrap` 现在会通过 loopback `POST /admin/runtime-env` 将你当前的设置热同步到正在运行的代理,因此可**无需重启**立即生效(无冷启动、无请求中断、无缓存丢失)。请在你 `wrap` 之前设置它们。在共享代理上,这些覆盖是全局的——以最后一次显式设置为准。
**找到适合你的简洁度。** 人们不会*说*自己想要多简洁的回答——他们会*表现出来*(打断冗长回复,或在读完之前就继续下一步)。`headroom learn --verbosity` 会读取你过去的会话并自动选择合适级别:
```bash
headroom learn --verbosity # preview what it found (dry run)
headroom learn --verbosity --apply # save it; the proxy uses it from now on
```
**查看你节省了多少输出 token。** 输出节省是*反事实*的——我们永远看不到模型*本来会*写什么——因此 Headroom 报告的是诚实的**估算值及置信区间**,而不是编造数字:
```bash
headroom output-savings
# Reduction: 31.7% (95% CI 27.7% … 35.7%) [estimated]
```
想要*实测*数字而非估算?将 10% 的对话留作未塑形对照组:`export HEADROOM_OUTPUT_HOLDOUT=0.1`。仪表板会在输入压缩旁显示 **Output Tokens Saved** 卡片,标注为 `measured``estimated`,并附带置信区间。
→ 完整说明(含测量方法学):[输出 token 缩减](https://headroom-docs.vercel.app/docs/savings)
<a href="https://www.star-history.com/?repos=chopratejas%2Fheadroom&type=date&legend=top-left">
<picture>
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=chopratejas/headroom&type=date&legend=top-left" />
</picture>
</a>
## Agent 兼容性矩阵
| Agent | `headroom wrap` | Notes |
|--------------|:---------------:|----------------------------------|
| Claude Code | ✅ | `--memory` · `--code-graph` · `--1m` · `--tool-search` |
| Codex | ✅ | 与 Claude 共享记忆 |
| Cursor | Manual setup | 启动代理并打印 Cursor 设置的 base URL |
| Aider | ✅ | 启动代理 + 启动应用 |
| Copilot CLI | ✅ | 启动代理 + 启动应用 |
| OpenClaw | ✅ | 作为 ContextEngine 插件安装 |
| OpenCode | ✅ | 注入配置 · 启动代理 + 启动应用 |
| Cline | ✅ | 启动代理 + 注入配置 |
| Continue | ✅ | 启动代理 + 注入配置 |
| Goose | ✅ | 启动代理 + 启动应用 |
| OpenHands | ✅ | 启动代理 + 启动应用 |
| Mistral Vibe | ✅ | 启动代理 + 启动应用 |
| Cortex Code | Library only | 节省 6065%(库模式;无 `wrap` |
任何 OpenAI 兼容客户端均可通过 `headroom proxy` 使用。MCP 原生:`headroom mcp install`
使用 `headroom unwrap <tool>` 撤销持久化包装(支持:`claude``copilot``codex``opencode``openclaw`)。
### GitHub Copilot CLI 订阅模式
Headroom 可将 GitHub Copilot CLI 订阅流量路由到本地代理:
```bash
headroom copilot-auth login
headroom wrap copilot --subscription -- --model gpt-4o
```
这样 Headroom 可拦截 OpenAI 兼容的 Copilot CLI 请求,在转发至 GitHub Copilot 托管 API 之前应用相同的代理压缩流水线。该包装器会用 Headroom 可复用的 GitHub OAuth token 换取 Copilot 的短期 API token,并在启动时将上游端点打印为 `COPILOT_PROVIDER_API_URL=...`
`headroom copilot-auth login` 会存储 Headroom 专用的 Copilot OAuth token。
这可避免依赖通用的 GitHub 或 Copilot CLI token——它们虽可读取 Copilot 账户元数据,但仍可能被 Copilot 的 token 交换端点拒绝。
对于 GitHub Enterprise Server 或自定义域名的 Copilot 部署,请在启动前设置部署域名:
```bash
export GITHUB_COPILOT_ENTERPRISE_DOMAIN=ghe.example.com
```
对于 `github.com/enterprises/your-enterprise` 这类 GitHub.com Enterprise Cloud URL
请勿设置 enterprise-domain 覆盖。Headroom 会使用 GitHub 的正常 token 交换端点,以及为已登录账户公布的 Copilot API 端点。
平台支持说明:通过 Copilot CLI Keychain 存储在 macOS 上复用认证已通过冒烟测试。Windows Credential Manager、Linux Secret Service / `secret-tool`,以及 Docker/CI token 注入路径已实现或规划中作为认证发现路径,但在经过真实操作系统验证之前,仍不应视为已完全验证。对于 Docker 与 CI,建议显式传入 `GITHUB_COPILOT_TOKEN``GITHUB_COPILOT_GITHUB_TOKEN`,而非依赖主机钥匙串访问。
## 何时使用 · 何时跳过
**非常适合,如果你…**
- 每天运行 AI 编程 agent,并希望在不改代码的情况下节省成本
- 跨多个 agent 工作,并希望共享记忆
- 需要可逆压缩——在配置的 TTL 内可通过 CCR 取回原始内容
**可以跳过,如果你…**
- 只使用单一提供商的原生压缩,且不需要跨 agent 记忆
- 在沙箱环境中工作,本地进程无法运行
<details>
<summary><b>集成 — 将 Headroom 接入任意技术栈</b></summary>
| Your setup | Hook in with |
|------------------------|------------------------------------------------------------------|
| Any Python app | `compress(messages, model=…)` |
| Any TypeScript app | `await compress(messages, { model })` |
| Anthropic / OpenAI SDK | `withHeadroom(new Anthropic())` · `withHeadroom(new OpenAI())` |
| Vercel AI SDK | `wrapLanguageModel({ model, middleware: headroomMiddleware() })` |
| LiteLLM | `litellm.callbacks = [HeadroomCallback()]` |
| LangChain | `HeadroomChatModel(your_llm)` |
| Agno | `HeadroomAgnoModel(your_model)` |
| Strands | [Strands 指南](https://headroom-docs.vercel.app/docs/strands) |
| ASGI apps | `app.add_middleware(CompressionMiddleware)` |
| Multi-agent | `SharedContext().put / .get` |
| MCP clients | `headroom mcp install` |
</details>
</details>
<details>
<summary><b>包含内容</b></summary>
- **SmartCrusher** — 通用 JSON:字典数组、嵌套对象、混合类型。
- **CodeCompressor** — 面向 Python、JS/TS、Go、Rust、Java、C/C++、Perl 的 AST 感知压缩。
- **Kompress-v2-base** — 我们的 HuggingFace 模型,在 agentic traces 上训练。
- **Image compression** — 通过训练的 ML 路由器实现 40–90% 缩减。
- **CacheAligner** — 稳定前缀,使 Anthropic/OpenAI KV 缓存真正命中。
- **Live-zone compression** — 仅压缩新增字节(新鲜工具输出、最新轮次);冻结前缀保持字节级一致,避免破坏提供商缓存。历史记录永不丢弃。
- **CCR** — 可逆压缩;LLM 按需检索原始内容。
- **Cross-agent memory** — 共享存储、智能体溯源、自动去重。
- **SharedContext** — 跨多智能体工作流的压缩上下文传递。
- **`headroom learn`** — 面向 Claude、Codex、Gemini 的基于插件的失败挖掘。
</details>
<details>
<summary><b>流水线内部机制</b></summary>
Headroom 在 `compress()`、SDK 与代理之间暴露统一的请求生命周期:
`Setup``Pre-Start``Post-Start``Input Received``Input Cached``Input Routed``Input Compressed``Input Remembered``Pre-Send``Post-Send``Response Received`
- **Transforms** 负责实际工作:CacheAligner → ContentRouter → SmartCrusher / CodeCompressor / Kompress-base(仅 live-zoneIntelligentContext 与 RollingWindow 已在 PR-B1 中退役)。
- **Pipeline extensions** 通过 `on_pipeline_event(...)` 观察或自定义生命周期阶段。
- **Compression hooks** 与规范生命周期并行,作为额外的扩展接缝。
- **Proxy extensions** 仍是 ASGI 中间件、路由与启动策略的服务器/应用集成接缝。
提供商与工具特定行为位于 `headroom/providers/` 下,使核心编排专注于生命周期、顺序与策略。
- **CLI/tool slices**`headroom/providers/claude``copilot``codex``openclaw`
- **Provider runtime slices**`headroom/providers/claude``gemini`,以及 `headroom/providers/registry.py` 中的共享后端/运行时调度
- **Core files 保持编排优先**`wrap.py``client.py``cli/proxy.py``proxy/server.py` 委托提供商特定的环境塑造、API 目标规范化、后端选择与传输调度。
</details>
## 面向团队的 Headroom
Headroom OSS 面向**个人开发者**构建:在笔记本上运行 `headroom proxy``headroom wrap`,几分钟内即可开始削减 token — 免费、本地优先,数据永不离开你的机器。
在**整个工程组织**中运行则是另一回事:共享、始终在线的部署;集中化配置与版本发布;组织级节省仪表盘;SSO 与访问控制;气隙/VPC 安装;以及关键时刻有人可联系。这正是我们帮助企业完成的事 — 自托管加支持,或全托管。
**若你的团队在大额支出 LLM token** — Claude Code、Codex、Cursor,或 CI 中运行的智能体 — **且希望所有人都能享受这些节省,而非仅一台笔记本:**
→ 发送邮件至 **[hello@headroomlabs.ai](mailto:hello@headroomlabs.ai)**,附上你的技术栈与大致月度 LLM 支出,我们将帮助你在组织内推广 Headroom。
本仓库中的一切保持开源(Apache 2.0)。托管服务仅面向希望由我们部署、支持并扩展的团队。
## 安装
```bash
pip install "headroom-ai[all]" # Python, everything — includes the `headroom` CLI
npm install headroom-ai # TypeScript SDK (library only — no `headroom` CLI)
docker pull ghcr.io/chopratejas/headroom:latest
```
细粒度 extras`[proxy]``[mcp]``[ml]`Kompress-v2-base)、`[code]``[memory]``[vector]`(可选 HNSW 后端 — 需要 C++ 工具链,不在 `[all]` 中)、`[relevance]``[image]``[agno]``[langchain]``[evals]``[pytorch-mps]`Apple-GPU memory-embedder 卸载 — 设置 `HEADROOM_EMBEDDER_RUNTIME=pytorch_mps`)。需要 **Python 3.10+**
> **注意**:`[all]` 覆盖核心栈,但不包含框架适配器。请单独安装:`pip install "headroom-ai[langchain]"`(另有 `[agno]`、`[strands]`、`[anyllm]`、`[bedrock]`)。
使用 `pipx`?请显式选择受支持的解释器:
```bash
pipx install --python python3.13 "headroom-ai[all]"
```
> **若想看到美元节省,请选择 3.13。** 仪表盘的 *Proxy $ Saved* 磁贴使用 [LiteLLM](https://github.com/BerriAI/litellm), 为压缩定价,而 LiteLLM 无法在 Python 3.14+ 上安装。在 3.14 上仍可追踪 token 节省,但美元数字保持 `$0.00`。若你已在 3.14 上安装,请用 `pipx reinstall headroom-ai --python python3.13` 切换并重启代理。
→ [安装指南](https://headroom-docs.vercel.app/docs/installation) — Docker 标签、持久化服务、PowerShell、devcontainers。
> **CPU 要求(x86/x86_64):** ONNX 支持的功能 — Magika 内容检测与 embedding 相关性 — 使用需要 **AVX2** 的预编译 ONNX Runtime。在无 AVX2 的 x86 主机上(部分 Docker/QEMU 环境与较旧的云 VM),Headroom 会自动回退到非 ONNX 路径(BM25 相关性、启发式检测),而非崩溃。`arm64`/Apple Silicon 无需 AVX2。
### 更新
```bash
headroom update # detects pip / pipx / uv tool and upgrades in place
headroom update --check # report the latest release without upgrading
headroom update --pre # include pre-releases
```
`headroom update` 会判断 Headroom 的安装方式(pip/venv、`pip --user`、pipx、uv tool),并在 macOS、Linux 与 Windows 上执行匹配的升级。对于 git checkout、可编辑安装、Docker 镜像以及外部管理的系统 Python(PEP 668),它会打印正确的手动步骤,而非猜测。
代理还会在启动时显示一行「有可用更新」提示。它最多每天后台检查一次 PyPI,且从不阻塞。使用 `HEADROOM_UPDATE_CHECK=off` 可退出(在 `--stateless` 模式与 CI 中也会跳过)。
### 企业 / SSL 检查环境
`pip install "headroom-ai[all]"``CERTIFICATE_VERIFY_FAILED``unable to get local issuer certificate`)失败,说明你的网络使用 **SSL inspection** — 即 MITM 代理出示公司签发的 CA。构建后端(`maturin`)通过你的 TLS 栈不信任的连接下载 `rustup`。**请先安装 Rust**,以免构建时再拉取:
```bash
# macOS / Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && rustup default stable
# Windows
winget install Rustlang.Rustup && rustup default stable
```
重启 shell 后,再执行 `pip install "headroom-ai[all]"`。在可用时,预构建 wheel 可完全避免 Rust 构建:`pip install --only-binary headroom-ai headroom-ai`。预构建 wheel 面向 Windows`win_amd64`)、Linux`x86_64` / `aarch64`)与 macOSApple Silicon 与 Intel)发布,因此这些平台的安装永远不需要本地 Rust 工具链 — 上述「先装 Rust」流程仅适用于无匹配 wheel 时的平台无关 sdist 回退。
有两个运行时资源通过 TLS 拉取;若被阻断,请通过 `REQUESTS_CA_BUNDLE` / `SSL_CERT_FILE` / `CURL_CA_BUNDLE` 信任你的企业 CA
- **`cdn.pyke.io`** — Rust 核心的 ONNX Runtime。也可通过 `ORT_STRATEGY=system``ORT_LIB_LOCATION=/path/to/onnxruntime` 预先提供。
- **`huggingface.co`** — `kompress-base` 压缩模型。预先下载并用 `HF_HUB_OFFLINE=1` 运行,或设置 `HF_ENDPOINT` 指向可信镜像。
禁用压缩(纯网关)运行时无需上述任一资源。
#### 「Basic Constraints of CA cert not marked critical」(Python 3.13+ 严格模式)
这与上文是**另一种**失败情形。若 TLS 失败并出现:
```
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
Basic Constraints of CA cert not marked critical
```
则企业 CA *已被*找到并信任 — 将其加入 CA bundle 不会改变结果。Python 3.13 + OpenSSL 3.x 默认启用 `VERIFY_X509_STRICT`,它强制执行 RFC 5280 §4.2.1.9CA 证书的 `basicConstraints` 必须标记为 *critical*。Zscaler 等检查根证书将 `CA:TRUE` 设为无 critical 位,因此证书链被拒绝。
**`HEADROOM_TLS_STRICT=0`** 设置为仅从每个 TLS 上下文中清除*严格*标志
Headroom 控制项 — 代理的 httpx 上游客户端**以及**用于模型下载的 urllib3/`huggingface_hub`
路径。链验证、签名、过期和主机名检查均保持开启;这严格窄于禁用验证。
```bash
HEADROOM_TLS_STRICT=0 headroom proxy --port 8787
```
Rust 核心的 ONNX 下载(`cdn.pyke.io`)使用独立的 TLS 栈(rustls / 操作系统信任存储),不受 `HEADROOM_TLS_STRICT` 影响。在 Windows 上,企业根证书必须位于**机器**证书存储中(浏览器已在该处信任它);或使用 `ORT_STRATEGY=system` + `ORT_LIB_LOCATION=/path/to/onnxruntime` 预先配置 ONNX Runtime,以完全跳过下载。
## headroom learn
<p align="center">
<img src="headroom_learn.gif" alt="headroom learn 实际运行" width="720">
</p>
`headroom learn` — 挖掘失败会话,将修正写入 `CLAUDE.local.md`(默认,已被 git 忽略;团队共享文件请使用 `--target CLAUDE.md`/ `AGENTS.md` / `GEMINI.md`
## 文档
| 从这里开始 | 深入了解 |
|-------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
| [快速入门](https://headroom-docs.vercel.app/docs/quickstart) | [架构](https://headroom-docs.vercel.app/docs/architecture) |
| [代理](https://headroom-docs.vercel.app/docs/proxy) | [压缩原理](https://headroom-docs.vercel.app/docs/how-compression-works) |
| [MCP 工具](https://headroom-docs.vercel.app/docs/mcp) | [CCR — 可逆压缩](https://headroom-docs.vercel.app/docs/ccr) |
| [记忆](https://headroom-docs.vercel.app/docs/memory) | [缓存优化](https://headroom-docs.vercel.app/docs/cache-optimization) |
| [失败学习](https://headroom-docs.vercel.app/docs/failure-learning) | [基准测试](https://headroom-docs.vercel.app/docs/benchmarks) |
| [配置](https://headroom-docs.vercel.app/docs/configuration) | [局限性](https://headroom-docs.vercel.app/docs/limitations) |
| [持久化安装](https://headroom-docs.vercel.app/docs/persistent-installs) (`headroom init` / `headroom install apply`) | [节省分析](https://headroom-docs.vercel.app/docs/savings) (`headroom savings` / `headroom perf` / `headroom doctor`) |
## 对比
Headroom **在本地运行**,覆盖**所有**内容类型,兼容各大主流框架,且**可逆**。
| | 范围 | 部署 | 本地 | 可逆 |
|------------------------------------------------------------------------------|------------------------------------------------|------------------------------------|:-----:|:----------:|
| **Headroom** | 全部上下文 — 工具、RAG、日志、文件、历史记录 | 代理 · 库 · 中间件 · MCP | 是 | 是 |
| [RTK](https://github.com/rtk-ai/rtk) | CLI 命令输出 | CLI 包装器 | 是 | 否 |
| [lean-ctx](https://github.com/yvgude/lean-ctx) | 工具输出、文件、Shell、历史记录 | 代理 · 库 · 中间件 · MCP · CLI | 是 | 是 |
| [Compresr](https://compresr.ai), [Token Co.](https://thetokencompany.ai) | 发送至其 API 的文本 | 托管 API 调用 | 否 | 否 |
| OpenAI Compaction | 对话历史 | 提供商原生 | 否 | 否 |
> **致谢。** Headroom 内置了出色的 [RTK](https://github.com/rtk-ai/rtk) 二进制文件,用于 Shell 输出重写 — `git show --short`、作用域化的 `ls`、摘要化安装器。衷心感谢 RTK 团队;他们的工具是我们技术栈的一等公民,Headroom 会压缩其下游的一切内容。Headroom 也可将 [lean-ctx](https://github.com/yvgude/lean-ctx) 用作选定的 CLI 上下文工具;在运行 `headroom wrap ...` 之前设置 `HEADROOM_CONTEXT_TOOL=lean-ctx`。
## 贡献
```bash
git clone https://github.com/chopratejas/headroom.git && cd headroom
uv sync --extra dev && uv run pytest
```
`.devcontainer/` 中的 Devcontainers(默认 + 带 Qdrant 与 Neo4j 的 `memory-stack`)。参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 社区
- **[Discord](https://discord.gg/yRmaUNpsPJ)** — 提问、反馈与实战分享。
- **[Kompress-v2-base on HuggingFace](https://huggingface.co/chopratejas/kompress-v2-base)** — 我们文本压缩背后的模型。
## 许可证
Apache 2.0 — 参见 [LICENSE](LICENSE)。