内容
<div align="center"><pre>
███████╗ ██╗ ██╗ ██████╗ ██╗
██╔════╝ ██║ ██║ ██╔══██╗ ██║
█████╗ ██║ ██║ ██████╔╝ ██║
██╔══╝ ██║ ██║ ██╔══██╗ ██║
██║ ╚██████╔╝ ██║ ██║ ███████╗
╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝
人工智能代理的上下文压缩层
<img src="typing.svg" width="42" />
</pre></div>
<p align="center"><strong>在冗余工作负载上减少 60–95% 的 tokens · Claude Code 插件 · 本地优先 · 可逆</strong></p>
<p align="center">
<a href="https://github.com/omar-y-abdi/furl/releases/latest"><img src="https://img.shields.io/github/v/release/omar-y-abdi/furl?sort=semver&color=blue" alt="发布版本"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="许可证:Apache 2.0"></a>
</p>
<p align="center">
<a href="#安装">安装</a> ·
<a href="#证明">证明</a> ·
<a href="LIBRARY.md">库</a> ·
<a href="https://discord.gg/yRmaUNpsPJ">Discord</a>
</p>
---
Furl 在 Claude Code 代理读取所有内容之前进行压缩 — 工具输出、日志、网页抓取、RAG 数据块 — 然后才将其传递给模型。相同的答案,只需少量的 tokens。每个被丢弃的字节都可在需要时检索。
<p align="center">
<img src="FurlDemo-Fast.gif" alt="Furl 工作中" width="820">
</p>
## 安装
在 Claude Code 中执行两个命令:
```
/plugin marketplace add omar-y-abdi/furl
/plugin install furl@furl
```
就这样 — 这安装了压缩钩子、MCP 工具和技能。无需 `pip install`,无需设置:Furl 在首次使用时自动获取。需要 [`uv`](https://docs.astral.sh/uv/) 位于您的 PATH 中(与官方 [serena](https://github.com/oraios/serena) 插件相同)。
**您将获得**
- **自动压缩钩子** — 在大型 `Bash` / `WebFetch` / `WebSearch` / `Task` 输出进入上下文之前缩小它们。失败开启:永远不会破坏工具调用。
- **信号感知卸载 + 可切片检索** — 对于太大而无法内联压缩的有效载荷(例如 33 MB 跟踪),返回结构化摘要(模式、每字段值直方图、示例行)而不是截断的头部/尾部,代理按需拉取窄切片 — `retrieve(hash, select_field="name", select_equals="DroppedFrame")` 或数字范围 — 而无需实现整个内容。
- **MCP 工具** — `furl_compress`、`furl_retrieve`、`furl_stats`、`furl_purge`(擦除存储的原始数据)、`furl_search`(按内容子字符串查找)、`furl_list`(列出存储的条目)。第七个工具 `furl_read` 存在但默认关闭 — 启用它需要设置 `FURL_MCP_READ=1`。
- **技能** — 解释 `<<ccr:HASH>>` 检索流程以及如何调整或禁用它。
调整、禁用(`FURL_HOOK_ENABLED=0`)和完整参考:[`plugins/furl/README.md`](plugins/furl/README.md).
## 证明
在真实捕获的数据上减少 tokens — 可重复,输入数据已提交到 `benchmarks/data/` 下。每个数字都使用引擎自己的分词器;针头召回率为 100%(已知唯一行始终可恢复,在输出中或通过 CCR):
| 数据集 | 项目 | 之前 | 之后 | 减少 | 信息保留 |
|---------------|------:|-------:|-------:|----------:|---------------:|
| 代码 | 7 | 41,025 | 471 | 99% | 100% |
| 多轮对话 | 135 | 14,866 | 2,073 | 86% | 100% |
| 日志 | 90 | 8,595 | 619 | 93% | 100% |
| 搜索 | 90 | 4,102 | 318 | 92% | 100% |
| 重复日志 | 90 | 3,621 | 120 | 97% | 100% |
| 磁盘 | 9 | 694 | 279 | 60% | 100% |
在整个语料库中:**95% 的 tokens 减少**(72,903 → 3,880),信息保留率为 100%。完整方法和 6 次对抗性扫描:[BENCHMARKS.md](BENCHMARKS.md).
`代码` 行的 99% 是大型非文件读取工具输出的 CCR 卸载(例如 `Bash` 转储源文本);代理自己的 `Read`/`Grep`/`Glob` 文件访问绕过压缩钩子,设计上保持不变,压缩率为 0%。
## 也是一个 Python 库
相同的引擎可以应用于任何 Python 应用程序或 MCP 主机:`from furl_ctx import compress`。安装、使用、管道内部、提示缓存合约和完整的 `FURL_*` 配置参考位于 [LIBRARY.md](LIBRARY.md).
## 许可证
Apache 2.0 — 请参阅 [LICENSE](LICENSE).