FlechetteLabs/Tollbooth
GitHub: FlechetteLabs/Tollbooth
这是一个透明代理系统,专为 LLM 智能体设计,用于检查和修改网络流量以支持研究和调试。
Stars: 16 | Forks: 1
# 收费站
一个用于检查、调试和修改网络流量的透明代理——专为LLM智能体研究设计,但适用于任何HTTP/HTTPS流量。
兼容 **Claude Code**、**Codex CLI**、**Cursor**、**Aider** 以及任何进行网络请求的工具。
## 功能说明
收费站是一个中间人代理,能够捕获来自智能体容器的**所有网络流量**。虽然它最初是为监控LLM智能体通信而构建(能自动将API调用解析为对话),但它会拦截一切——包括智能体调用的工具请求、包管理器以及其他任何网络活动。适用于智能体研究、安全测试和网络调试。
- **检查所有流量** - 查看每一个HTTP请求。LLM API调用会被解析为可读的对话;其他流量则以原始形式显示。
- **对话树** - 以gitflow风格的树状视图可视化分支对话。来自重试、重放和自然分歧的分支会显示出来,并在路径重新汇聚处使用合并连接器。
- **修改请求** - 在请求到达目标之前拦截并编辑任何请求。可将项目标记为超时免疫,以便进行长时间检查。
- **模拟响应** - 用存储的响应代替转发请求来提供服务。
- **规则引擎** - 基于优先级的规则实现自动化流量处理,包含静态修改、丢弃操作,以及在修改不适用时智能跳过。
- **导出对话** - 将对话导出为JSON、Markdown或样式化的HTML格式。
- **检测拒绝** - 基于机器学习的LLM拒绝检测,并自动处理。
## 快速开始
```
# 1. 生成证书
./setup-certs.sh
# 2. 启动服务
docker compose up
# 3. 打开用户界面
open http://localhost:5173
# 4. 通过代理运行您的代理
docker compose run --rm agent
```
## 架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ LLM Agent │────▶│ Proxy │────▶│ LLM API │
│ (Claude Code, │ │ (mitmproxy) │ │ (Anthropic, │
│ Cursor, etc.) │◀────│ │◀────│ OpenAI, etc.) │
└─────────────────┘ └────────┬────────┘ └─────────────────┘
│
│ WebSocket
▼
┌─────────────────┐
│ Backend │
│ (Node.js) │
└────────┬────────┘
│
│ WebSocket
▼
┌─────────────────┐
│ Frontend │
│ (React) │
└─────────────────┘
```
## 文档
完整文档可在 **[flechettelabs.com/tollbooth](https://flechettelabs.com/tollbooth)** 找到:
- [快速入门](https://flechettelabs.com/tollbooth/getting-started/) - 前置条件和设置
- [功能特性](https://flechettelabs.com/tollbooth/features/traffic-view/) - 流量视图、对话、树状视图、拦截、规则等
- [配置说明](https://flechettelabs.com/tollbooth/configuration/agent-container/) - 智能体容器、手动设置、环境变量
- [API 参考](https://flechettelabs.com/tollbooth/api-reference/) - REST API 端点
- [安全事项](https://flechettelabs.com/tollbooth/security/) - 重要的安全考虑因素
## 安全声明
本工具**仅用于研究和开发目的**。有关重要信息,请参阅[安全事项](https://flechettelabs.com/tollbooth/security/)文档:
- CA证书作用范围(仅限智能体容器)
- 数据持久性(流量会写入磁盘)
- API密钥存储
## 与 Glossopetrae 集成(可选)
收费站可选择与[Glossopetrae](https://github.com/elder-plinius/GLOSSOPETRAE)集成,这是一个用于解码智能体通信中构造语言文本的程序化外星语言学引擎。
```
# 5. 构建时启用 Glossopetrae
ENABLE_GLOSSOPETRAE=true docker compose build
# 6. 启动时启用 Glossopetrae
ENABLE_GLOSSOPETRAE=true docker compose up
```
启用后:
- 对话和流量视图中会出现解码按钮
- 在设置 → Glossopetrae 中配置语言种子
- 双向翻译(在拦截时解码构造语言→英语,编码英语→构造语言)
## 未来改进
- **基于内容的消息比对**:当前的对话比较视图使用基于索引的比较(消息0 vs 消息0,等等)。一种更复杂的内容匹配方法可以通过比较消息内容(而非位置)来检测插入、删除和移动。
- **Glossopetrae 隐写术检测**:Glossopetrae 支持在看起来普通的构造语言文本中隐藏秘密负载。未来的“显示隐藏内容”功能可以检测并提取隐写内容。
- **Glossopetrae 后端搜索/过滤**:支持通过解码后的内容搜索和过滤流量(需要后端集成)。
- **Glossopetrae 规则匹配**:允许规则基于解码后的内容进行匹配,以自动化处理构造语言流量。
## 许可证
AGPL-3.0 - 详见 [LICENSE](LICENSE)。
标签:API监控, Docker, HTTPS代理, HTTP代理, IP 地址批量处理, LLM代理, MITM代理, SOC Prime, TCP/UDP协议, 中间人代理, 云计算, 代理技术, 前端UI, 安全测试, 安全防御评估, 对话可视化, 开发工具, 拒绝检测, 攻击性安全, 数据导出, 流量修改, 流量检查, 编码代理, 网络安全, 网络调试, 自动化, 自动化攻击, 规则引擎, 请求拦截, 请求模拟, 隐私保护