Headroom — 核心架构与设计理念#
本章深入解析Headroom的中间层定位、拦截内容类型、工作原理和四种接入方式总览,帮助理解其"压缩层"设计的本质思想。
1. 中间层定位:Agent与LLM之间的"压缩滤网"#
Headroom的架构定位非常清晰——它不是一个独立的Agent,也不是LLM本身的一部分,而是夹在AI Agent和LLM之间的一个透明中间件。
┌─────────────────────────────────────────────────────────────────┐
│ AI Agent层 │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌──────────────────┐ │
│ │ 工具调用 │ │ 代码搜索 │ │ 文件读写 │ │ 对话历史/RAG检索 │ │
│ └────┬────┘ └────┬─────┘ └────┬────┘ └────────┬─────────┘ │
└───────┼────────────┼─────────────┼─────────────────┼─────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ Headroom 压缩中间层 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 内容路由器 → 算法选择器 → 压缩执行器 → 缓存存储 │ │
│ │ ↓(需要时) │ │
│ │ headroom_retrieve 按需取回 │ │
│ └──────────────────────────────────────────────────────────┘ │
└───────┬─────────────────────────────────────────────────────────┘
│ 压缩后的精简内容
▼
┌─────────────────────────────────────────────────────────────────┐
│ LLM层 │
│ GPT-4 / Claude / Codex / 其他模型 │
└─────────────────────────────────────────────────────────────────┘
设计思想:Harness Engineering范式#
Headroom的设计体现了**Harness Engineering(驾驭层工程)**的核心思想:
不改变模型本身:不微调、不修改LLM权重,通过外部工程手段提升效率
透明拦截:对Agent和LLM双方都是透明的,Agent不需要感知压缩过程,LLM收到的仍是标准格式消息
分层处理:不同类型内容采用不同策略,而非"一刀切"
本地优先:所有数据留在本地,隐私可控
2. 拦截的内容类型#
Headroom拦截所有送入LLM的内容,覆盖AI Agent工作流中的全量信息流:
内容类型 |
典型来源 |
冗余特征 |
压缩潜力 |
|---|---|---|---|
工具输出 |
grep/find/cat等命令结果、API返回值 |
大量重复结构、无关信息多 |
⭐⭐⭐⭐⭐ 极高 |
命令行结果 |
终端stdout/stderr、构建日志、测试输出 |
大量INFO日志、堆栈重复 |
⭐⭐⭐⭐⭐ 极高 |
代码搜索结果 |
ripgrep/ack搜索、代码引用列表 |
大量匹配行中只有少数相关 |
⭐⭐⭐⭐ 高 |
RAG检索片段 |
向量检索返回的文档块 |
检索到的top-k中存在冗余片段 |
⭐⭐⭐ 中 |
文件内容 |
读取的源代码、配置文件 |
导入部分、注释、空行有压缩空间 |
⭐⭐ 中低 |
对话历史 |
多轮对话记录 |
早期对话信息密度降低 |
⭐⭐⭐ 中 |
关键洞察:代码搜索和SRE日志排查是压缩效果最显著的场景——这些场景下信息密度极低,100行中往往只有3-5行有用信息。
3. 工作原理#
Headroom的压缩工作流可以分为四个阶段:
阶段1:内容路由(Content Routing)#
输入内容 → MIME类型检测 → 格式识别(JSON/代码/日志/自然语言) → 路由到对应算法
这是Headroom区别于"一刀切"压缩方案的关键第一步。不同内容类型的信息结构完全不同:
JSON有固定的键值结构,可以做统计式压缩
代码有语法树结构,可以保留签名删除函数体
自然语言有语义冗余,可以用专用小模型压缩
阶段2:算法压缩(Compression)#
根据路由结果选择对应的压缩算法执行压缩,详见02章。
阶段3:缓存存储(Cache)#
原始内容:完整存入本地SQLite数据库,永不删除
压缩内容:送入LLM
元数据:记录压缩比、内容指纹、时间戳等,用于检索和统计
阶段4:按需检索(Retrieve,可选)#
如果LLM在后续对话中发现压缩后的信息不足以回答问题,可以调用headroom_retrieve工具:
LLM判断信息不足 → 调用headroom_retrieve(查询条件) → 从本地缓存取回原文 → 继续推理
4. 四种接入方式总览#
Headroom提供了四种灵活的接入方式,覆盖从"零代码快速体验"到"深度定制集成"的全部场景:
接入方式 |
改动成本 |
适用场景 |
一句话说明 |
|---|---|---|---|
① Library |
低(几行代码) |
自建AI应用 |
Python/TS中直接调用 |
② Proxy |
零(无代码改动) |
现有OpenAI兼容客户端 |
起本地代理,改base_url即可 |
③ Agent Wrap |
零(一条命令) |
Claude Code/Codex/Cursor用户 |
|
④ MCP Server |
低(配置MCP) |
MCP原生客户端 |
注册三个工具,MCP客户端自动识别 |
接入方式对比#
维度 |
Library |
Proxy |
Agent Wrap |
MCP Server |
|---|---|---|---|---|
代码改动 |
需要 |
不需要 |
不需要 |
不需要(配置MCP) |
灵活性 |
最高 |
中 |
低 |
中高 |
适用范围 |
自建应用 |
任何OpenAI客户端 |
主流编程Agent |
MCP兼容客户端 |
可控性 |
完全控制 |
配置控制 |
命令行参数 |
工具调用控制 |
上手难度 |
需要写代码 |
改一行配置 |
一条命令 |
配置MCP |
💡 选型建议:如果你是Claude Code/Codex等编程Agent的用户,直接用Agent Wrap最快;如果你在开发自己的AI应用,用Library最灵活;如果你已有OpenAI兼容客户端想快速试效果,用Proxy零成本接入。
5. 设计理念总结#
Headroom的架构设计体现了三个核心工程思想:
思想1:分层透明中间件#
不侵入Agent内部,也不修改LLM,通过拦截模式(Interceptor Pattern)在通信链路上增加处理层。这是经典的中间件设计模式,在Web开发(Nginx/Envoy)、数据库(ProxySQL)等领域早已成熟验证。
思想2:内容感知,对症下药#
拒绝"一个算法打天下",而是先分类再处理。这与计算机网络中的协议分层、编译器中的多阶段优化有异曲同工之妙——不同层次、不同类型的问题需要不同的解决方案。
思想3:可逆设计,留有余地#
压缩不是信息丢弃,而是"冷热分离"——热数据(压缩版)常驻上下文,冷数据(原文)存在本地随时可取。这是Headroom最聪明的设计,也是区别于所有其他压缩方案的核心差异点。
← 上一章:概述